第三章-用戶界面-操作系統(tǒng)原理課件_第1頁
第三章-用戶界面-操作系統(tǒng)原理課件_第2頁
第三章-用戶界面-操作系統(tǒng)原理課件_第3頁
第三章-用戶界面-操作系統(tǒng)原理課件_第4頁
第三章-用戶界面-操作系統(tǒng)原理課件_第5頁
已閱讀5頁,還剩101頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第三章用戶界面

(一)用戶工作環(huán)境(二)運行一個用戶程序的過程(三)操作系統(tǒng)的用戶界面(四)系統(tǒng)功能調(diào)用(五)Linux系統(tǒng)功能調(diào)用的實現(xiàn)1第三章用戶界面(一)用戶工作環(huán)境1(一)用戶工作環(huán)境一.用戶工作環(huán)境的形成

1.系統(tǒng)要提供各種硬件、軟件資源

2.設(shè)計合理的操作命令3.形成一個可供使用的工作環(huán)境將操作系統(tǒng)裝入計算機并初始化。

1(一)用戶工作環(huán)境一.用戶工作環(huán)境的形成121.系統(tǒng)引導(dǎo)的任務(wù)系統(tǒng)引導(dǎo)又叫系統(tǒng)初啟。其任務(wù)是把操作系統(tǒng)的必要部分裝入主存并使系統(tǒng)進行初始化工作,最終處于命令接收狀態(tài)。

二.操作系統(tǒng)的引導(dǎo)

11.系統(tǒng)引導(dǎo)的任務(wù)二.操作系統(tǒng)的引導(dǎo)32.系統(tǒng)引導(dǎo)的方式

(1)獨立引導(dǎo)方式(滾雪球方式)

OS核心文件存儲在系統(tǒng)本身的存儲設(shè)備中由系統(tǒng)自己將OS核心程序讀入內(nèi)存并運行最后建立一個操作環(huán)境適用于微機和大多數(shù)系統(tǒng)。操作系統(tǒng)的引導(dǎo)有兩種方式:獨立引導(dǎo)(bootup)

輔助下裝(download)12.系統(tǒng)引導(dǎo)的方式(1)獨立引導(dǎo)方式(滾雪球方式)4(2)輔助下裝方式優(yōu)點可以節(jié)省較大的存儲空間,下裝的OS并非是全部代碼,只是常駐部分或者專用部分,當這部分OS出現(xiàn)問題和故障時,可以再請求下裝。適用于多計算機系統(tǒng)、由主控機與前端機構(gòu)成的系統(tǒng)以及分布式系統(tǒng)。

OS主要文件不放在系統(tǒng)本身的存儲設(shè)備中,而是在系統(tǒng)啟動后,執(zhí)行下裝操作,從另外的計算機系統(tǒng)中將操作系統(tǒng)常駐部分傳送到該計算機中,使它形成一個操作環(huán)境。1(2)輔助下裝方式優(yōu)點53.獨立引導(dǎo)方式(滾雪球方式)的過程

(1)初始引導(dǎo)

系統(tǒng)加電;

執(zhí)行初始引導(dǎo)程序,對系統(tǒng)硬件和配置進行自檢,保證系統(tǒng)沒有硬件錯誤;

從硬盤中讀入操作系統(tǒng)引導(dǎo)程序,并將控制權(quán)交給該程序模塊。(2)引導(dǎo)程序執(zhí)行引導(dǎo)程序執(zhí)行,將操作系統(tǒng)核心文件讀入內(nèi)存,并將控制交給核心的初始化程序。

13.獨立引導(dǎo)方式(滾雪球方式)的過程(1)初始引導(dǎo)(6(3)核心初始化初始化系統(tǒng)數(shù)據(jù)結(jié)構(gòu)及參數(shù):

建立進程有關(guān)的數(shù)據(jù)結(jié)構(gòu)

獲得自由存儲空間的容量,建立存儲管理的數(shù)據(jù)結(jié)構(gòu)

建立系統(tǒng)設(shè)備和文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)

初始化時鐘

(4)系統(tǒng)初始化

完善OS的操作環(huán)境,裝載命令處理程序(或圖形用戶界面),并初始化;

在多用戶系統(tǒng)中,為每個終端建立命令解釋進程,使系統(tǒng)處于命令接收狀態(tài)。1(3)核心初始化(4)系統(tǒng)初始化174.實例操作系統(tǒng)的引導(dǎo)過程

(1)MS-DOS啟動BIOS的初始引導(dǎo)程序,讀入系統(tǒng)盤中的引導(dǎo)程序由引導(dǎo)程序讀入操作系統(tǒng)核心程序IO.SYS(I/O初始化)DOS.SYS(文件系統(tǒng),簡單內(nèi)存初始化)COMMAND.COM(簡單任務(wù)管理)進入命令提符狀態(tài)C:\>14.實例操作系統(tǒng)的引導(dǎo)過程

(1)MS-DOS啟動8(2)WINDOWS系統(tǒng)的引導(dǎo)打開機器電源ROM中引導(dǎo)程序運行,裝入系統(tǒng)盤中的主引導(dǎo)程序主引導(dǎo)塊程序執(zhí)行,讀入操作系統(tǒng)核心程序系統(tǒng)初始化的工作:包括系統(tǒng)資源初始狀態(tài)的設(shè)置、系統(tǒng)主要數(shù)據(jù)結(jié)構(gòu)初始化、引導(dǎo)圖形用戶界面程序圖形用戶界面運行,生成用戶的圖形用戶界面,系統(tǒng)初啟工作完成1(2)WINDOWS系統(tǒng)的引導(dǎo)打開機器電源19(3)UNIX系統(tǒng)初啟UNIX操作系統(tǒng)執(zhí)行代碼裝入內(nèi)存存儲空間及其管理機構(gòu)初始化與設(shè)備有關(guān)的初始化與文件系統(tǒng)有關(guān)的初始化創(chuàng)建0#和1#進程1#進程創(chuàng)建各終端進程終端進程運行shell各用戶終端上出現(xiàn)login1(3)UNIX系統(tǒng)初啟UNIX操作系統(tǒng)執(zhí)行代碼裝入內(nèi)10(4)Linux系統(tǒng)初啟Linux系統(tǒng)是以滾雪球的方式啟動的:加電或復(fù)位——﹥BIOS的啟動(bootsect.s)——﹥BootLoader——﹥OS初始化(引導(dǎo)程序)①系統(tǒng)加電或復(fù)位對內(nèi)存中所有的數(shù)據(jù)清零,對內(nèi)存進行校驗,若無錯,CS:IP——﹥BIOS入口。1(4)Linux系統(tǒng)初啟Linux系統(tǒng)是以滾雪球的方式11②BIOS啟動在ROM中的引導(dǎo)程序放在固定位置:FFFF:0000CPU從這里開始執(zhí)行。上電自檢;對硬件設(shè)備進行檢測和連接,并將測得的數(shù)據(jù)——﹥BIOS數(shù)據(jù)區(qū)。從盤中讀入BootLoader(引導(dǎo)程序)從硬盤啟動時,讀入零柱面零磁道1扇區(qū)MBR(MasterBootRecord),將控制權(quán)交BootLoader1②BIOS啟動112③

