作業系統理論細節 2

2022-09-10 17:45:15 字數 3201 閱讀 8466

訊號量

訊號量是最早出現的用來解決程序同步與互斥問題的機制。

訊號量(saphore)值表示相應資源的使用情況。訊號量s>=0時,s表示可用資源的數量。執行一次p操作意味著請求分配乙個資源,因此s的值減1;當s<0時,表示已經沒有可用資源,s的絕對值表示當前等待該資源的程序數。請求者必須等待其他程序釋放該類資源,才能繼續執行。而執行乙個v操作意味著釋放乙個資源,因此s的值加1;若s<0,表示有某些程序正在等待該資源,因此要喚醒乙個等待狀態的程序,使之執行下去。

注意,訊號量的值只能由pv操作來改變。

磁碟裝置的i/o 控制主要採取dma的方式。

direct memory access,直接記憶體訪問。

一種記憶體訪問技術,磁碟裝置i/o的控制主要方式。它允許某些計算機計算機外設,可以獨立地直接讀寫系統記憶體,而不需cpu介入處理。在同等程度的處理器負擔下,dma是一種快速的資料傳送方式。很多硬體的系統會使用dma,包含硬碟控制器、繪圖顯示卡、網絡卡和音效卡。

在 實時系統的設計中,經常會出現多個任務呼叫同乙個函式的情況。如果這個函式不幸被設計成為不可重入的函式的話,那麼不同任務呼叫這個函式時可能修改其他任 務呼叫這個函式的資料,從而導致不可預料的後果。那麼什麼是可重入函式呢?所謂可重入是指乙個可以被多個任務呼叫的過程,任務在呼叫時不必擔心資料是否會 出錯。不可重入函式在實時系統設計中被視為不安全函式。

滿足下列條件的函式多數是不可重入的:

(1)函式體內使用了靜態的資料結構;

(2)函式體內呼叫了malloc()或者free()函式;

(3)函式體內呼叫了標準i/o函式。

如何寫出可重入的函式?在函式體內不訪問那些全域性變數,不使用靜態區域性變數,堅持只使用預設態(auto)區域性變數,寫出的函式就將是可重入的。如果必須訪問全域性變數,記住利用互斥訊號量來保護全域性變數。或者呼叫該函式前關中斷,呼叫後再開中斷。

自動變數,只在定義它們的時候才建立,在定義它們的函式返回時系統**變數所佔儲存空間。對這些變數儲存空間的分配和**是由系統自動完成的。一般情況下,不作專門說明的區域性變數,均是自動變數。自動變數也可用關鍵字auto作出說明。

可重入函式可以被乙個以上的任務呼叫,而不必擔心資料被破壞。可重入函式任何時候都可以被中斷,一段時間以後又可以執行,而相應的資料不會丟失。可重入函式或者只使用區域性變數,即儲存在cpu暫存器中或堆疊中;或者使用全域性變數,則要對全域性變數予以保護。

ext3還是使用15個inode來查詢資料塊,前12個為直接資料塊,直接指向儲存資料的資料塊,接下來分別為一級間接塊,二級間接塊,**間接塊.

最大檔案:

前面直接指向12個資料塊,一級間接塊最大為block size / 4,block size就是資料塊的大小,因為乙個索引是4個位元組,所以除以4,這樣計算下來,最大的檔案可以使用的總塊數為:12 + (block size/4) + (block size/4)^2 + (block size/4)^3,如果block size大小為4k,則為(12 + 2^10 + 2^20 + 2^30) * 2^12 約等於4t。

檔案分配對應於檔案的物理結構,是指如何為檔案分配磁碟塊。常用的磁碟空間分配方 法有三種:連續分配、鏈結分配和索引分配。

順序分配:順序 分配方法要求每個檔案在磁碟上占有一組連續的塊。

隱式鏈結分配: 每個檔案對應乙個磁碟塊的鍊錶;磁碟塊分布在磁碟的任何地方,除最後乙個盤塊外,每乙個盤塊都有指向下乙個盤塊的指標,這些指針對使用者是透明的。

