- Linux內(nèi)核完全注釋?zhuān)?0周年版·第2版)
- 趙炯編著
- 425字
- 2024-05-10 12:20:19
2.4.1 任務(wù)數(shù)據(jù)結(jié)構(gòu)
內(nèi)核程序通過(guò)進(jìn)程表對(duì)進(jìn)程進(jìn)行管理,每個(gè)進(jìn)程在進(jìn)程表中占有一項(xiàng)。在Linux系統(tǒng)中,進(jìn)程表項(xiàng)是一個(gè)task_struct任務(wù)結(jié)構(gòu)指針。任務(wù)數(shù)據(jù)結(jié)構(gòu)定義在頭文件sched.h中。有些書(shū)上稱(chēng)其為進(jìn)程控制塊(Process Control Block,PCB)或進(jìn)程描述符(Process Descriptor,PD)。其中保存著用于控制和管理進(jìn)程的所有信息。主要包括進(jìn)程當(dāng)前運(yùn)行的狀態(tài)信息、信號(hào)、進(jìn)程號(hào)、父進(jìn)程號(hào)、運(yùn)行時(shí)間累計(jì)值、正在使用的文件和本任務(wù)的局部描述符以及任務(wù)狀態(tài)段信息。該結(jié)構(gòu)每個(gè)字段的具體含義參見(jiàn)頭文件sched.h。
當(dāng)一個(gè)進(jìn)程在執(zhí)行時(shí),CPU的所有寄存器中的值、進(jìn)程的狀態(tài)以及堆棧中的內(nèi)容被稱(chēng)為該進(jìn)程的上下文。當(dāng)內(nèi)核需要切換(switch)至另一個(gè)進(jìn)程時(shí),它需要保存當(dāng)前進(jìn)程的所有狀態(tài),即保存當(dāng)前進(jìn)程的上下文,以便在再次執(zhí)行該進(jìn)程時(shí),能夠恢復(fù)到切換時(shí)的狀態(tài)執(zhí)行下去。在Linux中,當(dāng)前進(jìn)程上下文均保存在進(jìn)程的任務(wù)數(shù)據(jù)結(jié)構(gòu)中。在發(fā)生中斷時(shí),內(nèi)核就在被中斷進(jìn)程的上下文中,在內(nèi)核態(tài)下執(zhí)行中斷服務(wù)例程。但同時(shí)會(huì)保留所有需要用到的資源,以便中斷服務(wù)結(jié)束時(shí)能恢復(fù)被中斷進(jìn)程的執(zhí)行。
- 樂(lè)學(xué)Windows操作系統(tǒng)
- Linux網(wǎng)絡(luò)管理與配置(第2版)
- Windows Server 2012 Hyper-V:Deploying the Hyper-V Enterprise Server Virtualization Platform
- 發(fā)布!設(shè)計(jì)與部署穩(wěn)定的分布式系統(tǒng)(第2版)
- Arch Linux Environment Setup How-to
- Extending Bootstrap
- Kubernetes從入門(mén)到實(shí)踐
- Moodle 3.x Teaching Techniques(Third Edition)
- STM32庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南:基于STM32F4
- 嵌入式系統(tǒng)及其應(yīng)用(第三版)
- 注冊(cè)表應(yīng)用完全DIY
- 云原生落地:產(chǎn)品、架構(gòu)與商業(yè)模式
- Django Project Blueprints
- 計(jì)算機(jī)系統(tǒng)的自主設(shè)計(jì)
- Social Data Visualization with HTML5 and JavaScript