BootLoader(引導(dǎo)程序)

功能:將OS讀入內(nèi)存,并將控制權(quán)交給OS的初始化程序。LILOLILO是一個在Linux環(huán)境下編寫的引導(dǎo)程序。它可以引導(dǎo)Linux;也可以引導(dǎo)其他操作系統(tǒng),如Windows。它可以作為Linux分區(qū)的引導(dǎo)扇區(qū)內(nèi)的啟動程序;也可以放在MBR中完全控制BootLoader的全過程。主要功能:將Linux內(nèi)核(或其他操作系統(tǒng)分區(qū))讀入內(nèi)存提供一個命令行接口,可由用戶選擇OS。1③BootLoader(引導(dǎo)程序)113④

系統(tǒng)核心初始化(Setup.s)

Setup的工作a.檢查調(diào)入內(nèi)存中的代碼;b.獲取內(nèi)存容量信息,設(shè)置設(shè)備模式;c.屏蔽中斷,準備進入保護模式;d.設(shè)置中斷描述符表(idt),全局描述符表(gdt)控制權(quán)交給Head.sHead.s的工作a.對中斷向量表作準備工作;b.檢查CPU類型;c.調(diào)用Setup_paging進行頁面初始化;d.調(diào)用main.c中的Start_kernel()1④系統(tǒng)核心初始化(Setup.s)114Start_kernel的工作a.對與CPU、內(nèi)存等最基本硬件相關(guān)部分進行初始化;b.對中斷向量表進行初始化;c.為進程調(diào)度程序作準備;d.設(shè)置基準時鐘;e.內(nèi)核的內(nèi)存分配;f.對文件系統(tǒng)進行初始化;g.建立init進程。init進程對每一個聯(lián)機終端建立“getty”進程getty在終端上顯示“l(fā)ogin”,等待用戶登錄。1Start_kernel的工作115

5.系統(tǒng)生成系統(tǒng)生成就是操作系統(tǒng)的生成過程

(1)什么是系統(tǒng)生成所謂系統(tǒng)生成,就是指為了滿足物理設(shè)備的約束和需要的系統(tǒng)功能,通過組裝一批模塊來產(chǎn)生一個清晰的、使用方便的操作系統(tǒng)的過程。

(2)系統(tǒng)生成的內(nèi)容根據(jù)硬件部件確定系統(tǒng)構(gòu)造的參數(shù),編輯系統(tǒng)模塊的參數(shù),并且連接系統(tǒng)模塊成為一個可執(zhí)行的程序。15.系統(tǒng)生成(1)什么是系統(tǒng)生成(2)16(二)運行一個用戶程序的過程一.作業(yè)與作業(yè)步

1.作業(yè)計算機系統(tǒng)按指定步驟對初始數(shù)據(jù)進行處理并得到計算結(jié)果的加工工作。

2.作業(yè)步加工工作中的一個步驟稱為作業(yè)步。17(二)運行一個用戶程序的過程一.作業(yè)與作業(yè)步17

3.作業(yè)處理步驟

(1)編輯建立一個新文件,或?qū)σ延械奈募械腻e誤進行修改。

(2)編譯將源程序翻譯成浮動的目標代碼。

(3)連接主程序和其他所需要的子程序和例行程序連接裝配在一起,使之成為一個可執(zhí)行的、完整的主存映像文件。

(4)運行將主存映像文件調(diào)入主存,并啟動運行,最后得出計算結(jié)果。183.作業(yè)處理步驟184.作業(yè)步之間的關(guān)系user.cuser.objuser.exe編輯—編譯—連接—運行

第一個第二個第三個第四個作業(yè)步作業(yè)步作業(yè)步作業(yè)步

每個作業(yè)步運行的結(jié)果產(chǎn)生下一個作業(yè)步所需要的文件;一個作業(yè)步能否正確地執(zhí)行,依賴于前一個作業(yè)步是否成功地完成。14.作業(yè)步之間的關(guān)系1195.連接類型(1)靜態(tài)連接一個源程序經(jīng)編譯后,生成一個可重定位的目標模塊,并產(chǎn)生內(nèi)部符號表和外部符號表,供連接程序(Link)使用。內(nèi)部符號表:本模塊可以被其他程序調(diào)用的入口點;外部符號表:本模塊要調(diào)用的外部的程序模塊名。15.連接類型120

連接時完成的工作①將各模塊連接成為一個整體;②構(gòu)造全程符號表,在其中填寫模塊的邏輯地址;③查找個程序段的外部調(diào)用表,填入對應(yīng)調(diào)用函數(shù)的地址。靜態(tài)連接的缺點靜態(tài)連接將所需的外部函數(shù)鏈接到目標文件中形成為一個可執(zhí)行文件。若多個應(yīng)用程序都調(diào)用了同一個庫中的外部函數(shù),那么,應(yīng)用程序的目標文件中都包含了這個外部函數(shù)對應(yīng)的代碼。1連接時完成的工作121

(2)動態(tài)連接動態(tài)連接不需要將外部函數(shù)鏈接到目標文件中。而是在應(yīng)用程序中需要調(diào)用外部函數(shù)的地方作記錄,并說明要使用的外部函數(shù)名和引用入口號。————形成函數(shù)調(diào)用鏈表所需支持——DLL(動態(tài)連接庫)當Windows的裝載程序?qū)?yīng)用程序和DLL裝入內(nèi)存后,裝載程序會遍歷形成函數(shù)調(diào)用鏈表,將DLL中函數(shù)在內(nèi)存的入口(段:偏移)填入鏈表中的每個結(jié)點。1(2)動態(tài)連接122(三)操作系統(tǒng)的用戶界面操作系統(tǒng)23(三)操作系統(tǒng)的用戶界面操23(三)操作系統(tǒng)的用戶界面一.操作系統(tǒng)用戶界面的概念

1.什么是操作系統(tǒng)的用戶界面

