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

正文內(nèi)容

基于arm的智能手持設(shè)備mp3播放器的設(shè)計(jì)與開發(fā)英文參考文獻(xiàn)-資料下載頁

2024-11-08 07:05本頁面

【導(dǎo)讀】本科畢業(yè)設(shè)計(jì)外文文獻(xiàn)翻譯

  

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