計算機(jī)操作系統(tǒng)第3章_第1頁
計算機(jī)操作系統(tǒng)第3章_第2頁
計算機(jī)操作系統(tǒng)第3章_第3頁
計算機(jī)操作系統(tǒng)第3章_第4頁
計算機(jī)操作系統(tǒng)第3章_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

1、操作系統(tǒng)的用戶接口操作系統(tǒng)的用戶接口用戶工作環(huán)境運行一個應(yīng)用程序的過程操作系統(tǒng)用戶界面系統(tǒng)功能調(diào)用Linux系統(tǒng)功能調(diào)用1操作系統(tǒng)的用戶接口主要內(nèi)容21. 用戶工作環(huán)境的形成系統(tǒng)要提供各種硬件、軟件資源設(shè)計并提供使用方便的命令集合將OS裝入計算機(jī)并初始化,形成可供使用的工作環(huán)境2. 操作系統(tǒng)的初啟系統(tǒng)引導(dǎo)的任務(wù) 將操作系統(tǒng)的必要部分裝入主存并對系統(tǒng)進(jìn)行初始化工作,最終使系統(tǒng)處于命令接收狀態(tài)。操作系統(tǒng)的用戶接口用戶工作環(huán)境3操作系統(tǒng)的用戶接口用戶工作環(huán)境系統(tǒng)引導(dǎo)的方式獨立引導(dǎo)方式(滾雪球方式) OS核心文件存儲在系統(tǒng)本身的存儲設(shè)備中,由系統(tǒng)自己將OS核心程序讀入主存并運行,建立一個操作環(huán)境。 適

2、用于微機(jī)和大多數(shù)系統(tǒng)輔助下裝方式 OS主要文件不放在系統(tǒng)本身的存儲設(shè)備中,在系統(tǒng)啟動后執(zhí)行下裝操作,從另外的計算機(jī)系統(tǒng)中將操作系統(tǒng)常駐部分傳送到該計算機(jī)中,使它形成一個操作環(huán)境。 適用于多計算機(jī)系統(tǒng)、由主控機(jī)與前端機(jī)構(gòu)成的系統(tǒng)以 及分布式系統(tǒng)。4操作系統(tǒng)的用戶接口用戶工作環(huán)境3. 獨立引導(dǎo)方式(滾雪球方式) 的過程初始引導(dǎo)系統(tǒng)加電;執(zhí)行初始引導(dǎo)程序,對系統(tǒng)硬件和配置進(jìn)行自檢,保證系統(tǒng)沒有硬件錯誤;從硬盤中讀入操作系統(tǒng)引導(dǎo)程序,并將控制權(quán)交給該程序模塊。引導(dǎo)程序執(zhí)行引導(dǎo)程序執(zhí)行,將操作系統(tǒng)核心文件讀入內(nèi)存,并將控制交給核心的初始化程序。5操作系統(tǒng)的用戶接口用戶工作環(huán)境核心初始化 初始化系統(tǒng)數(shù)據(jù)結(jié)

3、構(gòu)及參數(shù)系統(tǒng)加電建立進(jìn)程有關(guān)的數(shù)據(jù)結(jié)構(gòu) ;獲得自由存儲空間的容量,建立存儲管理的數(shù)據(jù)結(jié)構(gòu) ;建立系統(tǒng)設(shè)備和文件系統(tǒng)的數(shù)據(jù)結(jié)構(gòu) ;初始化時鐘。系統(tǒng)初始化完善OS的操作環(huán)境,裝載命令處理程序(或圖形用戶界面),并初始化;在多用戶系統(tǒng)中,為每個終端建立命令解釋進(jìn)程,使系統(tǒng)處于命令接收狀態(tài)。6操作系統(tǒng)的用戶接口用戶工作環(huán)境4. Linux系統(tǒng)初啟 Linux系統(tǒng)是以滾雪球的方式啟動 加電或復(fù)位 BIOS的啟動 Boot Loader OS初始化系統(tǒng)加電或復(fù)位對主存中所有的數(shù)據(jù)清零,對內(nèi)存進(jìn)行校驗,若無錯,CS:IP BIOS入口。7操作系統(tǒng)的用戶接口用戶工作環(huán)境BIOS啟動 在ROM中的引導(dǎo)程序放在固