操作系統(tǒng)的用戶界面(或稱接口)是操作系統(tǒng)提供給用戶與計算機打交道的外部機制。用戶能夠借助這種機制和系統(tǒng)提供的手段來控制用戶所在的系統(tǒng)。24(三)操作系統(tǒng)的用戶界面一.操作系統(tǒng)用戶界面的概念24

2.操作系統(tǒng)提供的用戶界面

操作系統(tǒng)系統(tǒng)功能調(diào)用操作命令:作業(yè)控制語言鍵盤命令圖形界面252.操作系統(tǒng)提供的用戶界面操系統(tǒng)功

2.操作系統(tǒng)提供的用戶界面

(1)操作界面(命令接口)

用戶使用這個操作界面來組織工作流程和控制程序的運行

(2)系統(tǒng)功能服務(wù)界面(程序接口)

用戶程序在其運行過程中,使用系統(tǒng)功能調(diào)用來請求操作系統(tǒng)的服務(wù)

(3)操作界面的分類與發(fā)展作業(yè)控制語言鍵盤命令圖形化用戶界面262.操作系統(tǒng)提供的用戶界面26二.操作命令

1.操作命令與操作系統(tǒng)類型的關(guān)系

作業(yè)控制語言——批處理操作系統(tǒng)鍵盤命令——分時操作系統(tǒng)個人計算機操作系統(tǒng)圖形用戶界面——分時操作系統(tǒng)個人計算機操作系統(tǒng)實際操作系統(tǒng):MS-DOSWindowsUnix(Linux)提供什么樣的用戶界面?27二.操作命令實際操作系統(tǒng):27操作系統(tǒng)提供的用戶界面的例子:MSDOS鍵盤命令系統(tǒng)功能調(diào)用Windows系統(tǒng)圖形用戶界面系統(tǒng)功能調(diào)用unix系統(tǒng)(linux)鍵盤命令系統(tǒng)功能調(diào)用28操作系統(tǒng)提供的用戶界面的例子:28

2.作業(yè)控制語言在脫機方式下系統(tǒng)提供作業(yè)控制語言(JCL)。

(1)什么是作業(yè)控制語言是一種命令語言,包括了對作業(yè)處理的命令和資源請求命令。

(2)批處理系統(tǒng)中作業(yè)的組織作業(yè)申請:作業(yè)名、需用CPU時間,最遲完成時間、資源請求(主存、外部)等。操作說明書:編譯命令、連接命令、運行命令等。

程序與數(shù)據(jù)292.作業(yè)控制語言29

3.鍵盤命令系統(tǒng)為聯(lián)機用戶(交互作用的用戶)提供鍵盤命令。

(1)什么是鍵盤命令是操作系統(tǒng)為聯(lián)機用戶提供的一種操作命令,用戶通過這一組命令直接控制和干預(yù)程序的運行。

(2)鍵盤命令的功能分時操作系統(tǒng)—用于注冊、通信、注銷的各類命令。

個人計算機操作系統(tǒng)—用于通信的各類命令。303.鍵盤命令30三.操作命令的發(fā)展——圖形用戶界面

1.什么是圖形化的用戶界面圖形化用戶界面是良好的用戶交互界面,它將菜單驅(qū)動、圖符驅(qū)動、面向?qū)ο蠹夹g(shù)等集成在一起,形成一個圖文并茂的視窗操作環(huán)境。

(1)菜單驅(qū)動方式是面向屏幕的交互方式,它將鍵盤命令以屏幕方式來體現(xiàn)。命令和系統(tǒng)能完成的操作,用菜單分類分窗口地在屏幕上列出;用戶像點菜一樣選擇命令或某種操作,以控制系統(tǒng)去完成指定的工作。31三.操作命令的發(fā)展——圖形用戶界面31菜單系統(tǒng)的類型有多種,如下拉式菜單,上推式菜單和隨機彈出式菜單。

(2)圖符驅(qū)動方式是一種面向屏幕的圖形菜單選擇方式。

圖符(Icon)也稱圖標,是一個小小的圖符符號。它代表操作系統(tǒng)中的命令、系統(tǒng)服務(wù)、操作功能、各種資源。

圖形化的命令驅(qū)動方式:當需要啟動系統(tǒng)命令、請求系統(tǒng)資源或操作功能時,可以選擇代表它的圖符,并借助標記輸入設(shè)備(鼠標器),采用鼠標器的點擊和拖拽功能,完成命令和操作選擇及執(zhí)行。32菜單系統(tǒng)的類型有多種,如下拉式菜單,上推式菜(3)圖形化用戶界面是良好的用戶交互界面,它將菜單驅(qū)動、圖符驅(qū)動、面向?qū)ο蠹夹g(shù)等集成在一起,形成一個圖文并茂的視窗操作環(huán)境。Microsoft公司的Windows系統(tǒng)就是這種圖形化用戶界面的代表。

2.圖形化的用戶界面的特點

所有程序以統(tǒng)一的窗口形式出現(xiàn)提供統(tǒng)一的菜單格式系統(tǒng)資源、系統(tǒng)命令、操作功能以圖標表示統(tǒng)一的操作方法33(3)圖形化用戶界面331.操作系統(tǒng)如何為用戶程序提供服務(wù)

操作系統(tǒng)提供實現(xiàn)各種功能的例行子程序

應(yīng)用程序i系統(tǒng)調(diào)用中央處理機存儲器應(yīng)用程序外部設(shè)備四.系統(tǒng)功能調(diào)用341.操作系統(tǒng)如何為用戶程序提供服務(wù)應(yīng)系統(tǒng)調(diào)用中央

如何調(diào)用操作系統(tǒng)服務(wù)功能?采用統(tǒng)一的方式訪管指令訪管中斷

┇顯示一個字符串打印一個字符串應(yīng)用程序j

┇┇printf();

┇35如何調(diào)用操作系統(tǒng)服務(wù)功能?┇顯示一個打印

2.訪管指令(自愿進管指令)

svcn

svc表示機器訪管指令的操作碼記憶符n為地址碼(功能號)

3.訪管中斷

當處理機執(zhí)行到訪管指令時就發(fā)生中斷,該中斷稱為訪管中斷,它表示正在運行的程序?qū)Σ僮飨到y(tǒng)的某種需求。362.訪管指令(自愿進管指令)36

4.什么是系統(tǒng)功能調(diào)用操作系統(tǒng)提供實現(xiàn)各種功能的例行子程序,其中的每一個功能對應(yīng)訪管指令的一個功能號。例如:svc0顯示一個字符

svc1打印一個字符串

┇系統(tǒng)功能調(diào)用是用戶在程序一級請求操作系統(tǒng)服務(wù)的一種手段,它不是一條簡單的硬指令,而是帶有一定功能號的“訪管指令”。它的功能并非由硬件直接提供,而是由操作系統(tǒng)中的一段程序完成的,即由軟件方法實現(xiàn)的。374.什么是系統(tǒng)功能調(diào)用37

