版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江蘇省鎮(zhèn)江市丹徒區(qū)高中政治 第九課 唯物辯證法的實質(zhì)與核心教案 新人教版必修4
- 二年級品德與生活上冊 誠實故事會教案2 北師大版
- 2024秋八年級物理上冊 第4章 光的折射 透鏡 第一節(jié) 光的折射教案2(新版)蘇科版
- 2024年秋九年級歷史上冊 第2單元 古代歐洲文明 第4課 希臘城邦和亞歷山大帝國教案 新人教版
- 2024-2025學(xué)年高中英語 Module 5 Newspapers and Magazines教案1 外研版必修2
- 2024年五年級語文上冊 第四單元 13 少年中國說(節(jié)選)配套教案 新人教版
- 2023六年級數(shù)學(xué)下冊 第4單元 比例 2正比例和反比例練習(xí)課(正比例和反比例)教案 新人教版
- 換熱站管理制度
- 自建房屋外包合同(2篇)
- 設(shè)計師求職簡歷幻燈片模板
- 第二季度2024思想?yún)R報26篇
- MOOC 紡紗學(xué)-東華大學(xué) 中國大學(xué)慕課答案
- 高血壓急癥的護理查房
- 居住環(huán)境與健康智慧樹知到期末考試答案2024年
- 數(shù)據(jù)倫理:科技與道德的交鋒課件
- 精神病服藥自我管理
- 茶園新區(qū)規(guī)劃方案圖
- 2024年操作工技能考核考試-干燥工筆試歷年真題薈萃含答案
- 2021年公開選拔團委副書記專業(yè)知識試題及答案
- 舞蹈專業(yè)大學(xué)生生涯發(fā)展
- 第一單元-青春時光(大單元教學(xué)設(shè)計)-七年級道德與法治下冊同步備課系列(部編版)
評論
0/150
提交評論