4、定位置:FFFF:0000 CPU從這里開始執(zhí)行。上電自檢;對硬件設(shè)備進(jìn)行檢測和連接,并將測得的數(shù)據(jù)BIOS數(shù)據(jù)區(qū);從盤中讀入Boot Loader(引導(dǎo)程序)。 從硬盤啟動時,讀入零柱面零磁道1扇區(qū)MBR(Master Boot Record),將控制權(quán)交Boot LoaderLoader(引導(dǎo)程序) 功能:將OS讀入內(nèi)存,并將控制權(quán)交給OS的初始化程序。8操作系統(tǒng)的用戶界面用戶工作環(huán)境系統(tǒng)核心初始化( Setup.s) Setup的工作檢查調(diào)入內(nèi)存中的代碼 ;獲取內(nèi)存容量信息,設(shè)置設(shè)備模式;屏蔽中斷,準(zhǔn)備進(jìn)入保護(hù)模式;設(shè)置中斷描述符表(idt),全局描述符表(gdt);控制權(quán)交給 Head

5、s。 Heads的工作對中斷向量表作準(zhǔn)備工作;檢查CPU類型;調(diào)用Setup_paging進(jìn)行頁面初始化;調(diào)用main.c中的Start_kernel()。9操作系統(tǒng)的用戶接口用戶工作環(huán)境Start_kernel()的工作對與CPU、內(nèi)存等最基本硬件相關(guān)部分進(jìn)行初始化;對中斷向量表進(jìn)行初始化;為進(jìn)程調(diào)度程序作準(zhǔn)備;設(shè)置基準(zhǔn)時鐘;內(nèi)核的內(nèi)存分配;對文件系統(tǒng)進(jìn)行初始化;建立init進(jìn)程。 init進(jìn)程對每一個聯(lián)機(jī)終端建立“getty”進(jìn)程,getty在終端上顯示“l(fā)ogin”,等待用戶登錄。105. 系統(tǒng)生成什么是系統(tǒng)生成所謂系統(tǒng)生成,就是指為了滿足物理設(shè)備的約束和需 要的系統(tǒng)功能,通過組裝一批模

6、塊來產(chǎn)生一個清晰的、 使用方便的操作系統(tǒng)的過程。系統(tǒng)生成的內(nèi)容根據(jù)硬件部件確定系統(tǒng)構(gòu)造的參數(shù),編輯系統(tǒng)模塊的 參數(shù),并且連接系統(tǒng)模塊成為一個可執(zhí)行的程序。操作系統(tǒng)的用戶接口用戶工作環(huán)境111. 作業(yè)與作業(yè)步作業(yè)計算機(jī)系統(tǒng)按指定步驟對初始數(shù)據(jù)進(jìn)行處理并得到計 算結(jié)果的加工工作。作業(yè)步加工工作中的一個步驟稱為作業(yè)步。2. 作業(yè)處理步驟編輯建立一個新文件,或?qū)σ延械奈募械腻e誤進(jìn)行修改。編譯將源程序翻譯成浮動的目標(biāo)代碼。 操作系統(tǒng)的用戶接口應(yīng)用程序的處理12連接主程序和其他所需要的子程序和例行程序連接裝配在一起,使之成為一個可執(zhí)行的、完整的主存映像文件。運行將主存映像文件調(diào)入主存,啟動運行,得出計算