5.系統(tǒng)功能調(diào)用的實現(xiàn)

a1a0┇an例行子程序入口地址表A+0A+1┇A+n

保護現(xiàn)場;取n值;按n值散轉(zhuǎn);

┇恢復(fù)現(xiàn)場;訪管中斷處理程序

┇svcn

┇用戶程序+A例行子程序Sub0Sub1SubnSubm┇a0a1anam┇385.系統(tǒng)功能調(diào)用的實現(xiàn)1.系統(tǒng)調(diào)用的中斷指令

Linux系統(tǒng)在初始化階段中,會調(diào)用trap_init()和init_IRQ()兩個函數(shù)進行中斷機制初始化,其中trap_init()是對異常處理、自陷向量的初始化。在arch/i386/kernel/traps.c中定義trap_init()函數(shù)。void_inittrap_init(void){set_system_gate(SYSCALL_VECTOR,&system_call);}在include/asm_i386/nw_irg.h中定義SYSCALL——VECTOR為0x80五.Linux系統(tǒng)調(diào)用的實現(xiàn)391.系統(tǒng)調(diào)用的中斷指令五.Linux系統(tǒng)調(diào)用的實現(xiàn)39

2.選用的系統(tǒng)調(diào)用sethostname()

(1)功能

設(shè)置計算機(在網(wǎng)絡(luò)中的)“主機號”;

(2)使用

intsethostname(constchat*name,size_tlen);參數(shù):name:要設(shè)置的參數(shù);len:該字符串的長度。返回:成功:0失敗:?1sethostname()是一個庫函數(shù),在/usr/lib/libc.a中。實際的系統(tǒng)調(diào)用在此函數(shù)中發(fā)生。402.選用的系統(tǒng)調(diào)用40

3.sethostname()的反匯編代碼30sethostname.0:fileformeelf32-i3863132Disassemblyofsection.text:333400000000<sethostname>350:89damovl%ebx,%edx362:8b4c2408movl0x8(%esp,1),%ecx376:8b5c2404movl0x4(%esp,1),%ebx38a:b84a000000movl$0x4a,%eax39f:cd80int$0x804011:89d3movl%edx,%ebx

┆451e:c3ret413.sethostname()的反匯編代碼41

3.系統(tǒng)調(diào)用system_call()system_call()代碼在arch/i386/kernel/entry.s中

195ENTRY(system_call)196push%eax197save_ALL198GET_CURREN(%ebx)199CMPL$(nr_syscalls),%eax200jaebadsys201testb$0x02,tsk_ptrace(%ebx)#PT_TRACESYS202jnetracesys203call*SYMBOL_NAME(sys_call_table)(,%eax,4)204movl%eax,EAX(%esp)#savethereturnvalue205ENTRY(ret_from_sys_call)423.系統(tǒng)調(diào)用system_call()42

4.系統(tǒng)調(diào)用號與系統(tǒng)調(diào)用跳轉(zhuǎn)表

(1)系統(tǒng)調(diào)用號

文件include/asm/unistd.h為每個系統(tǒng)調(diào)用定義了一個唯一的編號,稱為系統(tǒng)調(diào)用號。以下為部分編號:

8#define_NR_exit19#define_NR_fork210#define_NR_read311#define_NR_write412#define_NR_open513#define_NR_close614#define_NR_waitpid715#define_NR_creat816#define_NR_link9434.系統(tǒng)調(diào)用號與系統(tǒng)調(diào)用跳轉(zhuǎn)表43

(2)系統(tǒng)跳轉(zhuǎn)表

