




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、前前 序序 UNIX系統(tǒng)1969年誕生,以其特有的簡潔性和開放性獲得贊同與青睞,已經(jīng)被移植到數(shù)十種硬件平臺上。 UNIX系統(tǒng)已遠(yuǎn)遠(yuǎn)超出一個OS軟件所起的作用,它在方方面面潛移默化地影響著人們對軟件的設(shè)計和開發(fā),其蘊含的設(shè)計思想至今仍然是十分值得借鑒的。第1頁/共50頁 已有技術(shù)的精選、提煉和發(fā)展,簡潔實用,短小精悍,功能強大 具有分層、可裝卸的文件卷系統(tǒng) 任何一個程序可不加改變地在前臺/后臺異步運行 將文件、目錄和設(shè)備均統(tǒng)一看作文件 提供I/O緩沖技術(shù) 提供功能完備、使用靈活的命令語言 豐富的核外系統(tǒng)程序 采用高級語言編寫,可移植性好第2頁/共50頁進程控制子系統(tǒng)進程通信調(diào) 度存儲管理文件子系
2、統(tǒng)文件子系統(tǒng)高速緩存字符設(shè)備塊設(shè)備設(shè)備驅(qū)動程序系統(tǒng)調(diào)用接口硬件控制庫函數(shù)用戶程序核心級核心級用戶級用戶級第3頁/共50頁 以UNIX V6為例,其內(nèi)核源程序約一萬行,按編譯方式大致分3類44個文件: .c文件:28個文件,190個可單獨編譯的子程序 .h文件:全局變量,14個文件 .s文件:匯編程序文件,約1000條,2個文件33個子程序第4頁/共50頁 PDP-11程序狀態(tài)字組成當(dāng)前態(tài)以前態(tài)優(yōu)先級/8級TNZVCn進程分Kernel/User 2種運行狀態(tài),區(qū)別n進程處于不同地址空間:核心態(tài)/用戶態(tài)空間n可否執(zhí)行特權(quán)指令n使用不同的棧頂指針寄存器r6第5頁/共50頁 通用寄存器 PDP-11
3、/40有9個通用寄存器,長度16位,編號r0-r7 r0-r1:I/O參數(shù)傳遞 r2-r4:存放過程執(zhí)行時的局部變量 r5:環(huán)境指針 r6:堆棧指針,kernel/user態(tài)各1個 r7:PC第6頁/共50頁 進程是映像的執(zhí)行 映像是計算機的執(zhí)行環(huán)境,一個映像包括 存儲映像 通用寄存器的值 打開文件的狀態(tài) 當(dāng)前目錄 其他信息第7頁/共50頁 進程映像中最為關(guān)鍵的部分是存儲映像。 存儲映像由5部分組成: 進程控制塊PCB 共享正文段 數(shù)據(jù)段 共享內(nèi)存段 工作區(qū)第8頁/共50頁進程控制塊進程控制塊PCBPCB Unix為了節(jié)省PCB所占主存,PCB分為2部分 常駐內(nèi)存部分:Proc結(jié)構(gòu)。包含進程調(diào)
4、度必須的信息; 非常駐內(nèi)存部分: User結(jié)構(gòu)。包含進程運行時才要用到的更多其他信息,它隨用戶程序和數(shù)據(jù)部分換進/換出主存。 User區(qū)的字段只能由正在運行的進程存取。即只有占用CPU的進程才能訪問屬于當(dāng)前進程的私有User區(qū)。 整個系統(tǒng)有一個進程表,稱為Proc數(shù)組。Unix系統(tǒng)最多有50個進程; 每個進程有專用的User區(qū),但核心根據(jù)進程頁表,通過地址映射機構(gòu),可訪問當(dāng)前進程的User區(qū)。(好像系統(tǒng)中僅有一個User區(qū))第9頁/共50頁共享正文段共享正文段 是指可由多個進程共享的區(qū)域,包括 純代碼形式的程序 參數(shù) 一個進程的正文段也可以不存在第10頁/共50頁數(shù)據(jù)段數(shù)據(jù)段 指進程執(zhí)行時用到
5、的數(shù)據(jù),包括 外部變量 靜態(tài)局部變量 常數(shù) 如果進程執(zhí)行的程序為非共享的,也可以構(gòu)成數(shù)據(jù)段的一部分,可被用戶態(tài)進程讀、寫、執(zhí)行第11頁/共50頁工作區(qū)工作區(qū) 進程的用戶棧和核心棧分別為進程用戶態(tài)和核心態(tài)下運行的工作區(qū) 用于函數(shù)調(diào)用時的常數(shù)傳遞,現(xiàn)場保留,返回地址保存,局部變量存儲等第12頁/共50頁進程映像在存儲器中的分布進程映像在存儲器中的分布 PDP-11/40最多配置248K內(nèi)存,進程映像分為常駐/非常駐內(nèi)存部分 常駐部分:Proc,共享正文段的控制信息塊 非常駐部分:數(shù)據(jù)段,共享正文段,工作區(qū)。 Unix將除了共享正文段以外的其他部分作為一個整體處理,(結(jié)構(gòu)見下頁) 無論在主存還是在盤
6、交換區(qū),該部分占用連續(xù)存儲區(qū) 作為整體入/出主存 Unix設(shè)置text數(shù)組(共40個元素)管理所有可共享正文段,表目內(nèi)容主要有:共享正文段外存地址,段長度,共享該段的進程數(shù)等第13頁/共50頁非常駐部分的分布結(jié)構(gòu)非常駐部分的分布結(jié)構(gòu) ppda區(qū)只有核心態(tài)進程可以訪問User結(jié)構(gòu)系統(tǒng)棧區(qū)用戶程序/數(shù)據(jù)段用戶棧區(qū)底部底部/02891024頂部頂部進程數(shù)據(jù)區(qū)/ppdaPer Process Data Area第14頁/共50頁進程的數(shù)據(jù)結(jié)構(gòu)進程的數(shù)據(jù)結(jié)構(gòu) Struct proc (主要部分) int p-pid; /*唯一標(biāo)識一個進程的整數(shù):0 215-1 int p-ppid; /*父進程標(biāo)識數(shù)
7、char p-uid; /*用戶標(biāo)識符UID,由高級用戶分配 char p-stat; /*進程當(dāng)前狀態(tài) char p-flag; /*表示進程映像是否在主存/盤交換區(qū) char p-pri; /*-100+127。值越小,優(yōu)先權(quán)越高 char p-time; /*調(diào)度駐留時間:進程映像最近一次入/出主存后的時間 char p-cpu /*CPU使用情況 char p-nice; /*偏置值:計算進程優(yōu)先權(quán)時使用,可由用戶設(shè)置 char p-sig; /*進程接收的信號類型數(shù):0 19,0 13系統(tǒng)定義 int p-addr; /*ppda區(qū)的起址(單位是字符塊數(shù)):內(nèi)存64B/塊,外存512
8、B/塊 int p-size; /*除共享正文段外,可交換映像長度 int p-wchan; /*睡眠原因:原因消失,則喚醒 int p-textp; /*指向text結(jié)構(gòu)的指針 procNproc ; /* Nproc是系統(tǒng)可容納的最大進程數(shù)/50第15頁/共50頁進程的數(shù)據(jù)結(jié)構(gòu)進程的數(shù)據(jù)結(jié)構(gòu) 每個進程User結(jié)構(gòu)的虛擬起始地址都是u=14000。操作系統(tǒng)通過編譯、鏈接給u變量賦值,其地址空間對應(yīng)核心空間第7頁,其物理地址可以映射到主存中各進程的user結(jié)構(gòu)。 User結(jié)構(gòu)含有當(dāng)進程換出內(nèi)存候不需要訪問的所有數(shù)據(jù)第16頁/共50頁進程的數(shù)據(jù)結(jié)構(gòu)進程的數(shù)據(jù)結(jié)構(gòu) Struct user (主要部
9、分) int u-rsav2; /*調(diào)度進程的正常保留區(qū):r5,r6 int u-qsav2; /*中止系統(tǒng)調(diào)用的越級返回保留區(qū) int u-ssav2; /*fork時恢復(fù)子進程運行的保留區(qū) char u-segflg; /*I/O標(biāo)志,0/1/2分別為:用戶數(shù)據(jù)/系統(tǒng)/用戶指令空間 char u-error; /*出錯返回碼 char u-uid; /*有效用戶標(biāo)識號 char u-gid; /*有效用戶組標(biāo)識號 char u-ruid /*實際用戶標(biāo)識號 char u-rgid; /*實際用戶組標(biāo)識號 int u-procp; /*指向本進程的proc結(jié)構(gòu)指針 char *u-base;
10、 /*I/O基址,文件傳輸中表示主存地址,R/W-目標(biāo)/信息源指針 char *u-count; /* I/O字節(jié)數(shù) char *u-offset2; /*文件傳輸中表示文件內(nèi)相對位移量(字節(jié)) char *u-cdir; /*當(dāng)前目錄項i節(jié)點指針 char u-dbufDIRSIZE; /*保留當(dāng)前用到的文件路徑名 char *u-dirp; /*當(dāng)前目錄文件名指針第17頁/共50頁進程的數(shù)據(jù)結(jié)構(gòu)進程的數(shù)據(jù)結(jié)構(gòu) Struct int u-ino /* i結(jié)點號 /*該結(jié)構(gòu)保存一個文件目錄項 char u-nameDIRSIZE; /*該文件路徑名分量 u-dent; int *u-pdir;
11、 /*父目錄項i結(jié)點指針 char u-uisa16; /*存放本進程用戶空間地址寄存器內(nèi)容 char u-uisd16; /*存放本進程用戶空間說明寄存器內(nèi)容 char u-ofileNOFILE; /*用戶打開文件表,共15個表目 char u-arg5; /*用戶傳入的自變量 char u-tsize /*本進程正文段塊數(shù) char u-dsize; /*本進程數(shù)據(jù)段塊數(shù) int u-ssize; /*本進程堆棧段塊數(shù) char u-signalNSIG; /*軟中斷處理程序入口表,20個表目 char u-utime; /*進程用戶態(tài)下運行時間 char u-stime; /*進程核心
12、態(tài)下運行時間 char u-cutime; /*已中止子進程用戶態(tài)下運行時間總和 char u-cstime; /*已中止子進程核心態(tài)下運行時間總和 char u-intflag; /*系統(tǒng)調(diào)用是否執(zhí)行完成標(biāo)志u;第18頁/共50頁進程的數(shù)據(jù)結(jié)構(gòu)進程的數(shù)據(jù)結(jié)構(gòu) Struct text int x-daddr; /*共享正文段在盤交換區(qū)的起始地址 int x-caddr; /*共享正文段在內(nèi)存中的起始塊號(*64=起始地址) int x-size; /*共享正文段長度 char x-count /*共享該正文段的進程數(shù) char x-ccount; /*共享該正文段,且映像在內(nèi)存的進程數(shù) int
13、 *x-iptr; /*指向正文段所在文件的inode指針 textNTEXT; 一般NTEXT=40 如果有某正文段的共享進程映像在內(nèi)存中,則該共享正文段一定在內(nèi)存中第19頁/共50頁進程映像的基本結(jié)構(gòu)圖進程映像的基本結(jié)構(gòu)圖p-addrp-sizep-textpx-daddrx-caddrx-iptr 共享共享正文段正文段 user核心棧核心棧數(shù)據(jù)段數(shù)據(jù)段用戶棧用戶棧ppdau-dsizeu-ssizeProctextfileinode盤交換區(qū)P-sizex-sizeProcntextm第20頁/共50頁進程的狀態(tài)進程的狀態(tài) 進程在其生命周期的不同時刻有不同狀態(tài);同一時刻不同進程有不同狀態(tài)
14、Unix系統(tǒng)中,進城的完整狀態(tài)有9種。 (轉(zhuǎn)換圖見下一頁) 創(chuàng)建狀態(tài) 內(nèi)存就緒 就緒且換出:新創(chuàng)建/原就緒進程,因內(nèi)存緊張而換出 核心態(tài)執(zhí)行 用戶態(tài)執(zhí)行 內(nèi)存中睡眠:執(zhí)行I/O操作進程,等待 睡眠且換出:內(nèi)存緊張時,睡眠進程首先被換出 被剝奪狀態(tài):進程被調(diào)度程序剝奪了處理機后的狀態(tài) 僵死狀態(tài):類似于中止?fàn)顟B(tài)第21頁/共50頁進程狀態(tài)轉(zhuǎn)換圖進程狀態(tài)轉(zhuǎn)換圖被剝奪被剝奪485926371內(nèi)存內(nèi)存外存外存盤交換區(qū)盤交換區(qū)內(nèi)存足內(nèi)存足內(nèi)存不足內(nèi)存不足調(diào)度調(diào)度exit中斷中斷/返回返回中斷中斷返回返回返回用戶態(tài)返回用戶態(tài)睡眠睡眠/喚醒喚醒睡眠睡眠fork調(diào)度調(diào)度調(diào)度調(diào)度喚醒喚醒被剝被剝奪態(tài)奪態(tài)第22頁/共
15、50頁進程狀態(tài)轉(zhuǎn)換說明進程狀態(tài)轉(zhuǎn)換說明 進程執(zhí)行系統(tǒng)調(diào)用、I/O終端、時鐘中斷后,進入核心態(tài)運行。2種不同狀態(tài)運行的主要差別: 進程訪問的內(nèi)存空間的對象受到限制。 核心態(tài)運行時,不允許被剝奪;而用戶態(tài)運行可以被剝奪(核心態(tài)運行完成,欲返回用戶態(tài)時可被剝奪);核心態(tài)運行時,可被高優(yōu)先級核心態(tài)進程中斷。 就緒與被剝奪(preempted)狀態(tài)是等效的,他們在同一隊列等待再次調(diào)度 處于運行狀態(tài)的進程包括:正在處理機上執(zhí)行和就緒隊列進程 第23頁/共50頁進程上下文進程上下文 進程上下文由三部分組成: 用戶級上下文:正文,數(shù)據(jù),堆棧,共享內(nèi)存段 寄存器上下文: PC,PS,SP,r0, 系統(tǒng)級上下文:
16、Proc,User,核心棧 上下文切換時,要保證內(nèi)部數(shù)據(jù)的完整性和一致性。所以切換有嚴(yán)格的條件: 當(dāng)進程是自己進入睡眠時 系統(tǒng)調(diào)用/中斷完成返回用戶態(tài)而被剝奪 以exit退出時Q:進程從用戶態(tài)到核心態(tài)切換時,是否為上下文切換?第24頁/共50頁進程管理進程管理 Unix V6中進程的調(diào)度狀態(tài)有6種,由p-stat描述。 1 SSLEEP:高優(yōu)先權(quán)睡眠狀態(tài) 2 SWAIT: 低優(yōu)先權(quán)睡眠狀態(tài) 3 SRUN: 運行/可運行狀態(tài) 4 SIDL: 創(chuàng)建子進程的中間狀態(tài) 5 SZOMB:進程終止時的中間狀態(tài) 6 SSTOP: 暫停/正被跟蹤狀態(tài)第25頁/共50頁進程管理進程管理 進程標(biāo)志p-flag定義
17、為: #define SLOAD 01 映像在內(nèi)存 #define SSYS 02 系統(tǒng)進程,應(yīng)常駐內(nèi)存 #define SLOCK 04 進程不能換出 #define SSWAP 010 進程正被對換 #define STRC 020 進程正被跟蹤 #define STWED 040 另一跟蹤標(biāo)志第26頁/共50頁進程管理進程管理 當(dāng)前運行進程,特點: P-stat 為SRUN P-flag 包含SLOAD標(biāo)志 KISA6,KISD6指向該進程ppda區(qū) 可以在核心/用戶態(tài)運行,所處存儲區(qū)位置不同 就緒進程,特點: P-stat 為SRUN P-flag 可能包含SLOAD標(biāo)志,也可能不包含
18、 ppda區(qū)不是核心態(tài)第6頁 運行-就緒通過系統(tǒng)進程swtch完成,所以轉(zhuǎn)換首先一定是處于核心態(tài)第27頁/共50頁進程管理進程管理 等待時間發(fā)生而停止運行的一種狀態(tài),特點: P-stat 為SSLEEP或SWAIT,不參與競爭處理機 P-flag 可能包含SLOAD標(biāo)志,也可能不包含 KISA6,KISD6不反映進程圖像在內(nèi)存的位置 睡眠原因:進程間同步與互斥引起 使用互斥資源無法滿足 同步等待I/O結(jié)束 同步等待出現(xiàn)處理對象,如0#進程/sched暫時沒有處理對象 進程間的其他同步操作,sleep(),wait(). 臨界區(qū)互斥第28頁/共50頁進程管理進程管理 核心態(tài)下執(zhí)行sleep進入睡
19、眠狀態(tài) P-pri由系統(tǒng)按照睡眠原因設(shè)置,-100-+127 SSLEEP: P-pri0,低優(yōu)先權(quán)睡眠 父子進程同步:40 等低速設(shè)備I/O:10-20 喚醒:wakeup程序完成,喚醒后P-pri127) p=127; if (pcurpri) runrun+; /*curpri:現(xiàn)行運行進程被調(diào)度占用處理機時的優(yōu)先數(shù) /*runrun:進程調(diào)度標(biāo)志,為0表示不要求進行切換調(diào)度 ppp-pri=p;第33頁/共50頁進程調(diào)度算法進程調(diào)度算法 P-nice反映進程具有的相對優(yōu)先程度 一般用戶可設(shè)置范圍:020;高級用戶:-12820 通過系統(tǒng)調(diào)用nice(priority)完成設(shè)置,代碼:
20、register n; n=u.uar0R0; /* u.uar0R0保存系統(tǒng)調(diào)用參數(shù) if (n20) n=20; if (n0低優(yōu)先權(quán) 主要工作: 設(shè)置欲睡眠進程的p-whan/原因,p-stat,p-pri,并調(diào)用swtch進行調(diào)度 rpp-wchan=chan; rpp-stat=SSLEEP/SWAIT; rpp-pri=pri 設(shè)置過程執(zhí)行語句為臨界區(qū),執(zhí)行前處理既優(yōu)先級提高為6級(避免中斷)第41頁/共50頁進程睡眠進程睡眠sleep() 說明 若進程欲進入低優(yōu)先權(quán)睡眠,首先應(yīng)檢測是否收到不可忽略的信號p-flag。如果收到,先轉(zhuǎn)去執(zhí)行信號處理程序; 系統(tǒng)設(shè)置runrun標(biāo)志,說
21、明是否有在盤交換區(qū)的進程準(zhǔn)備就緒而因內(nèi)存不足無法進入。 若runrun已經(jīng)設(shè)置,則將低優(yōu)先級睡眠進程入盤交換區(qū),并調(diào)用sched.第42頁/共50頁睡眠喚醒睡眠喚醒wakeup() wakeup(chan)喚醒因chan原因睡眠的進程,并將其狀態(tài)置為SRUN 主要工作:搜索proc區(qū),由setrun喚醒所有因chan睡眠的進程:p-wchan=0;p-stat=SRUN 說明: 系統(tǒng)設(shè)置runout標(biāo)志,表示盤交換區(qū)無進程圖像可入內(nèi)存。若runout=1,則執(zhí)行sched的0#進程睡眠,否則喚醒。第43頁/共50頁進程圖像在內(nèi)存進程圖像在內(nèi)存/盤交換區(qū)間傳遞盤交換區(qū)間傳遞 圖像傳遞由0#進程調(diào)
22、用sched完成 圖像入內(nèi)存算法:sched按照盤交換區(qū)中就緒進程p-time,從長到短逐個調(diào)入內(nèi)存,直到全部調(diào)入,或者無足夠內(nèi)存 圖像出內(nèi)存算法:若調(diào)入進程因內(nèi)存不足無法調(diào)入時,sched試圖從內(nèi)存調(diào)出一進程,然后再次執(zhí)行調(diào)入操作。第44頁/共50頁調(diào)出算法考慮因素調(diào)出算法考慮因素 某些進程不應(yīng)該被調(diào)出: P-flag為SSYS和SLOCK的進程 優(yōu)先調(diào)出:p-stat為SWAIT和SSTOP的進程。 若上述優(yōu)先進程,則優(yōu)先考慮: p-stat為SSLEEP或SRUN中在內(nèi)存駐留時間最長/p-time的進程。 同時要求:內(nèi)存被選中進程p-time2s 盤交換區(qū)欲入內(nèi)存進程p-time3s 否則,不執(zhí)行調(diào)出操作第45頁/共50頁進程的創(chuàng)建進程的創(chuàng)建 Unix進程創(chuàng)建有2種方式 預(yù)置方式:系統(tǒng)初啟時預(yù)置0 # , 0 #進程創(chuàng)建1 #進程,1 #進程又為每個終端生成一個子進程(p20、p21、p2m) 創(chuàng)建方式:由newproc/ fork創(chuàng)建
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國企個人投資入股協(xié)議書
- 合伙人銷售人合同范本
- 個人房屋拆除合同范本
- 寺廟油漆施工合同范本
- 婆婆搶媳婦協(xié)議書
- 離婚前家產(chǎn)協(xié)議書
- 子公司設(shè)立協(xié)議書
- 植保機買賣協(xié)議書
- 續(xù)訂勞動合同續(xù)協(xié)議書
- 皇帝柑訂購協(xié)議書
- 酒駕延緩處罰申請書
- 2023年國家開放大學(xué)《財務(wù)報表分析》形成性考核(1-4)試題答案解析
- 2022年1月福建化學(xué)會考試卷
- 2023年貴州省遵義市中考地理試卷真題(含答案)
- 幼兒園故事課件:《小馬過河》
- 物料提升機基礎(chǔ)專項施工方案正文
- 工程機械管理制度
- 廣東省勞動合同電子版(六篇)
- 對話大國工匠-致敬勞動模范期末考試答案
- 中央空調(diào)多聯(lián)機安裝規(guī)范
- 2023年安全制度-城市客運企業(yè)主要負(fù)責(zé)人和安全生產(chǎn)管理人員安全考核基礎(chǔ)題庫(城市軌道交通)考試歷年真題(精準(zhǔn)考點)帶答案
評論
0/150
提交評論