国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 課堂 > 電腦知識(shí) > 正文

系統(tǒng)調(diào)用如何實(shí)現(xiàn)

2024-05-08 14:52:34
字體:
供稿:網(wǎng)友

  系統(tǒng)調(diào)用的實(shí)現(xiàn)與一般過程調(diào)用的實(shí)現(xiàn)相比,兩者間有很大差異。對(duì)于系統(tǒng)調(diào)用,控制是由原來的用戶態(tài)轉(zhuǎn)換為系統(tǒng)態(tài),這是借助于中斷和陷入機(jī)制來完成的,在該機(jī)制中包括中斷和陷入硬件機(jī)構(gòu)及中斷與陷入處理程序兩部分。

  中斷和陷入硬件機(jī)構(gòu)

  圖1所示為中斷的處理過程。中斷可進(jìn)一步分為外中斷和內(nèi)中斷。外中斷是指由于外部設(shè)備事件所引起的中斷,如通常的磁盤中斷、打印機(jī)中斷等;而內(nèi)中斷則是指由于CPU內(nèi)部事件所引起的中斷,如程序出錯(cuò)(非法指令、地址越界)等。內(nèi)中斷(trap)也被譯為“陷入”或“陷阱”。

系統(tǒng)調(diào)用如何實(shí)現(xiàn) CUOxin.COM

  通常,陷入是由于執(zhí)行了現(xiàn)行指令引起的,而中斷則是由于系統(tǒng)中某事件引起的,該事件與現(xiàn)行指令無(wú)關(guān)。為了處理上的方便,通常針對(duì)不同的設(shè)備編制不同的中斷處理程序,并把該程序的入口地址放在某特定的內(nèi)存單元中。此外,不同的設(shè)備也對(duì)應(yīng)著不冋的處理機(jī)狀態(tài)字PSW,且把它放在與中斷處理程序入口指針相鄰接的特定單元中。在進(jìn)行中斷處理時(shí),只要有了這樣兩個(gè)字,便可轉(zhuǎn)入相應(yīng)設(shè)備的中斷處理程序,重新裝配處理機(jī)的狀態(tài)字和優(yōu)先級(jí),進(jìn)行對(duì)該設(shè)備的處理,因此這兩個(gè)字被稱為中斷向量。相應(yīng)地,把存放這兩個(gè)字的單元稱為中斷向景單元。類似地,對(duì)于陷入也有陷入向量表。由所有的中斷向景和陷入向景構(gòu)成了中斷和陷入向量表。

  系統(tǒng)調(diào)用號(hào)和參數(shù)的設(shè)置

  通常,一個(gè)系統(tǒng)中設(shè)置了幾十條甚至上百條系統(tǒng)調(diào)用,系統(tǒng)賦予每條系統(tǒng)調(diào)用一個(gè)唯一的系統(tǒng)凋用號(hào)。在有的系統(tǒng)中,直接把系統(tǒng)凋用號(hào)放在系統(tǒng)凋用命令中,如IBM370和早期的UNIX系統(tǒng),是用系統(tǒng)調(diào)用命令的低8位存放系統(tǒng)調(diào)用號(hào);在另一些系統(tǒng)中,則將系統(tǒng)調(diào)用號(hào)裝入某指定寄存器或內(nèi)存單元中,如MS-DOS是將系統(tǒng)調(diào)用號(hào)放在AH寄存器中。每一條系統(tǒng)調(diào)用都含有若干個(gè)參數(shù),在執(zhí)行系統(tǒng)調(diào)用時(shí),設(shè)置系統(tǒng)調(diào)用所需的系數(shù)通常有兩種方式。

  (1)直接將參數(shù)送入相應(yīng)的寄存器中。這是一種最簡(jiǎn)單的方式,MS-DOS采用的便是這種方式,即用MOV指令將各個(gè)參數(shù)送入相應(yīng)的寄存器中。這種方式的主要問題是由于寄存器數(shù)量有限,因而限制了所設(shè)置參數(shù)的數(shù)目。

  (2)參數(shù)表方式。將系統(tǒng)調(diào)用所需的參數(shù)放入一張參數(shù)表中,再將指向該參數(shù)表的指針放在某個(gè)指定的寄存器中。在當(dāng)前大多數(shù)的OS中,如UNIX系統(tǒng),便是采用了這種方式。該方式又可進(jìn)一步分成直接和間接兩種方式,如圖2所示。在直接參數(shù)方式中,將所有的參數(shù)值和參數(shù)的個(gè)數(shù)N都放入一張參數(shù)表中;而在間接參數(shù)方式中,則在參數(shù)表中僅存放參數(shù)個(gè)數(shù)和指向真正參數(shù)數(shù)據(jù)表的指針。