系統(tǒng)跳轉(zhuǎn)表是一個函數(shù)指針,跳轉(zhuǎn)時以系統(tǒng)調(diào)用號為下標在數(shù)組中找到相應(yīng)的函數(shù)指針。該數(shù)組在arch/i386/kernel/entry.S中定義為256entry.S中的數(shù)組sys_call_table的匯編代碼425ENTRY(SYS_CALL_TABLE426.longSYMBOL_NAME(sys_ni_syscall)427.longSYMBOL_NAME(sys_exit)428.longSYMBOL_NAME(sys_fork)429.longSYMBOL_NAME(sys_read)430.longSYMBOL_NAME(sys_write)┆500.longSYMBOL_NAME(sys_sethostname)44(2)系統(tǒng)跳轉(zhuǎn)表44三.

UNIX的系統(tǒng)調(diào)用1.UNIX系統(tǒng)調(diào)用的分類

(1)有關(guān)進程管理的系統(tǒng)調(diào)用

fork建立一個進程exec執(zhí)行一個文件wait等待子進程exit進程中止brk改變用戶數(shù)據(jù)區(qū)大小sleep等待一段時間signal設(shè)置軟中斷處理程序kill發(fā)送軟中斷alarm在指定時間后發(fā)送軟中斷pause等待軟中斷nice改變進程優(yōu)先數(shù)計算結(jié)果ptrace跟蹤子進程45三.UNIX的系統(tǒng)調(diào)用45(1)與文件和外設(shè)管理有關(guān)的系統(tǒng)調(diào)用

open打開文件close關(guān)閉文件read讀文件write寫文件lseek修改讀寫指針creat建立并打開文件mknod建立目錄或特別文件link聯(lián)結(jié)文件unlink刪除文件chdir改變當前目錄chmod改變文件屬性pipe建立并打開管道文件chown改變文件主和用戶組mount安裝文件系統(tǒng)(卷)dup再產(chǎn)生一個文件描述字umount拆卸文件系統(tǒng)(卷)46(1)與文件和外設(shè)管理有關(guān)的系統(tǒng)調(diào)用46(3)與系統(tǒng)狀態(tài)有關(guān)的系統(tǒng)調(diào)用getuid取用戶號setuid設(shè)置用戶號getgid取用戶組號setgid設(shè)置用戶組號time取日歷時間stime設(shè)置日歷時間times取進程執(zhí)行時間gtty讀當前終端tty部分信息stty設(shè)置當前終端tty部分信息stat讀取文件狀態(tài)(i節(jié)點)sync使主存映像與磁盤文件信息一致47(3)與系統(tǒng)狀態(tài)有關(guān)的系統(tǒng)調(diào)用472.UNIX系統(tǒng)調(diào)用的實現(xiàn)

(1)系統(tǒng)調(diào)用的形式

read(fd,buffer,nbytes)在用戶程序中的調(diào)用:number=read(fd,buffer,nbytes);fd:文件描述符buffer:讀入的內(nèi)存地址nbytes:要讀入的字節(jié)數(shù)number:實際讀入的字節(jié)數(shù)

482.UNIX系統(tǒng)調(diào)用的實現(xiàn)48對應(yīng)的匯編代碼:(read=3)(fd→r0)sysread;目標代碼是104403buffer;nbytes(返回值存入r0)100010010000001149對應(yīng)的匯編代碼:10001

(2)系統(tǒng)調(diào)用入口地址表structsysentintcount;int(*call)();sysent[64]count:系統(tǒng)調(diào)用自帶參數(shù)個數(shù)(*call)():函數(shù)指針,該系統(tǒng)調(diào)用例程的入口地址50(2)系統(tǒng)調(diào)用入口地址表50表10.2系統(tǒng)調(diào)用入口地址表編號自帶參數(shù)程序入口地址系統(tǒng)調(diào)用名稱00&nullsysindir10&rexitexit20&forkfork 32&readread42&writewrite

┇┇┇┇63無定義&nosys無定義1表10.2系統(tǒng)調(diào)用入口地址表151

(3)系統(tǒng)功能調(diào)用的實現(xiàn)

保護現(xiàn)場;依dev=6轉(zhuǎn)trap;

┇恢復(fù)現(xiàn)場;u.u_aro[Ro]→r0;trap總控程序

┇(read=3)(files→r0)sysreadbuffers;nbytes;┇用戶程序

┇參數(shù)處理;pc+4;依sysent[3]轉(zhuǎn)read;┇trap指令處理程序

┇參數(shù)處理;

┇啟動磁盤傳送;實際傳送字節(jié)數(shù)→u.u_aro[Ro];read處理程序52(3)系統(tǒng)功能調(diào)用的實現(xiàn)trap總控程序第三章小結(jié)

1.作業(yè)、作業(yè)步的概念2.運行一個用戶程序的過程3.操作系統(tǒng)提供哪兩個接口4.舉例說明實際操作系統(tǒng)的用戶界面5.什么是系統(tǒng)調(diào)用,系統(tǒng)調(diào)用的實現(xiàn)過程6.UNIX系統(tǒng)調(diào)用的實現(xiàn)過程53第三章小結(jié)53

第三章用戶界面

(一)用戶工作環(huán)境(二)運行一個用戶程序的過程(三)操作系統(tǒng)的用戶界面(四)系統(tǒng)功能調(diào)用(五)Linux系統(tǒng)功能調(diào)用的實現(xiàn)54第三章用戶界面(一)用戶工作環(huán)境1(一)用戶工作環(huán)境一.用戶工作環(huán)境的形成

1.系統(tǒng)要提供各種硬件、軟件資源

2.設(shè)計合理的操作命令3.形成一個可供使用的工作環(huán)境將操作系統(tǒng)裝入計算機并初始化。

1(一)用戶工作環(huán)境一.用戶工作環(huán)境的形成1551.系統(tǒng)引導(dǎo)的任務(wù)系統(tǒng)引導(dǎo)又叫系統(tǒng)初啟。其任務(wù)是把操作系統(tǒng)的必要部分裝入主存并使系統(tǒng)進行初始化工作,最終處于命令接收狀態(tài)。

二.操作系統(tǒng)的引導(dǎo)

11.系統(tǒng)引導(dǎo)的任務(wù)二.操作系統(tǒng)的引導(dǎo)562.系統(tǒng)引導(dǎo)的方式

(1)獨立引導(dǎo)方式(滾雪球方式)

OS核心文件存儲在系統(tǒng)本身的存儲設(shè)備中由系統(tǒng)自己將OS核心程序讀入內(nèi)存并運行最后建立一個操作環(huán)境適用于微機和大多數(shù)系統(tǒng)。操作系統(tǒng)的引導(dǎo)有兩種方式:獨立引導(dǎo)(bootup)

輔助下裝(download)12.系統(tǒng)引導(dǎo)的方式(1)獨立引導(dǎo)方式(滾雪球方式)57(2)輔助下裝方式優(yōu)點可以節(jié)省較大的存儲空間,下裝的OS并非是全部代碼,只是常駐部分或者專用部分,當這部分OS出現(xiàn)問題和故障時,可以再請求下裝。適用于多計算機系統(tǒng)、由主控機與前端機構(gòu)成的系統(tǒng)以及分布式系統(tǒng)。

OS主要文件不放在系統(tǒng)本身的存儲設(shè)備中,而是在系統(tǒng)啟動后,執(zhí)行下裝操作,從另外的計算機系統(tǒng)中將操作系統(tǒng)常駐部分傳送到該計算機中,使它形成一個操作環(huán)境。1(2)輔助下裝方式優(yōu)點583.獨立引導(dǎo)方式(滾雪球方式)的過程

(1)初始引導(dǎo)

系統(tǒng)加電;

執(zhí)行初始引導(dǎo)程序,對系統(tǒng)硬件和配置進行自檢,保證系統(tǒng)沒有硬件錯誤;

從硬盤中讀入操作系統(tǒng)引導(dǎo)程序,并將控制權(quán)交給該程序模塊。(2)引導(dǎo)程序執(zhí)行引導(dǎo)程序執(zhí)行,將操作系統(tǒng)核心文件讀入內(nèi)存,并將控制交給核心的初始化程序。

13.獨立引導(dǎo)方式(滾雪球方式)的過程(1)初始引導(dǎo)(59(3)核心初始化初始化系統(tǒng)數(shù)據(jù)結(jié)構(gòu)及參數(shù):

建立進程有關(guān)的數(shù)據(jù)結(jié)構(gòu)

獲得自由存儲空間的容量,建立存儲管理的數(shù)據(jù)結(jié)構(gòu)

建立系統(tǒng)設(shè)備和文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)

初始化時鐘

(4)系統(tǒng)初始化

完善OS的操作環(huán)境,裝載命令處理程序(或圖形用戶界面),并初始化;

在多用戶系統(tǒng)中,為每個終端建立命令解釋進程,使系統(tǒng)處于命令接收狀態(tài)。1(3)核心初始化(4)系統(tǒng)初始化1604.實例操作系統(tǒng)的引導(dǎo)過程

(1)MS-DOS啟動BIOS的初始引導(dǎo)程序,讀入系統(tǒng)盤中的引導(dǎo)程序由引導(dǎo)程序讀入操作系統(tǒng)核心程序IO.SYS(I/O初始化)DOS.SYS(文件系統(tǒng),簡單內(nèi)存初始化)COMMAND.COM(簡單任務(wù)管理)進入命令提符狀態(tài)C:\>14.實例操作系統(tǒng)的引導(dǎo)過程

(1)MS-DOS啟動61(2)WINDOWS系統(tǒng)的引導(dǎo)打開機器電源ROM中引導(dǎo)程序運行,裝入系統(tǒng)盤中的主引導(dǎo)程序主引導(dǎo)塊程序執(zhí)行,讀入操作系統(tǒng)核心程序系統(tǒng)初始化的工作:包括系統(tǒng)資源初始狀態(tài)的設(shè)置、系統(tǒng)主要數(shù)據(jù)結(jié)構(gòu)初始化、引導(dǎo)圖形用戶界面程序圖形用戶界面運行,生成用戶的圖形用戶界面,系統(tǒng)初啟工作完成1(2)WINDOWS系統(tǒng)的引導(dǎo)打開機器電源162(3)UNIX系統(tǒng)初啟UNIX操作系統(tǒng)執(zhí)行代碼裝入內(nèi)存存儲空間及其管理機構(gòu)初始化與設(shè)備有關(guān)的初始化與文件系統(tǒng)有關(guān)的初始化創(chuàng)建0#和1#進程1#進程創(chuàng)建各終端進程終端進程運行shell各用戶終端上出現(xiàn)login1(3)UNIX系統(tǒng)初啟UNIX操作系統(tǒng)執(zhí)行代碼裝入內(nèi)63(4)Linux系統(tǒng)初啟Linux系統(tǒng)是以滾雪球的方式啟動的:加電或復(fù)位——﹥BIOS的啟動(bootsect.s)——﹥BootLoader——﹥OS初始化(引導(dǎo)程序)①系統(tǒng)加電或復(fù)位對內(nèi)存中所有的數(shù)據(jù)清零,對內(nèi)存進行校驗,若無錯,CS:IP——﹥BIOS入口。1(4)Linux系統(tǒng)初啟Linux系統(tǒng)是以滾雪球的方式64②BIOS啟動在ROM中的引導(dǎo)程序放在固定位置:FFFF:0000CPU從這里開始執(zhí)行。上電自檢;對硬件設(shè)備進行檢測和連接,并將測得的數(shù)據(jù)——﹥BIOS數(shù)據(jù)區(qū)。從盤中讀入BootLoader(引導(dǎo)程序)從硬盤啟動時,讀入零柱面零磁道1扇區(qū)MBR(MasterBootRecord),將控制權(quán)交BootLoader1②BIOS啟動165③

BootLoader(引導(dǎo)程序)

功能:將OS讀入內(nèi)存,并將控制權(quán)交給OS的初始化程序。LILOLILO是一個在Linux環(huán)境下編寫的引導(dǎo)程序。它可以引導(dǎo)Linux;也可以引導(dǎo)其他操作系統(tǒng),如Windows。它可以作為Linux分區(qū)的引導(dǎo)扇區(qū)內(nèi)的啟動程序;也可以放在MBR中完全控制BootLoader的全過程。主要功能:將Linux內(nèi)核(或其他操作系統(tǒng)分區(qū))讀入內(nèi)存提供一個命令行接口,可由用戶選擇OS。1③BootLoader(引導(dǎo)程序)166④

系統(tǒng)核心初始化(Setup.s)

Setup的工作a.檢查調(diào)入內(nèi)存中的代碼;b.獲取內(nèi)存容量信息,設(shè)置設(shè)備模式;c.屏蔽中斷,準備進入保護模式;d.設(shè)置中斷描述符表(idt),全局描述符表(gdt)控制權(quán)交給Head.sHead.s的工作a.對中斷向量表作準備工作;b.檢查CPU類型;c.調(diào)用Setup_paging進行頁面初始化;d.調(diào)用main.c中的Start_kernel()1④系統(tǒng)核心初始化(Setup.s)167Start_kernel的工作a.對與CPU、內(nèi)存等最基本硬件相關(guān)部分進行初始化;b.對中斷向量表進行初始化;c.為進程調(diào)度程序作準備;d.設(shè)置基準時鐘;e.內(nèi)核的內(nèi)存分配;f.對文件系統(tǒng)進行初始化;g.建立init進程。init進程對每一個聯(lián)機終端建立“getty”進程getty在終端上顯示“l(fā)ogin”,等待用戶登錄。1Start_kernel的工作168

5.系統(tǒng)生成系統(tǒng)生成就是操作系統(tǒng)的生成過程

(1)什么是系統(tǒng)生成所謂系統(tǒng)生成,就是指為了滿足物理設(shè)備的約束和需要的系統(tǒng)功能,通過組裝一批模塊來產(chǎn)生一個清晰的、使用方便的操作系統(tǒng)的過程。

(2)系統(tǒng)生成的內(nèi)容根據(jù)硬件部件確定系統(tǒng)構(gòu)造的參數(shù),編輯系統(tǒng)模塊的參數(shù),并且連接系統(tǒng)模塊成為一個可執(zhí)行的程序。15.系統(tǒng)生成(1)什么是系統(tǒng)生成(2)69(二)運行一個用戶程序的過程一.作業(yè)與作業(yè)步

1.作業(yè)計算機系統(tǒng)按指定步驟對初始數(shù)據(jù)進行處理并得到計算結(jié)果的加工工作。

2.作業(yè)步加工工作中的一個步驟稱為作業(yè)步。70(二)運行一個用戶程序的過程一.作業(yè)與作業(yè)步17

3.作業(yè)處理步驟

(1)編輯建立一個新文件,或?qū)σ延械奈募械腻e誤進行修改。

