(二)操作系统设计技术知识重点笔记
一、內(nèi)核導(dǎo)論
文件子系統(tǒng):負(fù)責(zé)管理文件包括:分配文件空間、管理空閑空間,控制對(duì)文件的存取,為用戶檢索數(shù)據(jù)。
進(jìn)程控制子系統(tǒng): 進(jìn)程同步;進(jìn)程間通信;存儲(chǔ)管理;進(jìn)程調(diào)度。
硬件控制:負(fù)責(zé)處理中斷及與機(jī)器通信,中斷不是由特殊的進(jìn)程服務(wù)的,而是由內(nèi)核中特殊的函數(shù)服務(wù)的,這些特殊函數(shù)是在當(dāng)前運(yùn)行的進(jìn)程的上下文被調(diào)用的
二、文件的內(nèi)部表示:
1、索引節(jié)點(diǎn)表(inode table)
每個(gè)文件都有一個(gè)索引節(jié)點(diǎn)(inode)(包含文件所有者、存取權(quán)限、及其存取時(shí)間等信息)。但是,每個(gè)文件可以有多個(gè)名字,每個(gè)名字被稱為一個(gè)link(鏈接)。一個(gè)進(jìn)程使用名字檢索一個(gè)文件時(shí),內(nèi)核每次分析文件名中的一個(gè)分量,檢查該進(jìn)程是否有檢索路徑中的目錄,并且最終檢索到該文件所對(duì)應(yīng)的索引節(jié)點(diǎn)。如:open(“/fs2/mjb/rje/sourcefile”,1);當(dāng)一個(gè)進(jìn)程建立一個(gè)新文件時(shí),內(nèi)核分配給它一個(gè)尚未使用的索引節(jié)點(diǎn)。索引節(jié)點(diǎn)被存儲(chǔ)在文件系統(tǒng)中(即磁盤索引節(jié)點(diǎn)表),但是當(dāng)操作文件時(shí),內(nèi)核將它們讀到內(nèi)存索引節(jié)點(diǎn)表中,即:對(duì)系統(tǒng)中的每個(gè)活動(dòng)的文件(被某個(gè)進(jìn)程打開了),內(nèi)存中索引節(jié)點(diǎn)表都包含一個(gè)條目。幾個(gè)系統(tǒng)文件表?xiàng)l目可能對(duì)應(yīng)于同一個(gè)內(nèi)存索引節(jié)點(diǎn)表(不同進(jìn)程打開同一個(gè)文件)以Linux為例,每個(gè)文件在內(nèi)核中用inode結(jié)構(gòu)體表示。
| 所有者 | mjb |
| 用戶組 | root |
| 類型 | 整個(gè)文件 |
| 許可權(quán) | rwxr-xr-x |
| 最近一次讀文件時(shí)間 | 1984.10.23下午1:45 |
| 最近一次寫文件時(shí)間 | 1984.10.22上午10:30 |
| 最近一次改變索引節(jié)點(diǎn)時(shí)間 | 1984.10.23下午1:30 |
| 大小 | 6030字節(jié) |
?
2、文件表(file table)
是一個(gè)全局表,為系統(tǒng)中所有的進(jìn)程共享。對(duì)每個(gè)活動(dòng)的open, 它都包含一個(gè)條目。每個(gè)系統(tǒng)文件表的條目都包含文件偏移量、訪問模式(讀、寫、or 讀-寫)以及指向它的文件描述符表的條目計(jì)數(shù)。以Linux為例,已打開的文件在內(nèi)核中用file結(jié)構(gòu)體表示,文件描述符表中的指針指向file結(jié)構(gòu)體
3、用戶文件描述符表(user filedescriptor table)
是每個(gè)進(jìn)程分配一個(gè)。標(biāo)識(shí)著一個(gè)進(jìn)程的所有打開了的文件。用戶區(qū)的一部分,除非通過使用文件描述符的函數(shù),否則程序無法對(duì)其進(jìn)行訪問。對(duì)進(jìn)程中每個(gè)打開的文件,文件描述符表都包含一個(gè)條目。以Linux為例,每個(gè)進(jìn)程用一個(gè)files_struct 結(jié)構(gòu)體來記錄文件描述符的使用情況,files_struct結(jié)構(gòu)稱為用戶打開文件表,它是進(jìn)程的私有數(shù)據(jù)。此外,每個(gè)進(jìn)程用一個(gè)fs_struct結(jié)構(gòu)體來描述進(jìn)程的當(dāng)前工作目錄及其所在文件系統(tǒng)根目錄下的索引節(jié)點(diǎn)。
父進(jìn)程創(chuàng)建子進(jìn)程,資源共享。每個(gè)進(jìn)程都有唯一的標(biāo)識(shí),不同用戶啟動(dòng)程序,產(chǎn)生不同的進(jìn)程。
三、進(jìn)程結(jié)構(gòu)
一個(gè)進(jìn)程是一個(gè)程序的執(zhí)行,它是由一系列有格式的字節(jié)組成的,這些字節(jié)被解釋成:機(jī)器指令、數(shù)據(jù)和棧區(qū)。當(dāng)內(nèi)核調(diào)度各個(gè)進(jìn)程使之執(zhí)行時(shí),這些進(jìn)程看似是同時(shí)執(zhí)行的。而且,可以有多個(gè)進(jìn)程是一個(gè)程序的實(shí)例。一個(gè)進(jìn)程循著一個(gè)嚴(yán)格的指令序列執(zhí)行,這個(gè)指令序列是自包含的,不會(huì)跳轉(zhuǎn)到別的進(jìn)程的指令序列上。進(jìn)程通過系統(tǒng)調(diào)用與其他進(jìn)程及外界進(jìn)行通信。
進(jìn)程包括以下八個(gè):
1.標(biāo)識(shí)號(hào)2.狀態(tài)信息3.調(diào)度信息4.有關(guān)進(jìn)程間通信信息5.進(jìn)程鏈接信息6.時(shí)間定時(shí)器7.文件系統(tǒng)信息8.虛地址和物理內(nèi)存之間的關(guān)系
其他:
1.?? 進(jìn)程的標(biāo)識(shí):系統(tǒng)通過進(jìn)程標(biāo)識(shí)號(hào)(PID)唯一標(biāo)識(shí)一個(gè)進(jìn)程(是線性增長的)
2.?? 進(jìn)程樹及進(jìn)程之間關(guān)系:0進(jìn)程是一個(gè)特殊進(jìn)程,它是在系統(tǒng)引導(dǎo)時(shí)被“手工”創(chuàng)建的,當(dāng)它創(chuàng)建一個(gè)子進(jìn)程(1進(jìn)程-init進(jìn)程,是系統(tǒng)中其他每個(gè)進(jìn)程的祖先)之后,0進(jìn)程就變成對(duì)換進(jìn)程。
If(euid==0)判斷是否為根用戶。
除了0進(jìn)程以外,每個(gè)進(jìn)程都是被另外一個(gè)進(jìn)程執(zhí)行fork創(chuàng)建的。
3.?? 進(jìn)程的上下文:
用戶級(jí)上下文:由進(jìn)程的正文、數(shù)據(jù)、用戶棧和共享存儲(chǔ)區(qū)組成
寄存器級(jí)上下文:程序計(jì)數(shù)器、處理機(jī)狀態(tài)寄存器、棧指針、通用寄存器
系統(tǒng)級(jí)上下文:進(jìn)程表表項(xiàng)、進(jìn)程u區(qū)、本進(jìn)程區(qū)表項(xiàng)、區(qū)表及頁表、核心棧
4.?? 進(jìn)程的控制
四、I/O子系統(tǒng)
1.UNIX/Linux系統(tǒng)包含兩類設(shè)備:塊設(shè)備、字符設(shè)備。每個(gè)設(shè)備有一個(gè)特殊文件名,可按文件方式存取。設(shè)備特殊文件有一個(gè)索引節(jié)點(diǎn),在文件系統(tǒng)目錄樹中占據(jù)一個(gè)節(jié)點(diǎn)。設(shè)備特殊文件以存儲(chǔ)在它的索引節(jié)點(diǎn)中的文件類型與其他文件相區(qū)別,其類型為:字符特殊文件或者 塊特殊文件。當(dāng)一個(gè)設(shè)備既有塊接口又有字符接口時(shí),由兩個(gè)設(shè)備特殊文件所代表。
2.由塊設(shè)備開關(guān)表(block deviceswitch table)和字符設(shè)備開關(guān)表(character device switch table)描述。每一種設(shè)備類型在表中有若干表項(xiàng),這些表項(xiàng)在系統(tǒng)調(diào)用時(shí)引導(dǎo)內(nèi)核轉(zhuǎn)向適當(dāng)?shù)脑O(shè)備驅(qū)動(dòng)程序接口設(shè)備文件的系統(tǒng)調(diào)用根據(jù)文件的類型通過這兩個(gè)設(shè)備開關(guān)表匯集。對(duì)塊設(shè)備,系統(tǒng)調(diào)用mount和umount也調(diào)用設(shè)備打開和關(guān)閉的過程塊設(shè)備以及安裝在文件系統(tǒng)上的文件的系統(tǒng)調(diào)用read和write調(diào)用高速緩沖算法,該算法又調(diào)用相應(yīng)設(shè)備的策略過程。字符設(shè)備特殊文件的系統(tǒng)調(diào)用read,write,ioctl轉(zhuǎn)向字符設(shè)備開關(guān)表中相應(yīng)的過程。
3.是由機(jī)器相關(guān)的控制寄存器或操作設(shè)備的I/O指令,以及中斷向量組成的:當(dāng)一個(gè)設(shè)備中斷出現(xiàn)時(shí),系統(tǒng)識(shí)別發(fā)出中斷的設(shè)備,并調(diào)用適當(dāng)?shù)闹袛嗵幚沓绦颉?/p>
?
總結(jié)
以上是生活随笔為你收集整理的(二)操作系统设计技术知识重点笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (一)操作系统概论复习要点笔记
- 下一篇: 操作系统与虚拟化安全第一次作业-关键习题