freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

操作系統(tǒng)教程-第八章linux系統(tǒng)(編輯修改稿)

2025-02-13 12:49 本頁面
 

【文章內(nèi)容簡介】 r加上 1000。 ? 當前進程 (Current process)調(diào)度是由當調(diào)度其它進程占用 CPU時,根據(jù)調(diào)度策略對當前進程進行一些處理,修改其狀態(tài),并插入相應(yīng)的隊列。 操作系統(tǒng)教程課件 第 46頁 機械工業(yè)出版社 進程調(diào)度的時機 ? Linux中采用的是非剝奪調(diào)度的機制,進程一旦運行就不能被停止,當前進程必須等待某個系統(tǒng)事件時,它才釋放 CPU。 ? 調(diào)用 Schedule()的函數(shù)進行進程調(diào)度的時機: ? ①、時間片完,當前進程的時間片用完時 (currentcounter=0) ? ②、進程狀態(tài)轉(zhuǎn)換,進程要調(diào)用 sleep()或 exit()等函數(shù)進行狀態(tài)轉(zhuǎn)換,這些函數(shù)會主動調(diào)用調(diào)度程序進行進程調(diào)度 ? ③、執(zhí)行設(shè)備驅(qū)動程序,當設(shè)備驅(qū)動程序執(zhí)行長而重復(fù)的任務(wù)時,直接調(diào)用調(diào)度程序。在每次反復(fù)循環(huán)中,驅(qū)動程序都檢查need_resched的值,如果必要,則調(diào)用調(diào)度程序 schedule()主動放棄 CPU ? ④、進程從中斷,異?;蛳到y(tǒng)調(diào)用返回到用戶態(tài),不管是從中斷,異常還是系統(tǒng)調(diào)用返回,最終都調(diào)用 ret_from_sys_call(),由這個函數(shù)進行調(diào)度標志的檢測,如果必要,則調(diào)用調(diào)度程序。 操作系統(tǒng)教程課件 第 47頁 機械工業(yè)出版社 調(diào)度策略 ? Linux系統(tǒng)針對不同類別的進程提供了三種不同的調(diào)度策略: ? SCHED_FIFO ? SCHED_RR ? SCHED_OTHER 操作系統(tǒng)教程課件 第 48頁 機械工業(yè)出版社 ? SCHED_FIFO適合于實時進程,它們對時間性要求比較強,而每次運行所需的時間比較短,一旦這種進程被調(diào)度開始運行后,就要一直運行到自愿讓出 CPU,或者被優(yōu)先權(quán)更高的進程搶占其執(zhí)行權(quán)為止。 ? SCHED_RR對應(yīng)“時間片輪轉(zhuǎn)法”,適合于每次運行需要較長時間的實時進程。一個運行進程分配一個時間片 (如200毫秒 ),當時間片用完后, CPU被另外進程搶占,而該進程被送回相同優(yōu)先級隊列的末尾。 ? SCHED_OTHER是傳統(tǒng)的 Unix調(diào)度策略,適合于交互式的分時進程。這類進程的優(yōu)先權(quán)取決于兩個因素,一個因素是進程剩余時間配額,如果進程用完了配給的時間,則相應(yīng)優(yōu)先權(quán)為 0;另一個是進程的優(yōu)先數(shù) nice,這是從Unix系統(tǒng)沿襲下來的方法,優(yōu)先數(shù)越小,其優(yōu)先級越高。 操作系統(tǒng)教程課件 第 49頁 機械工業(yè)出版社 進程的通信機制 ? 信號 ? 管道 ? 消息隊列 ? 信號量 ? 共享存儲區(qū) ? System V IPC機制 操作系統(tǒng)教程課件 第 50頁 機械工業(yè)出版社 ? 進程通信是指進程之間的信息交換。操作系統(tǒng)隱藏了進程通信的實現(xiàn)細節(jié),即對用戶來說是透明的。 ? Linux操作系統(tǒng)支持以下幾種進程間通信的機制: ? 信號 (Signals) ? 管道 (Pipe) ? 命名管道 (Named Pipe) ? System V的 IPC機制 (包括信號量 (Semaphore),消息隊列機制 (Message Queues Mechanism),共享內(nèi)存(Shared Memory)) ? 以及本文未介紹的用于網(wǎng)絡(luò)通信的套節(jié)字機制 (Sockets Mechanism)和全雙工管道機制。 操作系統(tǒng)教程課件 第 51頁 機械工業(yè)出版社 信號 ? 信號是由 UNIX System V(一個重要的 UNIX版本 )首先引入的,但不夠可靠。 ? 目前所有的 Linux內(nèi)核的信號機制都和 Posix( Portable Operating System Interface of Unix)兼容。 ? 信號 (Signal)是一種軟件機制,它報告與程序相關(guān)的軟件和硬件事件。主要有同步事件 (或稱信號異常 )和異步事件(即異步 I/O的完成信號或從另一個進程來的 kill信號 )。 ? 信號事件的發(fā)生有兩個來源: ? 硬件來源 (比如我們按下了鍵盤或者其它硬件故障 ); ? 軟件來源,包括一些非法運算等操作。最常用發(fā)送信號的系統(tǒng)函數(shù)是 kill, raise, alarm和 setitimer以及 sigqueue函數(shù) 操作系統(tǒng)教程課件 第 52頁 機械工業(yè)出版社 ? 在 Linux上可以實現(xiàn)任意多的信號,其中包括實時信號和普通信號。有關(guān)的Linux系統(tǒng)進程信號說明請參考表 82。 操作系統(tǒng)教程課件 第 53頁 機械工業(yè)出版社 表 82 Linux系統(tǒng)進程常見進程信號 標號 名稱 說明 默認操作 1 SIGHUP (Hangup)當你不再控制終端時內(nèi)核會產(chǎn)生該信號 ,或者當你關(guān)閉 Xterm或斷開 modem。 由于后臺程序沒有控制的終端 , 因而它們常用 SIGUP來發(fā)出需要重新讀取其配置文件的信號 。 (Abort)掛斷控制中斷或進程 。 2 SIGINT (Interrupt)來自鍵盤的終端 。 通常終端驅(qū)動程序會將其與 ^C( ctrl鍵和字母 C鍵的組合 ) 綁定 。 (Abort)終止程序 。 3 SIGQUIT (Quit)來自鍵盤的終端 。 通常終端驅(qū)動程序會將其與^\( ctrl鍵和字母 \鍵的組合 ) 綁定 。 (Dump)程序被終止并產(chǎn)生 dump core文件 。4 SIGILL (Illegal Instruction)程序出錯或者執(zhí)行了一個非法的操作指令 。 (Dump)程序被終止并產(chǎn)生 dump core文件 。5 SIGTRAP (Breakpoint/Trace Trap)調(diào)試用 , 跟蹤斷點 。 6 SIGABRT (Abort)放棄執(zhí)行 , 異常結(jié)束 。 (Dump)程序被終止并產(chǎn)生 dump core文件 。6 SIGIOT (IO Trap)同 SIGABRT (Dump)程序被終止并產(chǎn)生 dump core文件 。7 SIGUNUSED (Unused)沒有使用 。 操作系統(tǒng)教程課件 第 54頁 機械工業(yè)出版社 8 SIGFPE (Floating Point Exception)浮點異常 。 (Dump)程序被終止并產(chǎn)生 dump core文件 。 9 SIGKILL (Kill)程序被終止 。 該信號不能被捕獲或者被忽略 。 想立刻終止一個進程 , 就發(fā)送信號 9。 注意程序?qū)]有任何機會做清理工作 。 (Abort)程序被終止 。 10 SIGUSR1 (User defined Signal 1)用戶定義的信號 。 (Abort)進程被終止 。 11 SIGSEGV (Segmentation Violation)當程序引用無效的內(nèi)存時會產(chǎn)生此信號 。 比如:尋址沒有映射的內(nèi)存;尋址未許可的內(nèi)存 。 (Dump)程序被終止并產(chǎn)生 dump core文件 。 12 SIGUSR2 (User defined Signal 2)保留給用戶程序用于 IPC或其它目的 。 (Abort)進程被終止 。 13 SIGPIPE (Pipe)當程序向一個套接字或管道寫時由于沒有讀者而產(chǎn)生該信號 。 (Abort)進程被終止 。 14 SIGALRM (Alarm)該信號會在用戶調(diào)用 alarm系統(tǒng)調(diào)用所設(shè)置的延遲秒數(shù)到后產(chǎn)生 。 該信號常用判別于系統(tǒng)調(diào)用超時 。 (Abort)進程被終止 。 15 SIGTERM (Terminate)用于和善地要求一個程序終止 。 它是 kill的默認信號 。 與 SIGKILL不同 , 該信號能被捕獲 , 這樣就能在退出運行前做清理工作 。 (Abort)進程被終止 。 操作系統(tǒng)教程課件 第 55頁 機械工業(yè)出版社 16 SIGSTKFLT (Stack fault on coprocessor)協(xié)處理器堆棧錯誤 。 (Abort)進程被終止 。 17 SIGCHLD (Child)父進程發(fā)出 。 停止或終止子進程 。 可改變其含義挪作它用 。 (Ignore) 子進 程停 止或結(jié)束 。 18 SIGCONT (Continue)該信號致使被 SIGSTOP停止的進程恢復(fù)運行 。 可以被捕獲 。 (Continue) 恢 復(fù) 進 程的執(zhí)行 。 19 SIGSTOP (Stop)停止進程的運行 。 該信號不可被捕獲或忽略 。 (Stop)停止進程運行 。20 SIGTSTP (Terminal Stop)向終端發(fā)送停止鍵序列 。 該信號可以被捕獲或忽略 。 (Stop)停止進程運行 。21 SIGTTIN (Terminal Input on Background)后臺進程試圖從一個不再被控制的終端上讀取數(shù)據(jù) , 此時該進程將被停止 , 直到收到 SIGCONT信號 。 該信號可以被捕獲或忽略 。 (Stop)停止進程運行 。22 SIGTTOU (TTY Output on Background)后臺進程試圖向一個不再被控制的終端上輸出數(shù)據(jù) , 此時該進程將被停止 ,直到收到 SIGCONT信號 。 該信號可被捕獲或忽略 。 (Stop)停止進程運行 。操作系統(tǒng)教程課件 第 56頁 機械工業(yè)出版社 進程對信號的響應(yīng) ? 進程可以通過三種方式來響應(yīng)一個信號: ? ①忽略信號,即對信號不做任何處理,其中,有兩個信號不能忽略: SIGKILL及 SIGSTOP; ? ②捕捉信號。定義信號處理函數(shù),當信號發(fā)生時,執(zhí)行相應(yīng)的處理函數(shù); ? ③執(zhí)行默認操作, Linux對每種信號都規(guī)定了默認操作。注意,進程對實時信號的默認反應(yīng)是進程終止。 ? 一個進程如何處理收到的信號,有兩種做法: ? 一是程序的進程不去處理,此時該信號會由系統(tǒng)相應(yīng)的默認信號處理程序進行處理; ? 第二種做法是進程使用自己的信號處理程序來處理信號。 操作系統(tǒng)教程課件 第 57頁 機械工業(yè)出版社 ? 事實上在 Linux系統(tǒng)的環(huán)境中多線程應(yīng)用程序必須實現(xiàn)信號處理,目的是管理內(nèi)核的異常報告以及kill等命令。在多線程應(yīng)用程序中管理信號的最干凈的設(shè)計是阻斷所有信號并建立一個專用的線程,它發(fā)出 sigwait()以同步等待信號的到達。因為同步事件會引起信號提交到臨界資源相關(guān)線程,最好的策略通常是盡可能干凈地將線程退出 (由線程退出處理程序來完成清除 mutex和相關(guān)條件變量 )。 操作系統(tǒng)教程課件 第 58頁 機械工業(yè)出版社 ? 在 Linux系統(tǒng)中,信號的主要用途是: ? ①、事件警報 ? ②、進程同步 ? ③、進程間通信 ? ④、作業(yè)控制 ? 信號的主要缺點: ? ①、信號的捕獲開銷大 ? ②信號并不能提供完全的通信機制 (原因是多樣的:無返回值,不建立連接, BASE POSIX語法很弱,系統(tǒng)未要求報告有多個相同的信號的到達,系統(tǒng)可能按實現(xiàn)有關(guān)的順序提交了多個掛起的信號等 )。 ? 信號還有一些特點: ? 如信號無優(yōu)先級, Linux不提供處理多個相同類型信號的方式。 ? 信號個數(shù)受到處理器字長的限制等。分析一下 Linux的 task_struct結(jié)構(gòu)中的 unsigned long signal, struct signal_struct *sig等內(nèi)容。 操作系統(tǒng)教程課件 第 59頁 機械工業(yè)出版社 管道 ? 管道是一個先進先出,大小固定的緩沖區(qū),容量為 1頁(4Kbyte),用于兩個進程之間的單向數(shù)據(jù)傳遞。 ? 當管道有空間時,寫者進程把數(shù)據(jù)送入管道,否則將被阻塞;如果管道中沒有數(shù)據(jù)或讀者進程需要的數(shù)據(jù)多于其中的數(shù)據(jù),讀者進程會被阻塞,否則執(zhí)行讀者進程的請求。整個過程由操作系統(tǒng)監(jiān)控完成,互斥地訪問管道。當傳送的數(shù)據(jù)量大于管道的容量時,可以通過同步機制分次傳送數(shù)據(jù)。 操作系統(tǒng)教程課件 第 60頁 機械工業(yè)出版社 ? ? 例 :Linux shell程序中的重定向操作 : ? $ lsl | more ? 在 Linux中,管道是通過指向同一個臨時 VFS(虛擬文件系統(tǒng) )inode的兩個file數(shù)據(jù)結(jié)構(gòu)來實現(xiàn)的,此 VFS inode指向內(nèi)存中的一個物理塊。 Linux必須同步對管道的訪問。它必須保證讀者和寫者進程以確定的步驟執(zhí)行,為此需要使用鎖,等待隊列和信號等同步機制。當兩個進程對管道的使用結(jié)束時,管道 inode和共享數(shù)據(jù)頁面將同時被釋放。 ? ? Linux還支持命名管道 (named pipe),即 FIFO管道,為兩個不相關(guān)的進程提供通信手段。命名管道不是臨時對象,它們是文件系統(tǒng)中的實體并且可以通過 mknod命令來創(chuàng)建。進程只要擁有適當?shù)臋?quán)限就可以自由使用FIFO管道。在寫者進程使用之前, Linux必須讓讀者進程先打開此 FIFO管道 。任何讀者進程從中讀取之前必須有寫者進程向其寫入數(shù)據(jù)。 操作系統(tǒng)教程課件 第 61頁 機械工業(yè)出版社 消息隊列 ? 消息是按一定格式封裝起來的信息。每個進程都有一個與之關(guān)聯(lián)的消息隊列,接收進程按時間順序或消息類型從消息隊列取走消息。 ? Linux系統(tǒng)維護
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1