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

正文內(nèi)容

[工學(xué)]西安交通大學(xué)操作系統(tǒng)原理課件第三章-文庫(kù)吧資料

2025-02-23 14:27本頁(yè)面
  

【正文】 ? 修改已編寫的程序,將每個(gè)進(jìn)程輸出一個(gè)字符改為每個(gè)進(jìn)程輸出一句話 . ? 如果在程序中使用系統(tǒng)調(diào)用 lockf()來(lái)給每一個(gè)進(jìn)程加鎖,可以實(shí)現(xiàn)進(jìn)程之間的互斥,觀察并分析出現(xiàn)的現(xiàn)象。 if(p2 == 0) putchar(?c?)。)。 if(p1==0)創(chuàng)建成功一子進(jìn)程 putchar(39。 實(shí)例 3 include main() { int p1,p2。 ? 當(dāng)此程序運(yùn)行時(shí),在系統(tǒng)中有一個(gè)父進(jìn)程和兩個(gè)子進(jìn)程活動(dòng)。 exit(0)。 } else { wait(NULL)。 exit(1)。 pid=fork()。 /*i0,在父進(jìn)程中 */ else printf(“it is a child process!\n”)。/*若創(chuàng)建失敗,則反復(fù)創(chuàng)建 */ printf(“i=%d\n”,I)?!?實(shí)例 1 ? Main() { int i。 當(dāng)接收到中止進(jìn)程信號(hào)時(shí) , 該調(diào)用不再返回 ?!?; 返回值為實(shí)際的掛起時(shí)間。 UNIX相關(guān)系統(tǒng)調(diào)用介紹 sleep; ? 調(diào)用 sleep將在指定的時(shí)間 seconds內(nèi)掛起本進(jìn)程。 ? int fd[2]。 ? void (*func) ()。 UNIX相關(guān)系統(tǒng)調(diào)用介紹 (pid,sig): 一個(gè)進(jìn)程向同一用戶的其他進(jìn)程 pid發(fā)送一中斷信號(hào) (sig,function): 捕捉中斷信號(hào) sig后執(zhí)行 function規(guī)定的操作。 ? long size。 ():獲得進(jìn)程號(hào) . UNIX相關(guān)系統(tǒng)調(diào)用介紹 (files,function,size):用于鎖定文件的某些段或整個(gè)文件 。 – 由事件發(fā)生進(jìn)程喚醒。 入口 保存當(dāng)前進(jìn)程的 CPU現(xiàn)場(chǎng) 置該進(jìn)程的狀態(tài) 被阻塞進(jìn)程入等待隊(duì)列 轉(zhuǎn)進(jìn)程調(diào)度 阻塞原語(yǔ) Process Blocking 進(jìn)程阻塞 進(jìn)程喚醒 ? 當(dāng)進(jìn)程所等待的事件發(fā)生時(shí),該進(jìn)程將被喚醒 (由進(jìn)程喚醒操作完成 )。它的執(zhí)行將引起等待某事件的隊(duì)列的改變 . ? 轉(zhuǎn)進(jìn)程調(diào)度程序是很重要的。 } } Process Creation Process Termination ? A process terminates when it finishes executing and asks the OS to delete it by using exit() ? Parent may terminate execution of children processes 父進(jìn)程可中止子進(jìn)程的執(zhí)行(終止) – Child has exceeded allocated 資源 – Task assigned to child is no longer required. 賦予子進(jìn)程的任務(wù)不再需要 – Parent is exiting 父進(jìn)程終止 ? OS does not allow child to continue if its parent terminates. 若父進(jìn)程終止,不允許子進(jìn)程繼續(xù) ? Cascading termination. 級(jí)聯(lián)終止 ? UNIX系統(tǒng)中是 exit(): 當(dāng)前進(jìn)程自我終止 ? 釋放占用的所有資源: – 釋放內(nèi)外存空間 – 關(guān)閉所有打開(kāi)文件 – 釋放當(dāng)前目錄 – 釋放共享內(nèi)存段和各種鎖 lock Process Termination 出錯(cuò)處理 入口 查進(jìn)程鏈表或進(jìn)程家族 有此 PCB? 釋放該進(jìn)程所占有的資源 釋放該 PCB結(jié)構(gòu)本身 無(wú) 有 返回 該 PCB有子進(jìn)程嗎? Process Termination Process Termination Process Blocking 進(jìn)程阻塞 ? 引起進(jìn)程阻塞和喚醒的事件: 一個(gè)處在運(yùn)行狀態(tài)的進(jìn)程,因等待某個(gè)事件的發(fā)生(如等待打印機(jī)、同步事件等)而不能繼續(xù)運(yùn)行時(shí),將調(diào)用阻塞原語(yǔ),把進(jìn)程置為阻塞狀態(tài),并轉(zhuǎn)進(jìn)程調(diào)度程序(等于讓出處理機(jī))。 printf (Child Complete)。 } else if (pid == 0) { /* child process */ execlp(/bin/ls, ls, NULL)。 if (pid 0) { /* error occurred */ fprintf(stderr, Fork Failed)。 創(chuàng)建失敗 入口 查 PCB鏈表 有空 PCB? 取空 PCB( i) 將有關(guān)參數(shù)填入 PCB( i) 相應(yīng)表項(xiàng) PCB( i) 入就緒隊(duì)列 PCB( i) 入進(jìn)程家族或進(jìn)程鏈 返回 創(chuàng)建原語(yǔ)流程圖 無(wú) C Program Forking Separate Process int main() { pid_t pid。 將進(jìn)程的狀態(tài)設(shè)置為就緒狀態(tài)或靜止就緒狀態(tài) ? 將新進(jìn)程插入就緒隊(duì)列 進(jìn)程創(chuàng)建 進(jìn)程創(chuàng)建 ? UNIX系統(tǒng): pid=fork()。 使程序計(jì)數(shù)器指向程序的入口地址,棧指針指向棧頂。 將系統(tǒng)中分配的標(biāo)識(shí)符、父進(jìn)程標(biāo)識(shí)符填入新 PCB中。 ? 為新建立的進(jìn)程分配資源 :為新進(jìn)程的程序和數(shù)據(jù),以及用戶棧分配必要的內(nèi)存空間。 – 用戶程序可使用 fork()系統(tǒng)調(diào)用創(chuàng)建多個(gè)進(jìn)程 , 每個(gè)進(jìn)程執(zhí)行一個(gè)程序段 。(如打印請(qǐng)求) ? 應(yīng)用請(qǐng)求:應(yīng)用進(jìn)程的需要,由它自己創(chuàng)建一個(gè)新進(jìn)程,使新進(jìn)程以并發(fā)運(yùn)行方式完成特定任務(wù)。 ? 用戶登錄 :在分時(shí)系統(tǒng)中,用戶在終端鍵入登錄命令后,若是合法用戶,系統(tǒng)建立一個(gè)進(jìn)程,并插入就緒隊(duì)列。 ? 當(dāng)系統(tǒng)允許多進(jìn)程并發(fā)執(zhí)行時(shí) , 為了實(shí)現(xiàn)共享 、 協(xié)調(diào)并發(fā)進(jìn)程的關(guān)系 , 處理機(jī)管理必須對(duì)進(jìn)程實(shí)行有效的管理 。 對(duì)進(jìn)程的這些操作叫進(jìn)程控制 。 few very long CPU bursts. CPU 型進(jìn)程 花費(fèi)更多時(shí)間于計(jì)算,許多長(zhǎng) CPU處理 ? Longterm scheduler controls the process mix of I/Obound process and CPUbound process Schedulers(Cont.) Addition of Medium Term Scheduling中程調(diào)度( time_sharing,交換技術(shù)) swapping Process Context 進(jìn)程上下文 ? 對(duì)進(jìn)程執(zhí)行活動(dòng)全過(guò)程的靜態(tài)描述 ? 由進(jìn)程的用戶地址空間內(nèi)容、硬件寄存器內(nèi)容及與該進(jìn)程相關(guān)的核心數(shù)據(jù)結(jié)構(gòu)組成 – 用戶級(jí)上下文:進(jìn)程的用戶地址空間(包括用戶棧各層次),包括用戶正文段、用戶數(shù)據(jù)段和用戶棧 – 寄存器級(jí)上下文:程序計(jì)數(shù)器、程序狀態(tài)寄存器、棧指針、通用寄存器的值 – 系統(tǒng)級(jí)上下文: ? 靜態(tài)部分( PCB和資源表格) ? 動(dòng)態(tài)部分:核心棧(核心過(guò)程的棧結(jié)構(gòu),不同進(jìn)程在調(diào)用相同核心過(guò)程時(shí)有不同核心棧) Context Switch 上下文切換 ? When CPU switches to another process, the system must save the state of the old process and load the saved state for the new process. 當(dāng) CPU切換至另一個(gè)進(jìn)程時(shí),系統(tǒng)必須保存舊進(jìn)程狀態(tài)并為新進(jìn)程調(diào)入所保留的狀態(tài)(包括寄存器,存儲(chǔ)管理信息) ? Contextswitch time is overhead。 Process Control Block進(jìn)程控制塊 Process Control Block進(jìn)程控制塊 ? Linux 內(nèi)核用一個(gè)數(shù)據(jù)結(jié)構(gòu) task_struct來(lái)代表一個(gè)進(jìn)程 ,全部 task_struct的指針構(gòu)成一個(gè) task數(shù)組 ,這個(gè)數(shù)組的大小默認(rèn)為 512,表明系統(tǒng)中能同時(shí)運(yùn)行的進(jìn)程最多為 512個(gè) . ? 建立新進(jìn)程時(shí) , Linux為新進(jìn)程分配一個(gè) task_struct結(jié)構(gòu) ,并將其指針保存在 task數(shù)組中 . Process Control Block進(jìn)程控制塊 ? Linux系統(tǒng)中進(jìn)程的 task_struct結(jié)構(gòu)的信息可分為 8類 : – 標(biāo)識(shí)號(hào) :進(jìn)程標(biāo)識(shí)號(hào) \用戶標(biāo)識(shí)號(hào) \組標(biāo)識(shí)號(hào) – 狀態(tài)信息 :運(yùn)行 \等待 \停止 \僵死 – 調(diào)度信息 :見(jiàn)下頁(yè) – 有關(guān)進(jìn)程間通信的信息 – 進(jìn)程鏈信息 :父進(jìn)程指針 \兄弟進(jìn)程指針 \子進(jìn)程 – 時(shí)間和定時(shí)器 :進(jìn)程的建立時(shí)間 \使用的 CPU時(shí)間 – 文件系統(tǒng)信息 :進(jìn)程打開(kāi)文件的描述符信息等 – 進(jìn)程上下文信息 :進(jìn)程的運(yùn)行環(huán)境信息 ,包括寄存器的值以及堆棧信息 Process Control Block進(jìn)程控制塊 ? Linux進(jìn)程的 task_struct中和調(diào)度相關(guān)的信息 : – Policy(策略 ): Linux有一般進(jìn)程和實(shí)時(shí)進(jìn)程兩類 . – Priority(優(yōu)先級(jí) ):可通過(guò)系統(tǒng)調(diào)用或 renice命令修改進(jìn)程的優(yōu)先級(jí) .該值實(shí)際是進(jìn)程從開(kāi)始運(yùn)行算起的 ,允許進(jìn)程運(yùn)行的時(shí)間值 . – Rt_priority(實(shí)時(shí)優(yōu)先級(jí) ):實(shí)時(shí)進(jìn)程的相對(duì)優(yōu)先級(jí) – Counter(計(jì)數(shù)器 ):進(jìn)程運(yùn)行的時(shí)間 .開(kāi)始運(yùn)行時(shí)設(shè)置為其priority,每次時(shí)鐘中斷該值減 1. PCB的組織 ? PCB表: – 系統(tǒng)把所有 PCB組織在一起放在內(nèi)存的固定區(qū)域,構(gòu)成 PCB表 。 Process Control Block進(jìn)程控制塊 ? 家族聯(lián)系 process family – 進(jìn)程可創(chuàng)建自已的子進(jìn)程 , 子進(jìn)程還可以創(chuàng)建 , 一個(gè)進(jìn)程往往處在一個(gè)家族之中 , 就需要記錄進(jìn)程在家族中位置的信息 。 Process Control Block進(jìn)程控制塊 ? CPU現(xiàn)場(chǎng)保護(hù)區(qū) cpu status – 當(dāng)進(jìn)程因某種原因不能繼續(xù)占用 CPU時(shí) ( 如 :等待打印機(jī) ) , 釋放 CPU, 這時(shí)就要將 CPU的各種狀態(tài)信息保護(hù)起來(lái) , 為將來(lái)再次得到處理機(jī)恢復(fù) CPU的各種狀態(tài) , 繼續(xù)運(yùn)行 。 ? 當(dāng)前隊(duì)列指針 next – 登記與本進(jìn)程處于同一隊(duì)列的下一個(gè)進(jìn)程的 PCB的地址 Process Control Block進(jìn)程控制塊 ? 執(zhí)行程序開(kāi)始地址 startaddr ? 進(jìn)程優(yōu)先級(jí) priority – 進(jìn)程的優(yōu)先級(jí)反映進(jìn)程的緊迫程度 , 通常由用戶指定和系統(tǒng)設(shè)置 。 ? 進(jìn)程當(dāng)前狀態(tài) status – 說(shuō)明進(jìn)程當(dāng)前所處的狀態(tài) 。 – UNIX系統(tǒng)中就是一個(gè)整型數(shù) 。 ? PCB是系統(tǒng)感知進(jìn)程存在的唯一標(biāo)志 ,進(jìn)程與 PCB是一一對(duì)應(yīng)的 ? PCB經(jīng)常被系統(tǒng)訪問(wèn) , 如 , 調(diào)度程序 、 資源分配程序 、 中斷處理程序等 , 所以 PCB應(yīng)常駐內(nèi)存 。 Process Control Block進(jìn)程控制塊 ? PCB (Process Control Block):一個(gè)專門的數(shù)據(jù)結(jié)構(gòu),系統(tǒng)用它來(lái)記
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1