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

正文內(nèi)容

linux操作系統(tǒng)原理與應(yīng)用-文庫吧資料

2025-05-18 13:53本頁面
  

【正文】 task_struct *prev_task, *next_task ?宏 for_each_task()遍歷整個進(jìn)程鏈表 define for_each_task(p) \ for (p = amp。 }。 Linux調(diào)用 alloc_task_struct()函數(shù)分配 8KB的task_union 內(nèi)存區(qū),調(diào)用 free_task_struct()函數(shù)釋放它 進(jìn)程控制塊-如何存放 ?C語言使用下列的聯(lián)合結(jié)構(gòu)表示這樣一個混合結(jié)構(gòu): union task_union { struct task_struct task。 unsigned long stack[2408]。 進(jìn)程控制塊-進(jìn)程之間的親屬關(guān)系 父進(jìn)程 兄進(jìn)程 進(jìn)程 P 弟進(jìn)程 指向父進(jìn)程 指向兄進(jìn)程 指向子進(jìn)程 指向弟進(jìn)程 進(jìn)程控制塊-部分內(nèi)容的描述 上面通過對進(jìn)程狀態(tài) 、 標(biāo)識符及親屬關(guān)系的描述 , 我們可以把這些域描述如下: task_struct{ long state。 ?PID是 32位的無符號整數(shù),它被順序編號 ?每個進(jìn)程都屬于某個用戶組。 ?處理器環(huán)境信息- 描述進(jìn)程的執(zhí)行環(huán)境 (處理器的寄存器及堆棧等 ) 進(jìn)程控制塊- Linux進(jìn)程狀態(tài)及轉(zhuǎn)換 fork() TASK_RUNNING 就緒 TASK_INTERRUPTIBLE 淺度睡眠 TASK_UNINTERRUPTIBLE 深度睡眠 TASK_STOPPED 暫停 TASK_ZOMBIE 僵死 占有 CPU 執(zhí)行 do_exit() schedule() ptrace() schedule() 時間片耗盡 等待資源到位 sleep_on() schedule() 等待資源到位 interruptible_sleep_on() schedule() 資源到位 wake_up_interruptible() 或收到信號 wake_up() 資源到位 wake_up() 收到信號 SIGCONT wake_up() 進(jìn)程控制塊-進(jìn)程標(biāo)識符 ?每個進(jìn)程都有一個唯一的標(biāo)識符,內(nèi)核通過這個標(biāo)識符來識別不同的進(jìn)程 。 ?文件系統(tǒng)信息- 對進(jìn)程使用文件情況進(jìn)行記錄 。 ?時間和定時器信息- 描述進(jìn)程在生存周期內(nèi)使用 CPU時間的統(tǒng)計 、 計費等信息 。 ?各種標(biāo)識符- 用簡單數(shù)字對進(jìn)程進(jìn)行標(biāo)識 。 讀者考慮一下為什么 ? 進(jìn)程控制塊 ?對進(jìn)程進(jìn)行全面描述的數(shù)據(jù)結(jié)構(gòu) Linux中把對進(jìn)程的描述結(jié)構(gòu)叫做 task_struct: struct task_struct { … … } ?傳統(tǒng)上 ,這樣的數(shù)據(jù)結(jié)構(gòu)被叫做 進(jìn)程控制塊PCB( process control blaock) 進(jìn)程控制塊-信息分類 ?狀態(tài)信息- 描述進(jìn)程動態(tài)的變化 。 else printf(I am the parent process, my process ID is %d\n,getpid())。 /*此時已經(jīng)有兩個進(jìn)程在同時運行 */ if(pid0) printf(error in fork!)。 /*此時僅有一個進(jìn)程 */ printf(―PID before fork():%d\n‖,(int)getpid())。下半部分將實現(xiàn)一個最短小的可啟動內(nèi)核,一是加深對 i386體系的了解,再就是演示系統(tǒng)開發(fā)的原始過程。 ?在 elf格式的可執(zhí)行代碼中, ld總是從0x8000000開始安排程序的 “ 代碼段 ” ,這個地址就是 虛地址 ?程序執(zhí)行時在物理內(nèi)存中的實際地址,則由內(nèi)核為其建立內(nèi)存映射時臨時分配,具體地址取決于當(dāng)時所分配的物理內(nèi)存頁面。 } main() { greeting()。T的匯編 :參見書 Linux系統(tǒng)地址映射示例 ?Linux采用分頁存儲管理。但是,許多 RISC處理器支持的段功能非常有限。 這個地址由分頁機(jī)制如何進(jìn)行處理 ? 分頁機(jī)制- 頁面高速緩存 分頁機(jī)制- Linux中的分頁 ?Linux主要采用分頁機(jī)制來實現(xiàn)虛擬存儲器管理 ,因為 : ?Linux的分段機(jī)制使得所有的進(jìn)程都使用相同的段寄存器值,這就使得內(nèi)存管理變得簡單,也就是說,所有的進(jìn)程都使用同樣的線性地址空間( 0~4G)。 如果給這個進(jìn)程沒有分配其它的線性地址 , 則頁目錄的其余 1023項都為 0,也就是這個進(jìn)程在頁目錄中只占一項 。 因此 , 這兩個地址的頁目錄域都指向進(jìn)程頁目錄的第 129項 。 ?我們從分配給進(jìn)程的線性地址的最高 10位 ( 分頁硬件機(jī)制把它自動解釋成頁目錄域 ) 開始 。 分頁機(jī)制-線性地址到物理地址的轉(zhuǎn)換 分頁機(jī)制-分頁示例 ?假如操作系統(tǒng)給一個正在運行的進(jìn)程分配的線性地址空間范圍是 0x20220000 到 0x2022ffff。 ?此外 , 與段的三種存取權(quán)限 ( 讀 、 寫 、 執(zhí)行 ) 不同 , 頁的存取權(quán)限只有兩種 ( 讀 、 寫 ) 。 當(dāng) U/S標(biāo)志為 0時 , 只有處于內(nèi)核態(tài)的操作系統(tǒng)才能對此頁或頁表進(jìn)行尋址 。 ?屬性見書 物理頁面基地址 屬性 31 11 0 分頁機(jī)制-兩級頁表 ?為什么要采用兩級頁表? …… …… …… …… …… 頁目錄 頁表 物理頁面 分頁機(jī)制-線性地址結(jié)構(gòu) ?這個結(jié)構(gòu)的偽代碼描述如下 typedef struct { unsigned int dir:10。 ?頁面的大小為 4KB ,物理頁面基地址需要多少位就可以? 分頁機(jī)制-頁表項結(jié)構(gòu) ?物理頁面基地址: 指的是頁所對應(yīng)的物理頁面在內(nèi)存的起始物理地址 。 ?頁的屬性:表示頁的特性。 地址轉(zhuǎn)換及保護(hù) Linux中的段 ?Linux是怎樣處理段機(jī)制? ? 分頁機(jī)制-頁 ?將線性地址空間劃分成若干大小相等的片,稱為 頁( Page) ?物理地址空間分成與 頁大小相等 的若干存儲塊,稱為 ( 物理)塊或頁面( Page Frame) ?頁的大小應(yīng)該為多少?由誰確定? 分頁機(jī)制-頁表 ?頁表 是把線性地址映射到物理地址的一種數(shù)據(jù)結(jié)構(gòu)。 ?選擇符(段寄存器)的結(jié)構(gòu): ?RPL表示請求者的特權(quán)級( Requestor Privilege Level) 保護(hù)模式下的特權(quán)級 ?保護(hù)模式提供了四個 特權(quán)級 ,用 0~3四個數(shù)字表示 ?很多操作系統(tǒng)(包括 Linux,Windwos)只使用了其中的最低和最高兩個,即 0表示最高特權(quán)級,對應(yīng) 內(nèi)核態(tài) ; 3表示最低特權(quán)級,對應(yīng) 用戶態(tài) 。 有關(guān)這些表的詳細(xì)內(nèi)容請參看有關(guān)保護(hù)模式的參考書。 ?段描述符表中的每一個表項叫做 段描述符 0 1 2 索引 (段號) 基地址 界限 屬性 Baseb Limitb Attributeb Basea Limita Attributea Basec Limitc Attributec 保護(hù)模式下的其他描述符表簡介 ?全局描述符表 GDT( Gloabal Descriptor Table) ?中斷描述符表 IDT( Interrupt Descriptor Table) ?局部描述符表 LDT( Local Descriptor Table) ?為了加快對這些表的訪問, Intel設(shè)計了專門的寄存器,以存放這些表的基地址及表的長度界限 。 虛擬-線性地址的轉(zhuǎn)換 虛擬地址空間 段描述符表-段表 ?如圖所示的段描述符表(或叫 段表 )來描述轉(zhuǎn)換關(guān)系。 ?段的 保護(hù)屬性 (Attribute): 表示段的特性。 ?用三個方面來描述段 ?段的 基地址 (Base Address):在線性地址空間中段的起始地址。 用于分頁機(jī)制的控制寄存器 物理地址、虛擬地址及線性地址 ?將主板上的物理內(nèi)存條所提供的內(nèi)存空間定義為 物理內(nèi)存空間 ,其中每個內(nèi)存單元的實際地址就是 物理地址 ?將應(yīng)用程序員看到的內(nèi)存空間定義為虛擬地址空間 (或地址空間 ),其中的地址就叫 虛擬地址 (或虛地址 ), 一般用 “ 段:偏移量 ”的形式來描述 ?線性地址空間 是指一段連續(xù)的,不分段的,范圍為 0到 4GB的地址空間,一個 線性地址 就是線性地址空間的一個絕對地址。 ?EIP中的低 16位可以被單獨訪問,給它起名叫指令指針 IP寄存器,用于 16位尋址。 ?這些段寄存器中存放的不再是某個段的基地址,而是某個段的 選擇符 ( Selector) ?段基地址存放在段 描述符表 ( Descriptor )中,表的索引就是 選擇符 常用 寄存器簡介 ?指令指針寄存器 ?指令指針寄存器 EIP中存放下一條將要執(zhí)行指令的偏移量( offset ),這個偏移量是相對于目前正在運行的代碼段寄存器 CS而言的。 IA32寄存器簡介 ? ? 把 16位的通用寄存器 、 標(biāo)志寄存器以及指令指針寄存器擴(kuò)充為 32位的寄存器 ? ? 段寄存器仍然為 16位 。 ? 從此開始引進(jìn)了一個全新理念 —保護(hù)模式 ? 訪問內(nèi)存時不能直接從段寄存器中獲得段的起始地址了,而需要經(jīng)過額外轉(zhuǎn)換和檢查 。 ? 把 16位的段地址左移動 4位后,再與 16位的偏移量相加便可獲得一個 20位的內(nèi)存地址, 白銀時期- “ 保護(hù)模式 ” 的引入 ? intel的 80286處理器于 1982年問世 。 ? 段描述了一塊有限的內(nèi)存區(qū)域,區(qū)域的起始位置存在專門的寄存器(段寄存器)中。 內(nèi)存尋址的不同時期 石器時期- 8位 青銅時期- 16位 白銀時期- 24位 黃金時期- 32位 石器時期- 8位尋址 ? 在微處理器的歷史上,第一款微處理器芯片 4004是由 Intel推出的, 4位。 ? 在這眾多的平臺中,大家最熟悉的就是 i386,即Intel80386體系結(jié)構(gòu)。 ?下載代碼,親手搭建實驗系統(tǒng)。 ?進(jìn)程間通信 (IPC)- 支持進(jìn)程間各種通信機(jī)制,包括共享內(nèi)存、消息隊列及管道等。 ?內(nèi)存管理-允許多個進(jìn)程安全地共享主內(nèi)存區(qū)域 ?虛擬文件系統(tǒng)-隱藏各種不同硬件的具體細(xì)節(jié),為所有設(shè)備提供統(tǒng)一的接口。例如, CPU、 內(nèi)存、硬盤、網(wǎng)絡(luò)硬件等等。 ?Linux內(nèi)核 —操作系統(tǒng)的靈魂,負(fù)責(zé)管理磁盤上的文件、內(nèi)存,負(fù)責(zé)啟動并運行程序,負(fù)責(zé)從網(wǎng)絡(luò)上接收和發(fā)送數(shù)據(jù)包等等。 ?采用郵件列表來進(jìn)行項目管理、交流、錯誤報告 ?有大量的用戶進(jìn)行測試,正式發(fā)布的代碼質(zhì)量高 整個系統(tǒng)的核心-內(nèi)核 硬件 系統(tǒng)調(diào)用接口 應(yīng)用 程序進(jìn)程 1 應(yīng)用 程序進(jìn)程 2 應(yīng)用 程序進(jìn)程 3 Linux內(nèi)核 用戶進(jìn)程 內(nèi)核子系統(tǒng) 系統(tǒng)調(diào)用 整個系統(tǒng)的核心-內(nèi)核 ?用戶進(jìn)程 —運行在 Linux內(nèi)核之上的一個龐大軟件集合。 ?開發(fā)人員憑興趣去開發(fā),熱情高,具有創(chuàng)造性。 開放與協(xié)作的開發(fā)模式 ?世界各地軟件愛好者集體智慧的結(jié)晶 ?提供源代碼,遵守 GPL。 Linux系統(tǒng)或發(fā)布版 ?符合 POSIX 標(biāo)準(zhǔn)的操作系統(tǒng)內(nèi)核、 Shell 和外圍工具。 ? GNU 項目產(chǎn)品包括 emacs 編輯器、著名的 GNU C 和 Gcc編譯器等,這些軟件叫做 GNU軟件。 ?內(nèi)核發(fā)出請求,服務(wù)器做出應(yīng)答 ?為各個服務(wù)器模塊的相對獨立性,使得其維護(hù)相對容易 歷史悠久的 Unix ?在 MULTICS( 1969) 的肩上 ?制研制者 Ken Thompson和 Dennis M. Ritchie ?站 Unix的誕生還伴有 C語言呱呱落地
點擊復(fù)制文檔內(nèi)容
教學(xué)教案相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1