7、結(jié)果。 作業(yè)步之間的關(guān)系每個作業(yè)步運行的結(jié)果產(chǎn)生下一個作業(yè)步所需要的文件;一個作業(yè)步能否正確地執(zhí)行,依賴于前一個作業(yè)步是否成功地完成。操作系統(tǒng)的用戶接口應(yīng)用程序的處理user.cuser.obj編輯運行編譯連接第一個作業(yè)步第二個作業(yè)步第三個作業(yè)步第四個作業(yè)步user.exe133. 連接類型靜態(tài)連接 一個源程序經(jīng)編譯后,生成一個可重定位的目標(biāo)模塊, 并產(chǎn)生內(nèi)部符號表和外部符號表,供連接程序 (Link)使用。內(nèi)部符號表本模塊可以被其他程序調(diào)用的入口點。外部調(diào)用表本模塊要調(diào)用的外部的程序模塊名。操作系統(tǒng)的用戶接口應(yīng)用程序的處理14連接需要做的工作將各模塊連接成為一個整體;構(gòu)造全程符號表,在其中填

8、寫模塊的邏輯地址;查找各程序段的外部調(diào)用表,填入對應(yīng)調(diào)用函數(shù)的地址。靜態(tài)連接的缺點靜態(tài)連接將所需的外部函數(shù)鏈接到目標(biāo)文件中形成 為一個可執(zhí)行文件。若多個應(yīng)用程序都調(diào)用了同一 個庫中的外部函數(shù),那么,應(yīng)用程序的目標(biāo)文件中 都包含了這個外部函數(shù)對應(yīng)的代碼。操作系統(tǒng)的用戶接口應(yīng)用程序的處理15動態(tài)邏輯 動態(tài)連接不需要將外部函數(shù)鏈接到目標(biāo)文件中。而是在應(yīng) 用程序中需要調(diào)用外部函數(shù)的地方作記錄,并說明要使用 的外部函數(shù)名和引用入口號。 形成函數(shù)調(diào)用鏈表 所需支持 DLL (動態(tài)鏈接庫) 當(dāng) Windows的裝載程序?qū)?yīng)用程序和DLL裝入主存后,裝 載程序會遍歷函數(shù)調(diào)用鏈表,將DLL中函數(shù)在主存的入口 (

9、段:偏移)填入鏈表中的每個結(jié)點。操作系統(tǒng)的用戶接口應(yīng)用程序的處理161. 什么是操作系統(tǒng)的用戶界面操作系統(tǒng)的用戶界面 (或稱接口) 是操作系統(tǒng)提供給用戶與 計算機(jī)打交道的外部機(jī)制。用戶能夠借助這種機(jī)制和系統(tǒng) 提供的手段來控制用戶所在的系統(tǒng)。 操作系統(tǒng)的用戶接口用戶接口 操 作 系 統(tǒng)172. 操作系統(tǒng)提供的用戶界面操作界面(命令接口) 用戶使用這個操作界面來組織工作流程和控制程序的運行。 系統(tǒng)功能服務(wù)界面(程序接口) 用戶程序在其運行過程中,使用系統(tǒng)功能調(diào)用來請求操作 系統(tǒng)的服務(wù)。操作系統(tǒng)的用戶接口用戶接口 操作命令: 作業(yè)控制語言 鍵盤命令 圖形界面 操 作 系 統(tǒng)系統(tǒng)功能調(diào)用183. 操作

10、命令與操作系統(tǒng)類型的關(guān)系作業(yè)控制語言 批處理操作系統(tǒng)鍵盤命令 分時操作系統(tǒng) 個人計算機(jī)操作系統(tǒng) 圖形用戶界面 分時操作系統(tǒng) 個人計算機(jī)操作系統(tǒng) 操作系統(tǒng)的用戶接口用戶接口實際操作系統(tǒng): MS-DOS Windows Linux (UNIX)提供什么樣的用戶界面?194. 實例操作系統(tǒng)提供的用戶界面MS-DOS 鍵盤命令 系統(tǒng)功能調(diào)用Windows 圖形用戶界面 系統(tǒng)功能調(diào)用 Linux (UNIX) 鍵盤命令 (XWindow) 系統(tǒng)功能調(diào)用操作系統(tǒng)的用戶接口用戶接口205. 系統(tǒng)功能調(diào)用操作系統(tǒng)的用戶接口用戶接口 操作如何為用戶提供服務(wù) 操作系統(tǒng)提供實現(xiàn)各種功能的例行子程序。應(yīng)用程序 i 系

