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

正文內(nèi)容

四川大學(xué)linux第4章unix進(jìn)程管理及進(jìn)程通信-展示頁(yè)

2025-03-15 20:18本頁(yè)面
  

【正文】 m_inode * executable); 執(zhí)行時(shí)關(guān)閉文件句柄位圖標(biāo)志( close_on_exe); 文件結(jié)構(gòu)指針表( file * filp[NR_OPEN],表項(xiàng)號(hào)為文件描述符值,最多 32 項(xiàng)); 進(jìn)程狀態(tài)及其轉(zhuǎn)換 4.進(jìn)程局部信息 進(jìn)程的局部描述符表( desc_struct ldt[3]:空 null為 0,代碼段 cs為 1,數(shù)據(jù)和堆棧段 dsss為 2); 進(jìn)程狀態(tài)段信息結(jié)構(gòu)( tss_struct tss); 進(jìn)程狀態(tài)及其轉(zhuǎn)換 例 在 linux ,進(jìn)程描述符用結(jié)構(gòu)( task_struct)表示,在文件 linux\,其源代碼如下: struct task_struct { long state。進(jìn)程描述符包含的信息可以歸納為以下幾大類(lèi): 進(jìn)程狀態(tài)及其轉(zhuǎn)換 1. 進(jìn)程的運(yùn)行信息 ? 進(jìn)程標(biāo)示信息 進(jìn)程的標(biāo)識(shí)符 (pid); 進(jìn)程的父進(jìn)程標(biāo)識(shí)符( ppid); 進(jìn)程的父進(jìn)程組標(biāo)識(shí)符( pgrp); 進(jìn)程的會(huì)話號(hào)( session); 進(jìn)程的會(huì)話頭( leader); 進(jìn)程的用戶標(biāo)識(shí)符( uid); 進(jìn)程的有效用戶標(biāo)識(shí)符( euid); 進(jìn)程保存的用戶標(biāo)識(shí)符( suid); 進(jìn)程的用戶組標(biāo)識(shí)符( gid); 進(jìn)程的有效組標(biāo)識(shí)符( egid); 進(jìn)程的保存組標(biāo)識(shí)符( sgid); 進(jìn)程狀態(tài)及其轉(zhuǎn)換 ? 進(jìn)程狀態(tài)描述 在 include/linux/,將進(jìn)程的狀態(tài)描述具體化: TASK_RUNNING為 0; TASK_INTERRUPTIBLE為 1; TASK_UNINTERRUPTIBLE為 2; TASK_STOPPED為 4; TASK_ZOMBIE為 8; TASK_DEAD為 16。 ? 系統(tǒng)級(jí)上下文由進(jìn)程表表項(xiàng)(進(jìn)程描述符)、正在核心態(tài)運(yùn)行進(jìn)程的 U區(qū)、進(jìn)程區(qū)表表項(xiàng)和區(qū)表、頁(yè)表、核心棧。 ? 用戶級(jí)上下文由進(jìn)程的正文、數(shù)據(jù)、用戶棧和共享存儲(chǔ)區(qū)組成,占據(jù)進(jìn)程的虛地址空間。通常把進(jìn)程上下文理解為進(jìn)程映像,進(jìn)程切換被認(rèn)為是進(jìn)程上下文的切換。 進(jìn)程狀態(tài)及其轉(zhuǎn)換 U區(qū)中的主要信息有: (1) 與進(jìn)程對(duì)應(yīng)的用戶標(biāo)識(shí)符; (2) 記錄進(jìn)程已打開(kāi)文件的文件描述符; (3) 描述進(jìn)程位于文件系統(tǒng)的當(dāng)前目錄和根目錄; (4) 具有系統(tǒng)函數(shù)調(diào)用結(jié)果的返回值字段和出錯(cuò)字段; (5) 記錄進(jìn)程與子進(jìn)程在用戶態(tài)和核心態(tài)運(yùn)行時(shí)的時(shí)間; (6) 各種輸入 /輸出參數(shù),如進(jìn)程要讀寫(xiě)的數(shù)據(jù)量、用戶地址空間中的數(shù)據(jù)地址、讀寫(xiě)文件的字節(jié)數(shù)、讀寫(xiě)方式、緩沖區(qū)長(zhǎng)度及地址等; (7) 限制進(jìn)程大小的字段及限制進(jìn)程讀寫(xiě)文件大小的字段; (8) 對(duì)進(jìn)程所創(chuàng)建的所有文件設(shè)置的許可權(quán)方式字段的屏蔽模式; (9) 指向進(jìn)程表的指針。內(nèi)核將正處于核心態(tài)運(yùn)行進(jìn)程的 U區(qū)地址映射到該固定虛地址上。 ? 每個(gè)進(jìn)程都有一個(gè) U區(qū)。 ? 常駐內(nèi)存部分為進(jìn)程描述符,非常駐內(nèi)存部分為 USER區(qū),也稱(chēng)為 U區(qū)。核心堆棧為進(jìn)程在核心態(tài)下運(yùn)行的工作區(qū);用戶堆棧為進(jìn)程在用戶態(tài)下運(yùn)行的工作區(qū)。 在程序運(yùn)行過(guò)程中,堆棧段由操作系統(tǒng)創(chuàng)建并不斷刷新。操作系統(tǒng)核心將可執(zhí)行文件作為進(jìn)程的實(shí)體裝入內(nèi)存時(shí),進(jìn)程實(shí)體分為正文段、數(shù)據(jù)段和堆棧段。 通常,將處于內(nèi)核態(tài)運(yùn)行和用戶態(tài)運(yùn)行的進(jìn)程狀態(tài)統(tǒng)一稱(chēng)為進(jìn)程的運(yùn)行態(tài)。正在被調(diào)試的進(jìn)程可能處于停止?fàn)顟B(tài)。則表明系統(tǒng)中存在不能被reboot發(fā)出的“ kill –9”殺掉的進(jìn)程,這些進(jìn)程很可能處于僵死狀態(tài); 進(jìn)程狀態(tài)及其轉(zhuǎn)換 (7) 停止( stopped):進(jìn)程被停止。 有些處于僵死狀態(tài)的進(jìn)程,用命令“ kill 9”也不能殺死。如果系統(tǒng)中處于僵死狀態(tài)的進(jìn)程很多,則會(huì)引發(fā)系統(tǒng)資源短缺問(wèn)題。不可中斷睡眠狀態(tài)較少使用,可用于進(jìn)程必須等待時(shí)。產(chǎn)生不可中斷睡眠的原因一般是睡眠進(jìn)程還未進(jìn)入睡眠,而喚醒它的進(jìn)程的喚醒操作已經(jīng)發(fā)生。處于用戶態(tài)運(yùn)行的進(jìn)程可被搶占; (4) 可中斷睡眠( interruptible):由于進(jìn)程 CPU運(yùn)行時(shí)發(fā)生了需要等待 I/O事件或進(jìn)程通信時(shí)需要相互配合而等待,此時(shí),進(jìn)程會(huì)在內(nèi)存中處于一種相對(duì)靜止?fàn)顟B(tài)。在用戶程序中如果有系統(tǒng)函數(shù)調(diào)用,則進(jìn)程狀態(tài)會(huì)從用戶態(tài)執(zhí)行轉(zhuǎn)入核心態(tài)執(zhí)行。 ? 如果要調(diào)度一個(gè)進(jìn)程在后臺(tái)進(jìn)程運(yùn)行,運(yùn)行時(shí)在執(zhí)行的程序名后加“ ”(注意:程序名和符號(hào)“ ”之間需要有空格),如: ? $ ./d ? 表示啟動(dòng)進(jìn)程 d在后臺(tái)運(yùn)行。 ? 直接從終端讀寫(xiě)的進(jìn)程為前臺(tái)進(jìn)程,正在運(yùn)行卻又無(wú)法直接從終端讀寫(xiě)的進(jìn)程為后臺(tái)進(jìn)程。子進(jìn)程會(huì)繼承父進(jìn)程的用戶標(biāo)識(shí)符。 ? 進(jìn)程擁有者的標(biāo)識(shí)符為進(jìn)程的用戶標(biāo)識(shí)符。操作系統(tǒng)通過(guò)進(jìn)程標(biāo)識(shí)符管理進(jìn)程。除根進(jìn)程之外,所有進(jìn)程都有一個(gè)父進(jìn)程。子進(jìn)程會(huì)繼承父進(jìn)程的用戶標(biāo)識(shí)符。 ? 進(jìn)程擁有者的標(biāo)識(shí)符為進(jìn)程的用戶標(biāo)識(shí)符。操作系統(tǒng)通過(guò)進(jìn)程標(biāo)識(shí)符管理進(jìn)程。除根進(jìn)程之外,所有進(jìn)程都有一個(gè)父進(jìn)程。當(dāng)用戶登錄進(jìn)入系統(tǒng)后,便生成相應(yīng)的子進(jìn)程,即shell進(jìn)程。如果系統(tǒng)承擔(dān)網(wǎng)絡(luò)服務(wù)功能,則還需包含網(wǎng)絡(luò)服務(wù)進(jìn)程,如 d、 sendmail、 ftp等。 ? 初始化進(jìn)程通過(guò)系統(tǒng)函數(shù)調(diào)用 fork創(chuàng)建一系列的系統(tǒng)進(jìn)程,如 logger、 update、 cron、 lpsched、 getty進(jìn)程等。根進(jìn)程通過(guò)系統(tǒng)函數(shù)調(diào)用 fork創(chuàng)建初始化進(jìn)程 (init進(jìn)程,也稱(chēng)為 1進(jìn)程 )。第 4章 Linux進(jìn)程管理及進(jìn)程通信 劉 循 Linux進(jìn)程及描述 Linux系統(tǒng)中的進(jìn)程 ? Linux操作系統(tǒng)是多進(jìn)程并發(fā)環(huán)境,進(jìn)程和進(jìn)程之間的關(guān)系呈現(xiàn)為多級(jí)結(jié)構(gòu),如圖 。 logger update cron lpsched geety … root(進(jìn)程 0) init(進(jìn)程 1) swapper(對(duì)換進(jìn)程) shell shell shell 圖 進(jìn)程多級(jí)結(jié)構(gòu)關(guān)系 Linux進(jìn)程及描述 ? 最上層的進(jìn)程是系統(tǒng)的根進(jìn)程,也稱(chēng)為 0進(jìn)程,是系統(tǒng)所有進(jìn)程的起點(diǎn),在系統(tǒng)引導(dǎo)時(shí)創(chuàng)建。跟進(jìn)程在創(chuàng)建初始化進(jìn)程之后,變?yōu)閷?duì)換進(jìn)程( swapper)存在,其功能為完成內(nèi)存與外存之間的進(jìn)程對(duì)換工作。這些進(jìn)程長(zhǎng)期運(yùn)行在系統(tǒng)中,被稱(chēng)為駐守進(jìn)程( daemon進(jìn)程)。getty進(jìn)程負(fù)責(zé)用戶登錄,監(jiān)視每個(gè)終端上的用戶注冊(cè)情況。 Linux進(jìn)程及描述 ? 所有進(jìn)程都會(huì)生成一個(gè)或多個(gè)子進(jìn)程。 ? 為了管理方便, Linux操作系統(tǒng)給每個(gè)進(jìn)程分配一個(gè)唯一的進(jìn)程標(biāo)識(shí)符 pid。 ? 無(wú)論何時(shí),當(dāng)用戶注冊(cè)登錄后,系統(tǒng)為用戶創(chuàng)建一個(gè)shell進(jìn)程(即用戶的 login shell),鍵入一個(gè)命令或執(zhí)行一個(gè)程序時(shí), shell進(jìn)程會(huì)產(chǎn)生一個(gè)相應(yīng)的子進(jìn)程;在子進(jìn)程中還可以創(chuàng)建子進(jìn)程,待用戶退出( exit)后,又把控制權(quán)還給 shell進(jìn)程。用戶標(biāo)識(shí)符反映了用戶在系統(tǒng)中的地位,決定了用戶進(jìn)程的各種特權(quán),如進(jìn)程對(duì)文件的存取權(quán)限等。 Linux進(jìn)程及描述 ? 所有進(jìn)程都會(huì)生成一個(gè)或多個(gè)子進(jìn)程。 ? 為了管理方便, Linux操作系統(tǒng)給每個(gè)進(jìn)程分配一個(gè)唯一的進(jìn)程標(biāo)識(shí)符 pid。 ? 無(wú)論何時(shí),當(dāng)用戶注冊(cè)登錄后,系統(tǒng)為用戶創(chuàng)建一個(gè)shell進(jìn)程(即用戶的 login shell),鍵入一個(gè)命令或執(zhí)行一個(gè)程序時(shí), shell進(jìn)程會(huì)產(chǎn)生一個(gè)相應(yīng)的子進(jìn)程;在子進(jìn)程中還可以創(chuàng)建子進(jìn)程,待用戶退出( exit)后,又把控制權(quán)還給 shell進(jìn)程。用戶標(biāo)識(shí)符反映了用戶在系統(tǒng)中的地位,決定了用戶進(jìn)程的各種特權(quán),如進(jìn)程對(duì)文件的存取權(quán)限等。 Linux進(jìn)程及描述 ? 如果進(jìn)程的擁有者和進(jìn)程運(yùn)行所對(duì)應(yīng)的代碼文件擁有者具有相同的用戶標(biāo)識(shí)符,則稱(chēng)該用戶標(biāo)識(shí)符為有效用戶標(biāo)識(shí)符。任何時(shí)候,一個(gè)終端只有一個(gè)前臺(tái)進(jìn)程但可以擁有多個(gè)后臺(tái)進(jìn)程。 進(jìn)程狀態(tài)及其轉(zhuǎn)換 5 4 可中斷睡眠 ( interruptible) 不可中斷睡眠 ( uninterruptible) 7 6 僵死 ( zombie) 停止 ( stopped) 終止 終止 1 2 3 就緒 ( running) 核心態(tài)運(yùn)行 ( running) 用戶態(tài)運(yùn)行 ( running) 調(diào)度 返回 系統(tǒng)函數(shù)調(diào)用或中斷 睡眠 睡眠 喚醒 喚醒 中斷 圖 Linux進(jìn)程狀態(tài)及轉(zhuǎn)換 進(jìn)程狀態(tài)及其轉(zhuǎn)換 Linux操作系統(tǒng)采用如下的進(jìn)程狀態(tài)描述進(jìn)程的動(dòng)態(tài)過(guò)程: (1) 就緒 (Running):進(jìn)程處于預(yù)備運(yùn)行狀態(tài),等待系統(tǒng)分配處理器; (2) 核心態(tài)運(yùn)行 (Running):進(jìn)程運(yùn)行在操作系統(tǒng)核心空間。任何一個(gè)進(jìn)程都不可能搶占一個(gè)處于核心態(tài)執(zhí)行的進(jìn)程,除非處于核心態(tài)執(zhí)行的進(jìn)程正從核心態(tài)到用戶態(tài)切換; (3) 用戶態(tài)運(yùn)行 (Running):進(jìn)程運(yùn)行在用戶空間。如果等待的事件已經(jīng)完成,此時(shí)進(jìn)程可被喚醒,被喚醒后的進(jìn)程轉(zhuǎn)入內(nèi)存就緒狀態(tài); 進(jìn)程狀態(tài)及其轉(zhuǎn)換 (5) 不可中斷睡眠( uninterruptible):進(jìn)程在內(nèi)存中處于一種相對(duì)靜止?fàn)顟B(tài),此時(shí)進(jìn)程不會(huì)被喚醒。由于錯(cuò)過(guò)了喚醒操作,當(dāng)睡眠進(jìn)程進(jìn)入睡眠后則不能喚醒了。 (6) 僵死( zombie):由于父進(jìn)程死亡而被終止的進(jìn)程,雖然進(jìn)程已經(jīng)死亡,但沒(méi)有釋放系統(tǒng)資源,如沒(méi)有釋放內(nèi)存和 task_struct結(jié)構(gòu)等,所以被稱(chēng)為處于僵死狀態(tài)。用命令“ ps –el”可查看進(jìn)程狀態(tài),如果進(jìn)程狀態(tài)標(biāo)識(shí)是 Z,則進(jìn)程處于僵死狀態(tài)。例如,如果系統(tǒng)在 shutdown時(shí),屏幕顯示信息 :some process wouldn’ t die。如果進(jìn)程接收到信號(hào),如信號(hào) SIGSTOP 或 SIGTSTP 等時(shí),進(jìn)程則進(jìn)入停止?fàn)顟B(tài)。當(dāng)停止?fàn)顟B(tài)的進(jìn)程接收到 SIGCONT信號(hào)之后,將再次成為可運(yùn)行進(jìn)程。 進(jìn)程狀態(tài)及其轉(zhuǎn)換 進(jìn)程映像與進(jìn)程上下文 ? 一個(gè)程序經(jīng)過(guò)編譯和鏈接之后,成為可執(zhí)行文件。 ? 正文段由程序中的代碼構(gòu)成; ? 數(shù)據(jù)段由程序運(yùn)行所用到的數(shù)據(jù)構(gòu)成; ? 堆棧段由函數(shù)調(diào)用傳遞參數(shù)、保留現(xiàn)場(chǎng)、存放返回地址和局部變量構(gòu)成。堆棧段分為核心堆棧和用戶堆棧兩種。 進(jìn)程狀態(tài)及其轉(zhuǎn)換 ? 進(jìn)程控制塊分為常駐內(nèi)存和非常駐內(nèi)存兩部分。進(jìn)程描述符可由核心訪問(wèn), U區(qū)只能由在核心態(tài)運(yùn)行的進(jìn)程訪問(wèn)。為了便于訪問(wèn) U區(qū),操作系統(tǒng)會(huì)用一個(gè)固定的虛地址對(duì)應(yīng) U區(qū)。 ? 雖然每個(gè)進(jìn)程都有 U區(qū),不同進(jìn)程的 U區(qū)有不同的地址,但是,內(nèi)核每次都將正在核心態(tài)下運(yùn)行的進(jìn)程的 U區(qū)映射到固定的地址,進(jìn)程訪問(wèn) U區(qū)總可以用相同的地址。 進(jìn)程狀態(tài)及其轉(zhuǎn)換 ? 進(jìn)程上下文是進(jìn)程的環(huán)境,當(dāng)一個(gè)進(jìn)程在執(zhí)行時(shí),可以看成系統(tǒng)在進(jìn)程的上下文中執(zhí)行。 ? 進(jìn)程上下文由用戶級(jí)上下文、寄存器上下文和系統(tǒng)級(jí)上下文組成。 ? 寄存器上下文由程序計(jì)數(shù)器、處理器狀態(tài)寄存器、棧指針和通用寄存器組成。 進(jìn)程狀態(tài)及其轉(zhuǎn)換 進(jìn)程描述符與進(jìn)程表 進(jìn)程描述符是 Linux系統(tǒng)用于描述進(jìn)程的數(shù)據(jù)結(jié)構(gòu),是操作系統(tǒng)管理進(jìn)程最重要的依據(jù)。 當(dāng)進(jìn)程的狀態(tài)描述為 1時(shí),表示進(jìn)程不可運(yùn)行。 long counter。 long signal。 long blocked。 unsigned long start_code。 unsigned long end_data。 unsigned long start_stack。 long father。 long session。 unsigned short uid。 unsigned short suid。 unsigned short egid。 long alarm。 long stime。 long cstime。 unsigned short used_math。 unsigned short umask。 struct m_inode * root。 unsigned long close_on_exec。 struct desc_struct ldt[3] 。 進(jìn)程狀態(tài)及其轉(zhuǎn)換 其中,任務(wù)狀態(tài)結(jié)構(gòu) tts保存了進(jìn)程的處理器狀態(tài),指定了構(gòu)成進(jìn)程執(zhí)行空間的各個(gè)段,定義為: struct tss_struct { long back_link。 long ss0。 long ss1。 long ss2。 long eip。 long eax,ecx,edx,ebx。 long ebp。 long edi。 /* 16 high bits zero */ long cs。 /* 16 hi
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1