系統(tǒng)調(diào)用的實(shí)現(xiàn)

  系統(tǒng)調(diào)用的處理步驟

  在設(shè)置了系統(tǒng)凋用號(hào)和參數(shù)后,便可執(zhí)行一條系統(tǒng)凋用命令。不同的系統(tǒng)可采用不同的執(zhí)行方式。在UNIX系統(tǒng)中,是執(zhí)行CHMK命令;而在MS-DOS中則是執(zhí)行INT21軟中斷。

  系統(tǒng)調(diào)用的處理過程可分成以下3步。

  (1)將處理機(jī)狀態(tài)由用戶態(tài)轉(zhuǎn)為系統(tǒng)態(tài);之后,由硬件和內(nèi)核程序進(jìn)行系統(tǒng)調(diào)用的一般性處理,即首先保護(hù)被中斷進(jìn)程的CPU環(huán)境,將處理機(jī)狀態(tài)字PSW、程序計(jì)數(shù)器PC、系統(tǒng)調(diào)用號(hào)、用戶找指針以及通用寄存器內(nèi)容等壓入堆棧;然后,將用戶定義的參數(shù)傳送到指定的地方保存起來。

  (2)分析系統(tǒng)調(diào)用類型,轉(zhuǎn)入相應(yīng)的系統(tǒng)調(diào)用處理子程序。為使不同的系統(tǒng)調(diào)用能方便地轉(zhuǎn)向相應(yīng)的系統(tǒng)調(diào)用處理子程序,在系統(tǒng)中配置了一張系統(tǒng)調(diào)用入口表。表中的每個(gè)表目都對(duì)應(yīng)一條系統(tǒng)調(diào)用,其中包含該系統(tǒng)調(diào)用自帶參數(shù)的數(shù)目、系統(tǒng)調(diào)用處理子程序的入口地址等。內(nèi)核可利用系統(tǒng)調(diào)用號(hào)去查找該表,即可找到相應(yīng)處理子程序的入口地址而轉(zhuǎn)去執(zhí)行它。

  (3)在系統(tǒng)調(diào)用處理子程序執(zhí)行完后,恢復(fù)被中斷的或設(shè)置新進(jìn)程的CPU現(xiàn)場(chǎng),然后返冋被中斷進(jìn)程或新進(jìn)程,繼續(xù)往下執(zhí)行。

  系統(tǒng)調(diào)用處理子程序的處理過程

  系統(tǒng)調(diào)用的功能主要是由系統(tǒng)調(diào)用子程序來完成的。對(duì)于不同的系統(tǒng)調(diào)用,其處理程序?qū)?zhí)行不同的功能。

  下面以一條在文件操作中常用的creat命令為例來說明處理子程序的處理過程。進(jìn)入creat的處理子程序后,內(nèi)核將根據(jù)用戶給定的文件路徑名Path,利用目錄檢索過程,去查找指定義件的目錄項(xiàng)。查找目錄的方式可以用順序查找法,也可用Hash查找法。如果在文件目錄中找到了指定文件的目錄項(xiàng),表示用戶要利用一個(gè)已有文件來建立一個(gè)新文件。但如果在該巳有(存)文件的屬性中有不允許寫屬性,或者創(chuàng)建者不具有對(duì)該文件進(jìn)行修改的權(quán)限,便認(rèn)為是出錯(cuò),隨即做出錯(cuò)處理;若不存在訪問權(quán)限問題,便將巳存文件的數(shù)據(jù)盤塊釋放掉,準(zhǔn)備寫入新的數(shù)據(jù)文件。如未找到指名文件,則表示要?jiǎng)?chuàng)建一個(gè)新文件,內(nèi)核便從其目錄文件中找出一個(gè)空目錄項(xiàng),并初始化該目錄項(xiàng),包括填寫文件名、文件屬性、文件建立日期等,然后將新建文件打開。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阜新| 武冈市| 闵行区| 平原县| 巴南区| 临猗县| 湖南省| 江北区| 雅安市| 灵寿县| 隆安县| 五大连池市| 沾化县| 阿瓦提县| 黑龙江省| 佛山市| 岳阳县| 玉山县| 桑植县| 凤台县| 湟源县| 丹凤县| 盐源县| 阳东县| 五大连池市| 新干县| 青岛市| 德保县| 津南区| 澄迈县| 赞皇县| 龙海市| 商洛市| 灌南县| 双牌县| 荆州市| 通州市| 淳化县| 水城县| 鲁甸县| 洞口县|