11、統(tǒng)調(diào)用 中 央處理機(jī)存儲器外 部設(shè) 備應(yīng) 用程 序計算機(jī)系統(tǒng)部件21操作系統(tǒng)的用戶接口用戶接口 如何調(diào)用操作服務(wù)功能 ? 采用統(tǒng)一進(jìn)管方式 系統(tǒng)提供 訪管指令、訪管中斷 顯示一個字符串讀文件 應(yīng)用程序 j read( ); 操作系統(tǒng)統(tǒng)功能模塊 訪管指令(自愿進(jìn)管指令) svc n svc 表示機(jī)器訪管指令的操作碼記憶符,n為地址碼(功能號)22操作系統(tǒng)的用戶接口用戶接口 訪管中斷 當(dāng)處理機(jī)執(zhí)行到訪管指令時就發(fā)生中斷,該中斷稱為訪管中斷,它表示 正在運行的程序?qū)Σ僮飨到y(tǒng)的某種需求。 操作系統(tǒng)提供實現(xiàn)各種功能的例行子程序,其中的每一個功能對應(yīng)訪管 指令的一個功能號。 svc 0 顯示一個字符 sv

12、c 1 打印一個字符串 什么是系統(tǒng)調(diào)用 系統(tǒng)功能調(diào)用是用戶在程序一級請求操作系統(tǒng)服務(wù)的一種手段,它是 帶有一定功能號的“訪管指令”。其功能是由操作系統(tǒng)中的程序完成 的,即由軟件方法實現(xiàn)的。23操作系統(tǒng)的用戶接口用戶接口 系統(tǒng)調(diào)用的實現(xiàn) a1a0ai例行子程序入口地址表A+0A+1A+i保護(hù)現(xiàn)場;取n值;按n值轉(zhuǎn)移; 恢復(fù)現(xiàn)場;訪管中斷處理程序 svc i 用戶程序+ASub mam例行子程序Sub 0Sub 1Sub ia0a1ai241. Linux系統(tǒng)功能調(diào)用的過程在Linux系統(tǒng)中,系統(tǒng)調(diào)用通過異常類型實現(xiàn);當(dāng)執(zhí)行了int 0 x80指令而發(fā)生的軟件中斷;系統(tǒng)自動將用戶態(tài)切換為核心態(tài)來處

13、理該事件,執(zhí)行自陷處理程序(系統(tǒng)調(diào)用處理程序)。 操作系統(tǒng)的用戶接口Linux系統(tǒng)功能調(diào)用25系統(tǒng)功能調(diào)用過程操作系統(tǒng)的用戶接口Linux系統(tǒng)功能調(diào)用 abc(); abc(); syscall; system_call: sys_abc SYSEXITsysabc() 用戶態(tài)核心態(tài)用戶程序系統(tǒng)調(diào)用 在libc標(biāo)準(zhǔn)庫中的封裝例程系統(tǒng)調(diào)用處理程序系統(tǒng)調(diào)用服務(wù)例程26例:getuid系統(tǒng)調(diào)用過程 操作系統(tǒng)的用戶接口Linux系統(tǒng)功能調(diào)用int main() getuid(); int getuid(void) long_res; int $0 x80; ENTRY(system_call) pus

14、hl % esx SAVE_ALL GET_CURRENT(%ebx) call sys_getuid16 RESTORE_ALLasmlinkage longsys_getuid16(void) return high2lowuid (current_uid);用戶程序系統(tǒng)調(diào)用處理程序標(biāo)準(zhǔn)C庫內(nèi)核例程272. Linux系統(tǒng)功能調(diào)用的實現(xiàn)機(jī)制Linux系統(tǒng)調(diào)用的進(jìn)入Linux系統(tǒng)的軟中斷指令是int 0 x80匯編語言指令該指令的執(zhí)行會發(fā)生中斷處理機(jī)的狀態(tài)由用戶態(tài)自陷到內(nèi)核態(tài)從system_call()開始執(zhí)行系統(tǒng)調(diào)用處理程序。當(dāng)系統(tǒng)調(diào)用處理完畢后,通過iret匯編語言指令返回到 用戶態(tài)。操