(2)編譯將源程序翻譯成浮動的目標代碼。

(3)連接主程序和其他所需要的子程序和例行程序連接裝配在一起,使之成為一個可執(zhí)行的、完整的主存映像文件。

(4)運行將主存映像文件調(diào)入主存,并啟動運行,最后得出計算結(jié)果。713.作業(yè)處理步驟184.作業(yè)步之間的關(guān)系user.cuser.objuser.exe編輯—編譯—連接—運行

第一個第二個第三個第四個作業(yè)步作業(yè)步作業(yè)步作業(yè)步

每個作業(yè)步運行的結(jié)果產(chǎn)生下一個作業(yè)步所需要的文件;一個作業(yè)步能否正確地執(zhí)行,依賴于前一個作業(yè)步是否成功地完成。14.作業(yè)步之間的關(guān)系1725.連接類型(1)靜態(tài)連接一個源程序經(jīng)編譯后,生成一個可重定位的目標模塊,并產(chǎn)生內(nèi)部符號表和外部符號表,供連接程序(Link)使用。內(nèi)部符號表:本模塊可以被其他程序調(diào)用的入口點;外部符號表:本模塊要調(diào)用的外部的程序模塊名。15.連接類型173

連接時完成的工作①將各模塊連接成為一個整體;②構(gòu)造全程符號表,在其中填寫模塊的邏輯地址;③查找個程序段的外部調(diào)用表,填入對應(yīng)調(diào)用函數(shù)的地址。靜態(tài)連接的缺點靜態(tài)連接將所需的外部函數(shù)鏈接到目標文件中形成為一個可執(zhí)行文件。若多個應(yīng)用程序都調(diào)用了同一個庫中的外部函數(shù),那么,應(yīng)用程序的目標文件中都包含了這個外部函數(shù)對應(yīng)的代碼。1連接時完成的工作174

