Linux內(nèi)核結(jié)構(gòu)與進程管理.ppt_第1頁
Linux內(nèi)核結(jié)構(gòu)與進程管理.ppt_第2頁
Linux內(nèi)核結(jié)構(gòu)與進程管理.ppt_第3頁
Linux內(nèi)核結(jié)構(gòu)與進程管理.ppt_第4頁
Linux內(nèi)核結(jié)構(gòu)與進程管理.ppt_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Linux 內(nèi)核結(jié)構(gòu)與進程管理,Linux系統(tǒng)結(jié)構(gòu),Linux kernel: 開放源代碼的linux操作系統(tǒng)內(nèi)核,目前版本為2.6,Linux內(nèi)核組成,1. 進程調(diào)度程序( S C H E D)負責(zé)控制進程訪問C P U。保證進程能夠公平地訪問C P U,同時保證內(nèi)核可以準時執(zhí)行一些必需的硬件操作。 2. 內(nèi)核管理程序( M M)使多個進程可以安全地共享機器的主存系統(tǒng),并支持虛擬內(nèi)存。 3. 虛擬文件系統(tǒng)( V F S)。通過提供一個所有設(shè)備的公共文件接口, V F S抽象了不同硬件設(shè)備的細節(jié)。此外, V F S支持與其他操作系統(tǒng)兼容的不同的文件系統(tǒng)格式。 4. 網(wǎng)絡(luò)接口( N E T)提供

2、對許多建網(wǎng)標準和網(wǎng)絡(luò)硬件的訪問。 5. 進程間通信( I P C)子系統(tǒng)為進程與進程之間的通信提供了一些機制。 這些子系統(tǒng)雖然實現(xiàn)的功能相對獨立,但存在著較強的依賴性(調(diào)用依賴模塊中相應(yīng)的函數(shù)),所以說linux內(nèi)核是單塊結(jié)構(gòu)(monolithic)的,而windows體系結(jié)構(gòu)是微內(nèi)核(microkernel)的。,Linux啟動流程,從BIOS到KERNEL MBRKERNELKERNEL自解壓內(nèi)核初始化內(nèi)核啟動(start_kernel函數(shù),在linux內(nèi)核源代碼樹的/usr/src/linux/init/main.c中) 2. 內(nèi)核啟動:創(chuàng)建1進程并執(zhí)行,由它創(chuàng)建若干內(nèi)核線程(kerne

3、l thread),然后裝入并執(zhí)行程序/sbin/init(變成一個用戶進程)。此后,init根據(jù)/etc/inittab配置文件來執(zhí)行相應(yīng)的腳本進行系統(tǒng)初始化,如設(shè)置鍵盤、字體,裝載模塊,設(shè)置網(wǎng)絡(luò)等 對于Redhat來說,執(zhí)行的順序為: /etc/rc.d/rc.sysinit #由init執(zhí)行的第一個腳本 /etc/rc.d/rc$RUNLEVEL#$RUNLEVEL為缺省的運行模式 /etc/rc.d/rc.local #運行模式2、3、5時會運行的腳本 /sbin/mingetty(或getty)#等待用戶登錄 /etc/inittab中指定了系統(tǒng)的運行級別(RUNLEVEL),ini

4、t根據(jù)運行級別啟動相關(guān)的服務(wù)(一些后臺進程),實現(xiàn)不同的功能。 RUNLEVEL:06 0:halt, 1:單用戶,2:多用戶,3:多用戶并啟動NFS服務(wù) 4:保留,5:運行xdm(X window)以圖形界面方式登錄 6:reboot,Linux中用戶登陸流程,linux進程的四要素,程序 PCB 地址空間 系統(tǒng)堆??臻g PCB:進程創(chuàng)建時內(nèi)核為其分配的一個核心數(shù)據(jù)結(jié)構(gòu),進程自身不能直接存取。 系統(tǒng)堆棧空間:進程運行在核心態(tài)時使用的堆棧,和PCB連在一起,共8KB,其中PCB約占1000字節(jié),系統(tǒng)堆棧空間約占7200字節(jié)。 2.2 內(nèi)核中l(wèi)inux進程個數(shù)有最大值限制(4092)。但2.4以

5、后,系統(tǒng)中的進程個數(shù)受限于系統(tǒng)的物理內(nèi)存數(shù),即限定所有進程的PCB及系統(tǒng)堆棧(8K)占用的空間1/2的物理內(nèi)存總和。例64M內(nèi)存:進程數(shù)64M/2/8K=4K,PCB中的重要信息,身份信息:pid,uid,gid,euid,egid等; 狀態(tài)信息:running, interruptible, non-interruptible, stopped, zombie 調(diào)度信息:policy, priority, rt_priorty, need_resched policy即進程的類別,分SCHED_FIFO, SCHED_RR, SCHED_OTHER三種,前兩種為實時進程,后一種為非實時進程

6、IPC信息:如定義對某些信號的處理等 家族信息:父進程、兄弟進程、子進程信息 時鐘和定時信息 文件系統(tǒng) 存儲管理,進程的創(chuàng)建,進程創(chuàng)建:fork , clone, vfork 父子進程共享資源的形式 a.不共享(fork時缺省) b.部分共享 c.完全共享(線程),#include int myvar=0;void main() int pid; pid = fork(); /system call if (pid 0 ) /error occurred printf(“fork failed.”); exit(-1); /system call else if (pid = 0 ) /chi

7、ld process printf(“child process executingn”); myvar = 1; else /parent process wait(); /system call, wait for children completion printf(“child complete.”); myvar +; printf(“father,myvar=%d”,myvar); exit(0); ,fork實例,進程調(diào)度,調(diào)度時機 a. 用戶進程自愿放棄CPU,如執(zhí)行sleep()系統(tǒng)調(diào)用; b.系統(tǒng)調(diào)用中,需要等待時,直接調(diào)用schedule()進行調(diào)度; c.系統(tǒng)調(diào)用、中斷或異常處理完成后,返回到用戶空間前,若當(dāng)前進程的PCB中的need_resched = 1,則發(fā)生調(diào)度; 調(diào)度策略:基于進程的權(quán)值(weight,即動態(tài)優(yōu)先級) 實時進程: weight = 1000+rt_priority (100

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論