15、作系統(tǒng)的用戶接口Linux系統(tǒng)功能調(diào)用28系統(tǒng)調(diào)用號linux中,每個系統(tǒng)調(diào)用被賦予一個唯一的系統(tǒng)調(diào)用號; 系統(tǒng)調(diào)用號定義在include/asm-i386/unistd.h頭文件中。 系統(tǒng)調(diào)用號格式如下: #define _NR_restart_syscall 0 #define _NR_exit 1 #define _NR_fork 2 #define _NR_read 3 #define _NR_write 4 #define _NR_open 5 #define _NR_mq_getsetattr 282 操作系統(tǒng)的用戶接口Linux系統(tǒng)功能調(diào)用29系統(tǒng)調(diào)用表系統(tǒng)調(diào)用表記錄了內(nèi)核中所有

16、已注冊過的系統(tǒng)調(diào)用, 它是系統(tǒng)調(diào)用的跳轉(zhuǎn)表。 系統(tǒng)調(diào)用表是一個函數(shù)指針數(shù)組,表中依次保存所有 系統(tǒng)調(diào)用的函數(shù)指針Linux系統(tǒng)調(diào)用表保存在arch/i386/kernel/下的entry.S中操作系統(tǒng)的用戶接口Linux系統(tǒng)功能調(diào)用30系統(tǒng)調(diào)用表格式如下 ENTRY(sys_call_table) .long sys_restart_syscall /* 0 */ .long sys_exit /* 1 */ .long sys_fork /* 2 */ .long sys_read /* 3 */ .long sys_write /* 4 */ .long sys_open /* 5 */

17、.long sys_mq_getsetattr /* 282 */ 操作系統(tǒng)的用戶接口Linux系統(tǒng)功能調(diào)用31系統(tǒng)調(diào)用處理程序 系統(tǒng)調(diào)用處理程序是system_call(),主要工作如下宏SAVE_ALL保護(hù)現(xiàn)場; 正確性檢查 ;依eax中所包含的系統(tǒng)調(diào)用號,調(diào)用其對應(yīng)的服務(wù)例 程;系統(tǒng)服務(wù)例程結(jié)束時,通過宏RESTORE_ALL恢復(fù)寄 存器;最后通過iret指令返回。 操作系統(tǒng)的用戶接口Linux系統(tǒng)功能調(diào)用323. 增加一個新的系統(tǒng)功能調(diào)用的方法添加新的服務(wù)例程 在/usr/src/linux/kernel/sys.c文件中增加一個新的函數(shù), 該函數(shù)的名字是sys_mysyscall 例

18、:一個簡單的系統(tǒng)調(diào)用,其功能是返回一個整型值 asmlinkage int sys_mycall(int number) return number; 操作系統(tǒng)的用戶接口Linux系統(tǒng)功能調(diào)用33增加新的系統(tǒng)功能調(diào)用號 在文件include/asm-i386/unistd.h中添加一項 #define _NR_mysyscall XXXX為新增加的系統(tǒng)調(diào)用號,此數(shù)字選一未用值。例: #define _NR_restart_syscall 0 #define _NR_exit1 #define _NR_mq_getsetattr 282 #define _NR_mysyscall 283 操作系統(tǒng)的用戶接口Linux系統(tǒng)功能調(diào)用34修改系統(tǒng)調(diào)用表 在文件/arch/i386/kernel/entry.S中的系統(tǒng)調(diào)用表sys_call_table中添加新增的系統(tǒng)調(diào)用sys_call_table數(shù)組包含指向內(nèi)核中每個系統(tǒng)調(diào)用的指針例: ENTRY(sys_call_table) .long sys_restart_syscall /* 0 */ .long sys_exit /* 1 */ .long sys_mq_getsetattr /* 282 */ .long s

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論