(2)動態(tài)連接動態(tài)連接不需要將外部函數(shù)鏈接到目標文件中。而是在應(yīng)用程序中需要調(diào)用外部函數(shù)的地方作記錄,并說明要使用的外部函數(shù)名和引用入口號?!纬珊瘮?shù)調(diào)用鏈表所需支持——DLL(動態(tài)連接庫)當Windows的裝載程序?qū)?yīng)用程序和DLL裝入內(nèi)存后,裝載程序會遍歷形成函數(shù)調(diào)用鏈表,將DLL中函數(shù)在內(nèi)存的入口(段:偏移)填入鏈表中的每個結(jié)點。1(2)動態(tài)連接175(三)操作系統(tǒng)的用戶界面操作系統(tǒng)76(三)操作系統(tǒng)的用戶界面操23(三)操作系統(tǒng)的用戶界面一.操作系統(tǒng)用戶界面的概念

1.什么是操作系統(tǒng)的用戶界面

操作系統(tǒng)的用戶界面(或稱接口)是操作系統(tǒng)提供給用戶與計算機打交道的外部機制。用戶能夠借助這種機制和系統(tǒng)提供的手段來控制用戶所在的系統(tǒng)。77(三)操作系統(tǒng)的用戶界面一.操作系統(tǒng)用戶界面的概念24

2.操作系統(tǒng)提供的用戶界面

操作系統(tǒng)系統(tǒng)功能調(diào)用操作命令:作業(yè)控制語言鍵盤命令圖形界面782.操作系統(tǒng)提供的用戶界面操系統(tǒng)功

2.操作系統(tǒng)提供的用戶界面

(1)操作界面(命令接口)

用戶使用這個操作界面來組織工作流程和控制程序的運行

(2)系統(tǒng)功能服務(wù)界面(程序接口)

用戶程序在其運行過程中,使用系統(tǒng)功能調(diào)用來請求操作系統(tǒng)的服務(wù)

(3)操作界面的分類與發(fā)展作業(yè)控制語言鍵盤命令圖形化用戶界面792.操作系統(tǒng)提供的用戶界面26二.操作命令

1.操作命令與操作系統(tǒng)類型的關(guān)系

作業(yè)控制語言——批處理操作系統(tǒng)鍵盤命令——分時操作系統(tǒng)個人計算機操作系統(tǒng)圖形用戶界面——分時操作系統(tǒng)個人計算機操作系統(tǒng)實際操作系統(tǒng):MS-DOSWindowsUnix(Linux)提供什么樣的用戶界面?80二.操作命令實際操作系統(tǒng):27操作系統(tǒng)提供的用戶界面的例子:MSDOS鍵盤命令系統(tǒng)功能調(diào)用Windows系統(tǒng)圖形用戶界面系統(tǒng)功能調(diào)用unix系統(tǒng)(linux)鍵盤命令系統(tǒng)功能調(diào)用81操作系統(tǒng)提供的用戶界面的例子:28

2.作業(yè)控制語言在脫機方式下系統(tǒng)提供作業(yè)控制語言(JCL)。

(1)什么是作業(yè)控制語言是一種命令語言,包括了對作業(yè)處理的命令和資源請求命令。

(2)批處理系統(tǒng)中作業(yè)的組織作業(yè)申請:作業(yè)名、需用CPU時間,最遲完成時間、資源請求(主存、外部)等。操作說明書:編譯命令、連接命令、運行命令等。

程序與數(shù)據(jù)822.作業(yè)控制語言29

3.鍵盤命令系統(tǒng)為聯(lián)機用戶(交互作用的用戶)提供鍵盤命令。

(1)什么是鍵盤命令是操作系統(tǒng)為聯(lián)機用戶提供的一種操作命令,用戶通過這一組命令直接控制和干預(yù)程序的運行。

(2)鍵盤命令的功能分時操作系統(tǒng)—用于注冊、通信、注銷的各類命令。

個人計算機操作系統(tǒng)—用于通信的各類命令。833.鍵盤命令30三.操作命令的發(fā)展——圖形用戶界面

1.什么是圖形化的用戶界面圖形化用戶界面是良好的用戶交互界面,它將菜單驅(qū)動、圖符驅(qū)動、面向?qū)ο蠹夹g(shù)等集成在一起,形成一個圖文并茂的視窗操作環(huán)境。

(1)菜單驅(qū)動方式是面向屏幕的交互方式,它將鍵盤命令以屏幕方式來體現(xiàn)。命令和系統(tǒng)能完成的操作,用菜單分類分窗口地在屏幕上列出;用戶像點菜一樣選擇命令或某種操作,以控制系統(tǒng)去完成指定的工作。84三.操作命令的發(fā)展——圖形用戶界面31菜單系統(tǒng)的類型有多種,如下拉式菜單,上推式菜單和隨機彈出式菜單。

(2)圖符驅(qū)動方式是一種面向屏幕的圖形菜單選擇方式。

圖符(Icon)也稱圖標,是一個小小的圖符符號。它代表操作系統(tǒng)中的命令、系統(tǒng)服務(wù)、操作功能、各種資源。

圖形化的命令驅(qū)動方式:當需要啟動系統(tǒng)命令、請求系統(tǒng)資源或操作功能時,可以選擇代表它的圖符,并借助標記輸入設(shè)備(鼠標器),采用鼠標器的點擊和拖拽功能,完成命令和操作選擇及執(zhí)行。85菜單系統(tǒng)的類型有多種,如下拉式菜單,上推式菜(3)圖形化用戶界面是良好的用戶交互界面,它將菜單驅(qū)動、圖符驅(qū)動、面向?qū)ο蠹夹g(shù)等集成在一起,形成一個圖文并茂的視窗操作環(huán)境。Microsoft公司的Windows系統(tǒng)就是這種圖形化用戶界面的代表。

2.圖形化的用戶界面的特點