顯式鏈結分配:是指把用於鏈結檔案各物理塊的指標,顯式地存放在記憶體的一張鏈結表中。 該錶在整個磁碟僅設定一張,每個表項中存放鏈結指標,即下乙個盤塊號。 在該表中,凡是 屬於某一檔案的第乙個盤塊號,或者說是每一條鏈的鏈首指標所對應的盤塊號,均作為檔案 位址被填入相應檔案的fcb的「實體地址」欄位中。由於查詢記錄的過程是在記憶體中進行 的,因而不僅顯著地提高了檢索速度,而且大大減少了訪問磁碟的次數。由於分配給檔案的 所有盤塊號都放在該表中,故稱該錶為檔案分配表(file allocation table, fat)。ms-dos 採用的就是這種方式。

檔案描述符與開啟檔案之間的關係

每乙個檔案描述符會與乙個開啟檔案相對應,同時,不同的檔案描述符也會指向同乙個檔案相同的檔案可以被不同的程序開啟也可以在同乙個程序中被多次開啟。系統為每乙個程序維護了乙個檔案描述符表,該錶的值都是從0開始的,所以在不同的程序中你會看到相同的檔案描述符,這種情況下相同檔案描述符有可能指向同乙個檔案,也有可能指向不同的檔案。具體情況要具體分析,要理解具體其概況如何,需要檢視由核心維護的3個資料結構。

1. 程序級的檔案描述符表

2. 系統級的開啟檔案描述符表

3. 檔案系統的i-node表

程序級的描述符表的每一條目記錄了單個檔案描述符的相關資訊。

1. 控制檔案描述符操作的一組標誌。(目前,此類標誌僅定義了乙個,即close-on-exec標誌)

2. 對開啟檔案控制代碼的引用

核心對所有開啟的檔案的檔案維護有乙個系統級的描述符**(open file description table)。有時,也稱之為開啟檔案表(open file table),並將**中各條目稱為開啟檔案控制代碼(open file handle)。乙個開啟檔案控制代碼儲存了與乙個開啟檔案相關的全部資訊,如下所示:

1. 當前檔案偏移量(呼叫read()和write()時更新,或使用lseek()直接修改)

2. 開啟檔案時所使用的狀態標識(即,open()的flags引數)

3. 檔案訪問模式(如呼叫open()時所設定的唯讀模式、只寫模式或讀寫模式)

4. 與訊號驅動相關的設定

5. 對該檔案i-node物件的引用

6. 檔案型別(例如:常規檔案、套接字或fifo)和訪問許可權

7. 乙個指標,指向該檔案所持有的鎖列表

8. 檔案的各種屬性,包括檔案大小以及與不同型別操作相關的時間戳

多道程式執行(分為順序執行 和 併發執行)。

如果是順序執行: 可在現

如果是併發執行(偽並行):不可在現。

緩衝池 可以由軟體也可以由硬體實現。但是spooling技術 只能由軟體實現

按序分配可以破壞環路等待的條件

一次性給程序分配完全部資源破壞請求與等待條件

最佳適應:空閒區按容量大小遞增 最差適應:空閒區按容量大小遞減 最先適應:空閒區按位址大小遞增

作業系統理論細節 1

分時作業系統具有以下特徵 實時作業系統基本特徵 1.多路性 1.及時性 2.互動性 2.可靠性 3.獨占性 4.及時性 執行系統呼叫的過程是這樣的 正在執行的程序先傳遞系統呼叫引數,然後由陷入 trap 指令負責將使用者態轉化為核心態,並將返回位址壓入堆疊以備後用,接下來cpu執行相應的核心態服務程...

作業系統理論

作業系統理論 1.作業系統是什麼?作業系統是乙個協調 管理 控制計算機硬體資源與應用軟體資源的一段控制程式 有兩大功能 1.將複雜的硬體操作封裝成簡單的介面給應用程式或者使用者去使用 2.將多個程序對硬體的競爭變得有序 作業系統發展史 併發 多個任務看起來是同時執行的 序列 乙個任務完完整整地執行完...

作業系統 理論知識

可能很多人都會說,我們平時裝的windows7 windows10都是作業系統,沒錯,他們都是作業系統。那除了這些還有沒有其他的?作業系統 operating system,os 是指控制和管理整個計算機系統的硬體和軟體資源,並合理地組織排程計算機的工作和資源的分配,以提供給使用者和其他軟體方便的介...