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

正文內容

進程管理外文翻譯-其他專業(yè)-資料下載頁

2025-01-19 01:41本頁面

【導讀】XXX工業(yè)大學本科畢業(yè)設計外文文獻翻譯

  

【正文】 進程所需要的所有信息,那么它的大小也相當小了。進程描述符中包含的數據能完整的描述一個正在執(zhí)行的程序:它打開的文件,進程的地址空間,掛起的信號,進程的狀態(tài),還有其他更多的信息。 2 進程描述符 Linux 通過 slab 非配器分配 task_struct 結構,這樣能達到對象復用和緩存著色的目的。 在 以前的內核中,各個進程的 task_struct 存放在他們的內核棧的尾端。這樣做的目的是為了讓那些像 x86 這樣寄存器較的硬件體系結構只要通過棧指針就能算出它的位置,從而避免使用額外的寄存器專門記錄。由于現在用 slab 分配器動態(tài)生成 task_struct,所以只需在棧底或棧頂創(chuàng)建一個新的結構 struct thread) info。這個新的結構能使在匯編代碼中計算器偏移變得相當的容易。 在 x86 上, thread_info { Struct task_struct *任務 。 Struct exec_domain *exec_domain。 Unsigned long flags。 Unsigned long status。 __u32 cpu。 __s32 preempt_count。 Mm_segment addr_limit。 Struct restart_block restart_block。 Unsigned long previous_esp。 XXX 工業(yè)大學本科畢業(yè)設計外文文獻翻譯 9 __u8 supervisor_stack[0]。 } 每個任務的 thread_info 結構在它的內核棧的尾端分配。結構中 task域中存放的是指向該任務實際 task_struct 的指針。 3 進程描述符的存放 內核通過一個唯一的進程標識值或 PID 來表示每個進程。 PID 是一個數,表示為 pid_t 隱含類型,實際上就是一個 int 類型。為了老版本的 Unix 和 Linux 兼容,PID 的最大值默認設置為 32768,盡管這個值也可以增加到類型所允許的范圍。內核把每個進程 PID 存放在他們各自的進策劃那個描述符中。 這個值很重要,因為它實際上就是系統(tǒng)中允許同時存在的進程的最大數目。盡管 32768 對一般的桌面系統(tǒng)足夠用了,但是大型服務器可能需要更新進程。這個值越小,轉一圈就越快,本類數值大的進程比數值小的進程遲運行,但這樣一來就破壞了這一原則。如果確實需要的話,可以不考慮與老式系統(tǒng)的兼容,由系統(tǒng)管理員通過修改 /proc/sys/kernel/pid_max 來提高上限。 在內核中,訪問任務通常需要獲得指向其 task_struct 指針。實際上,內核中大部分處理進程的代碼都是直接通過 task_struct 進行的。因此 ,通過 current 宏查找到當前正在運行進程的進程描述符的速度就顯得尤為重要。硬件體系結構不同,該宏的實現也就不同,它必須針對專門的硬件體系結構作處理。有的硬件體系結構可以拿出一個專門寄存器來存放指向當前進程 task_strcut 的指針,用于加快訪問速度。而有些像 x86 這樣的體系結構,就只能在內核棧的尾端創(chuàng)建 thread_info 結構,通過計算偏移間接地查找 task_struct 結構。 在 x86體系上, current把棧指針的后 13個有效位屏蔽掉,用來計算出 thread_info的偏移。該操作通過 current_thread_info()函數完成的。匯編代碼如下: Mov $81925, %eax Andl %esp, %eax 這里假定棧的大小為 8KB。當 4KB 的棧啟用時,就用 4096,而不是 8192。 最后, current_thread_info()task。 對比一下這部分在 PowerPC 上的實現( IBM 基于 RISC 的現代微處理器),我們可以發(fā)現當前 task_struct 的地址是保存在一個寄存器中的。也就是說,在 PPC 上,XXX 工業(yè)大學本科畢業(yè)設計外文文獻翻譯 10 current 宏只需要把 r2 寄存器中的值返回就行 了。與 x86 不一樣, PPC 有足夠多的寄存器,所以它的實現有這樣的余地。而訪問進程描述符是一個重要的頻繁的操作,所以 PPC 的內核開發(fā)者會覺得完全有必要為此使用一個專門的寄存器。 4 進程狀態(tài) 進程描述符中的 state 域描述了進程的當前狀態(tài)。系統(tǒng)的每個進程都必然處于五種進程狀態(tài)的一種。該域的值也必為下列五種狀態(tài)標志之一: ( 1) TASK_RUNNING(運行) —— 進程是可執(zhí)行的,它或者正在執(zhí)行,或者在運行隊列中等待執(zhí)行。這是進程在用戶空間中執(zhí)行唯一可能的狀態(tài),也可以應用到內核空間中正在執(zhí)行的進程。 ( 2) TASK_INTERRUPTIBLE(可中斷) —— 進程正在睡眠(也就是說它被阻塞),等待某些條件的達成。一檔這些條件達成,內核就會把進程狀態(tài)設置為運行。處于此狀態(tài)的進程也會因為接受到信號而提前被喚醒并投入到運行。 ( 3) TASK_UNINTERRUPTIBLE(不可中斷) —— 除了不會因為接受到信號而被喚醒從而投入運行外,這個狀態(tài)與可打斷的狀態(tài)相同。這個狀態(tài)通常在進程必須在等待時不受干擾或等待時間很快就會發(fā)生時出現。由于處于此狀態(tài)的任務對信號不做響應,所以較之可中斷狀態(tài),使用的較少。 ( 4) TASK_ZOMBIE(僵死) —— 該進程已經結束了, 但是其父進程還沒有調用wait()系統(tǒng)調用,為了父進程能夠獲知它的消息,子進程的進程描述符仍然被保留著。一旦父進程調用了 wait 進程描述符就會被釋放掉。 ( 5) TASK_STOPPED(停止) —— 進程停止執(zhí)行,進程沒有投入運行也不能投入欲行。通常這種狀態(tài)發(fā)生在接受到 SIGSTOP、 SIGTTIN、 SIGTTOU 等信號的時候。此外,在調試期間受到任何信號,都會使進程進入這種狀態(tài)。 5 設置當前進程狀態(tài) 內核經常需要調整某個進程的狀態(tài)。這時最好使用 set_task_state(task, state)。 函數。該函數 將制定的進程設置為給定的狀態(tài)。必要的時候,它會設置內存屏障來強制其他處理器作重新排序(一般只有在 SMP 系統(tǒng)中有此必要),否則,它等價于:Taskstate = state。方法 set_current_state(state),和 set_task_state(current, state)含義是等同的。 6 進程上下文 XXX 工業(yè)大學本科畢業(yè)設計外文文獻翻譯 11 可執(zhí)行程序代碼是進程的重要組成部分。這些代碼從可執(zhí)行文件載入到進程的地址空間執(zhí)行。一般程序在用戶空間執(zhí)行。當一個程序調用執(zhí)行了系統(tǒng)調用或者觸發(fā)了某個異常,它就陷入了內核空間。此時,我們稱內核 “ 代表進程執(zhí)行 ”并處于進程上下文中。在此上下文中 current 宏是有效的。除非在此間隙有更高優(yōu)先級的進程需要執(zhí)行并由調度器做出了相應的調整,否則在內核退出的時候,程序恢復在用戶空間繼續(xù)執(zhí)行。 系統(tǒng)調用和異常處理程序是對內核明確定義的接口。進程只有通過這些接口才能陷入內核執(zhí)行 —— 對內核的所有的訪問都必須通過這些接口。
點擊復制文檔內容
范文總結相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1