所有程序以統(tǒng)一的窗口形式出現(xiàn)提供統(tǒng)一的菜單格式系統(tǒng)資源、系統(tǒng)命令、操作功能以圖標表示統(tǒng)一的操作方法86(3)圖形化用戶界面331.操作系統(tǒng)如何為用戶程序提供服務(wù)

操作系統(tǒng)提供實現(xiàn)各種功能的例行子程序

應(yīng)用程序i系統(tǒng)調(diào)用中央處理機存儲器應(yīng)用程序外部設(shè)備四.系統(tǒng)功能調(diào)用871.操作系統(tǒng)如何為用戶程序提供服務(wù)應(yīng)系統(tǒng)調(diào)用中央

如何調(diào)用操作系統(tǒng)服務(wù)功能?采用統(tǒng)一的方式訪管指令訪管中斷

┇顯示一個字符串打印一個字符串應(yīng)用程序j

┇┇printf();

┇88如何調(diào)用操作系統(tǒng)服務(wù)功能?┇顯示一個打印

2.訪管指令(自愿進管指令)

svcn

svc表示機器訪管指令的操作碼記憶符n為地址碼(功能號)

3.訪管中斷

當處理機執(zhí)行到訪管指令時就發(fā)生中斷,該中斷稱為訪管中斷,它表示正在運行的程序?qū)Σ僮飨到y(tǒng)的某種需求。892.訪管指令(自愿進管指令)36

4.什么是系統(tǒng)功能調(diào)用操作系統(tǒng)提供實現(xiàn)各種功能的例行子程序,其中的每一個功能對應(yīng)訪管指令的一個功能號。例如:svc0顯示一個字符

svc1打印一個字符串

┇系統(tǒng)功能調(diào)用是用戶在程序一級請求操作系統(tǒng)服務(wù)的一種手段,它不是一條簡單的硬指令,而是帶有一定功能號的“訪管指令”。它的功能并非由硬件直接提供,而是由操作系統(tǒng)中的一段程序完成的,即由軟件方法實現(xiàn)的。904.什么是系統(tǒng)功能調(diào)用37

5.系統(tǒng)功能調(diào)用的實現(xiàn)

a1a0┇an例行子程序入口地址表A+0A+1┇A+n

保護現(xiàn)場;取n值;按n值散轉(zhuǎn);

┇恢復(fù)現(xiàn)場;訪管中斷處理程序

┇svcn

┇用戶程序+A例行子程序Sub0Sub1SubnSubm┇a0a1anam┇915.系統(tǒng)功能調(diào)用的實現(xiàn)1.系統(tǒng)調(diào)用的中斷指令

Linux系統(tǒng)在初始化階段中,會調(diào)用trap_init()和init_IRQ()兩個函數(shù)進行中斷機制初始化,其中trap_init()是對異常處理、自陷向量的初始化。在arch/i386/kernel/traps.c中定義trap_init()函數(shù)。void_inittrap_init(void){set_system_gate(SYSCALL_VECTOR,&system_call);}在include/asm_i386/nw_irg.h中定義SYSCALL——VECTOR為0x80五.Linux系統(tǒng)調(diào)用的實現(xiàn)921.系統(tǒng)調(diào)用的中斷指令五.Linux系統(tǒng)調(diào)用的實現(xiàn)39

2.選用的系統(tǒng)調(diào)用sethostname()

(1)功能

設(shè)置計算機(在網(wǎng)絡(luò)中的)“主機號”;

(2)使用

intsethostname(constchat*name,size_tlen);參數(shù):name:要設(shè)置的參數(shù);len:該字符串的長度。返回:成功:0失敗:?1sethostname()是一個庫函數(shù),在/usr/lib/libc.a中。實際的系統(tǒng)調(diào)用在此函數(shù)中發(fā)生。932.選用的系統(tǒng)調(diào)用40

3.sethostname()的反匯編代碼30sethostname.0:fileformeelf32-i3863132Disassemblyofsection.text:333400000000<sethostname>350:89damovl%ebx,%edx362:8b4c2408movl0x8(%esp,1),%ecx376:8b5c2404movl0x4(%esp,1),%ebx38a:b84a000000movl$0x4a,%eax39f:cd80int$0x804011:89d3movl%edx,%ebx

┆451e:c3ret943.sethostname()的反匯編代碼41

3.系統(tǒng)調(diào)用system_call()system_call()代碼在arch/i386/kernel/entry.s中

195ENTRY(system_call)196push%eax197save_ALL198GET_CURREN(%ebx)199CMPL$(nr_syscalls),%eax200jaebadsys201testb$0x02,tsk_ptrace(%ebx)#PT_TRACESYS202jnetracesys203call*SYMBOL_NAME(sys_call_table)(,%eax,4)204movl%eax,EAX(%esp)#savethereturnvalue205ENTRY(ret_from_sys_call)953.系統(tǒng)調(diào)用system_call()42

4.系統(tǒng)調(diào)用號與系統(tǒng)調(diào)用跳轉(zhuǎn)表

(1)系統(tǒng)調(diào)用號

文件include/asm/unistd.h為每個系統(tǒng)調(diào)用定義了一個唯一的編號,稱為系統(tǒng)調(diào)用號。以下為部分編號:

8#define_NR_exit19#define_NR_fork210#define_NR_read311#define_NR_write412#define_NR_open513#define_NR_close614#define_NR_waitpid715#define_NR_creat816#define_NR_link9964.系統(tǒng)調(diào)用號與系統(tǒng)調(diào)用跳轉(zhuǎn)表43

(2)系統(tǒng)跳轉(zhuǎn)表

系統(tǒng)跳轉(zhuǎn)表是一個函數(shù)指針,跳轉(zhuǎn)時以系統(tǒng)調(diào)用號為下標在數(shù)組中找到相應(yīng)的函數(shù)指針。該數(shù)組在arch/i386/kernel/entry.S中定義為256entry.S中的數(shù)組sys_call_table的匯編代碼425ENTRY(SYS_CALL_TABLE426.longSYMBOL_NAME(sys_ni_syscall)427.longSYMBOL_NAME(sys_exit)428.longSYMBOL_NAME(sys_fork)429.longSYMBOL_NAME(sys_read)430.longSYMBOL_NAME(sys_write)┆500.longSYMBOL_NAME(sys_sethostname)97(2)系統(tǒng)跳轉(zhuǎn)表44三.

UNIX的系統(tǒng)調(diào)用1.UNIX系統(tǒng)調(diào)用的分類

(1)有關(guān)進程管理的系統(tǒng)調(diào)用

fork建立一個進程exec執(zhí)行一個文件wait等待子進程exit進程中止brk改變用戶數(shù)據(jù)區(qū)大

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論