天天看點

Nowcoder專項練習:作業系統(三)

1,程序五種狀态轉換

Nowcoder專項練習:作業系統(三)
程序三種基本狀态:
  • 就緒狀态
  • 執行狀态
  • 阻塞狀态

2,管道

管道是指用于連接配接一個讀程序和一個寫程序以實作它們之間通信的一個共享檔案。

3,分頁與分段

  • 分頁:頁的大小固定,在記憶體中叫頁框,外存叫block,cache中叫cache塊。
  • 分段:段的大小不固定。因為一段表示的是一個邏輯完整的功能段。段劃分的依據是:一個完整的功能,而一個功能需要多少代碼是不确定的。段這種劃分方式也就使得它可以被共享,而一頁卻不可以被共享。

4,邏輯位址轉化為實體位址

在請求分頁存儲管理方案中,若某使用者空間為16個頁面,頁長1KB,現有頁表如下,則邏輯位址0A1F(H)所對應的實體位址為多少?

頁号 塊号
1
1 5
2 3
3 7
4 2

在計算上:

位址偏移量=邏輯位址%頁面大小

是以,位址偏移量為 0A1F(H)(2591)%1024=543

頁号=邏輯位址/頁面大小

是以,頁号為 2591/1024=2

查頁表得到塊号為3,

故實體位址=3*1024+543=3615=0E1F(H)

或者,用更直覺的方法:

頁長1KB 2^10=1k 頁面長度為10位,

故 邏輯位址0A1F(H)轉化為二進制位 0000 1010 0001 1111

前面的2(二進制10)為頁号,查表找塊号為3,故實體位址為 0000 1110 0001 1111 (0E1F)

5,SPOOLing

SPOOLing (即外部裝置聯機并行操作),該技術是在通道技術和多道程式設計基礎上産生的,它由主機和相應的通道共同承擔作業的輸入輸出工作,利用磁盤作為後援存儲器,實作外圍裝置同時聯機操作。

SPOOLing系統由專門負責I/O的常駐記憶體的程序以及輸入井、輸出井組成;它将獨占裝置改造為共享裝置,實作了虛拟裝置功能。

Nowcoder專項練習:作業系統(三)

6,PnP

PnP全稱Plug-and-Play,譯文為即插即用。意思是系統自動偵測周邊裝置和闆卡并自動安裝裝置驅動程式,做到插上就能用,無須人工幹預,是Windows自帶的一項技術。

PnP是由Microsoft提出的,意思是系統自動偵測周邊裝置和闆卡并自動安裝裝置驅動程式,做到插上就能用。所謂即插即用是指将符合PnP标準的PC插卡等外圍裝置安裝到電腦時,作業系統自動設定系統結構的技術。

7,多道程式系統

多道程式系統通過組織作業(編碼或資料)使CPU總有一個作業可執行,是以提高了:

  • CPU使用率
  • 系統吞吐量
  • I/O裝置使用率

8,位示圖

位示圖是利用二進制的一位來表示磁盤中的一個盤塊的使用情況。當其值為“0”時,表示對應的盤塊空閑;為“1”時,表示已經配置設定。

檔案存儲管理的方法:

  1. 空閑表法和空閑連結清單法
  2. 位示圖法
  3. 成組連結法

9,分時與實時作業系統

分時系統具有多路性、互動性、“獨占”性和及時性的特征。

多路性指,伺時有多個使用者使用一台計算機,宏觀上看是多個人同時使用一個CPU,微觀上是多個人在不同時刻輪流使用CPU。互動性是指,使用者根據系統響應結果進一步提出新請求(使用者直接幹預每一步)。

“獨占”性是指,使用者感覺不到計算機為其他人服務,就像整個系統為他所獨占。

及時性指,系統對使用者提出的請求及時響應。

分時系統的特征:

  • 多路性
  • 互動性
  • 獨占性
  • 及時性

實時系統的特征:

  • 及時性
  • 可靠性

10,頁面排程算法

(1)随機算法rand(Random Algorithm)

利用軟體或硬體的随機數發生器來确定主存儲器中被替換的頁面。這種算法最簡單,而且容易實作。但是,這種算法完全沒用利用主存儲器中頁面排程情況的曆史資訊,也沒有反映程式的局部性,是以命中率較低。

(2)先進先出排程算法(FIFO)

先進先出排程算法根據頁面進入記憶體的時間先後選擇淘汰頁面,本算法實作時需要将頁面按進入記憶體的時間先後組成一個隊列,每次排程隊首頁面予以淘汰。它的優點是比較容易實作,能夠利用主存儲器中頁面排程情況的曆史資訊,但是,它沒有反映程式的局部性,因為最先調入主存的頁面,很可能也是經常要使用的頁面。

(3)最近最少排程算法LFU(Least Frequently Used Algorithm )

先進先出排程算法沒有考慮頁面的使用情況,大多數情況下性能不佳。根據程式執行的局部性特點,程式一旦通路了某些代碼和資料,則在一段時間内會經常通路他們,是以最近最少用排程在選擇淘汰頁面時會考慮頁面最近的使用,總是選擇在最近一段時間以來最少使用的頁面予以淘汰。算法實作時需要為每個頁面設定資料結構記錄頁面自上次通路以來所經曆的時間。

(4)最近最不常用排程算法LRU(Least Recently Used Algorithm)

由于程式設計中經常使用循環結構,根據程式執行的局部性特點,可以設想在一段時間内經常被通路的代碼和資料在将來也會經常被通路,顯然這樣的頁面不應該被淘汰。最近最不常用排程算法總是根據一段時間内頁面的通路次數來選擇淘汰頁面,每次淘汰通路次數最少的頁面。算法實作時需要為每個頁面設定計數器,記錄通路次數。計數器由硬體或作業系統自動定時清零。

(5)最優替換算法OPT(Optimal replacement Algorithm)

前面介紹的幾種頁面排程算法主要是以主存儲器中頁面排程情況的曆史資訊為依據的,他假設将來主存儲器中的頁面排程情況與過去一段時間時間内主存儲器中的頁面排程情況是相同的。顯然,這種假設不總是正确的。最好的算法應該是選擇将來最久不被通路的頁面作為被替換的頁面,這種算法的命中率一定是最高的,它就是最有替換算法。要實作OPT算法,唯一的方法就是讓程式先執行一遍,記錄下實際的頁位址流情況。根據這個頁位址流才能找出目前要被替換的頁面。顯然,這樣做是不現實的。是以,OPT算法隻是一種理想化的算法,然而,它也是一種很有用的算法。實際上,經常把這種算法用來作為評價其它頁面排程算法好壞的标準。在其它條件相同的情況下,哪一種頁面排程算法的命中率與OPT算法最接近,那麼,它就是一種比較好的頁面替換算法。

11,管态和目态

cpu工作狀态分為系統态(或稱管理态,管态)和使用者态(或稱目态)。

引入這兩個工作狀态的原因是:

為了避免使用者程式錯誤地使用特權指令,保護作業系統不被使用者程式破壞。

具體規定為:

當cpu處于使用者态時,不允許執行特權指令,當cpu處于系統态時,可執行包括特權指令在内的一切機器指令。

  • 調用程式是運作在使用者态,而被調用的程式是運作在系統态

12,改善磁盤裝置I/O性能

  • 重排I/O請求次序,也就是進行I/O排程,進而使程序之間公平地共享磁盤通路,減少I/O完成所需要的平均等待時間。
  • 緩沖區結合預讀和滞後寫技術對于具有重複性及陣發性的I/O程序改善磁盤I/O性能很有幫助。
  • 優化檔案實體塊的分布可以減少尋找時間與延遲時間,進而提高磁盤性能。

但是,在一個磁盤上設定多個分區與改善裝置I/O性能并無多大聯系,相反還會帶來處理的複雜和降低使用率。

13,線程的共享與獨有

在同一程序下時,線程共享的内容有:

  1. 代碼段(code segment)
  2. 資料段(data section)
  3. 程序打開的檔案描述符
  4. 信号的處理器
  5. 程序的目前目錄和
  6. 程序使用者ID與程序組ID

線程獨有的内容包括:

  1. 線程ID
  2. 寄存器組的值
  3. 線程的堆棧
  4. 錯誤傳回碼
  5. 線程的信号屏蔽碼

14,系統調用

  • 系統調用把應用程式的請求傳輸給系統核心執行。
  • 系統調用中被調用的過程運作在"系統态"中。
  • 利用系統調用能夠得到作業系統提供的多種服務。
  • 系統調用時作業系統給程式設計人員提供的接口。
  • 系統調用給使用者屏蔽了裝置通路的細節。
  • 系統調用保護了一些自能在核心模式執行的操作指令。

15,系統開銷比率

就緒隊列中有10個程序,時間片設定為200ms,CPU程序切換要花費10ms,則系統開銷所占比率是多少?

在計算上:

時鐘中斷                                      時鐘中斷
    |-作業系統排程10ms->|----任務執行(200-10)ms---->|-....
           

也就是說,作業系統排程耗時本身要算到時鐘的時間片裡的。

因為作業系統的排程邏輯是:發生中斷->處理排程->發生中斷->處理排程…

一個時間片長度就是兩次中斷的時間長度。

是以,開銷所占比率=排程耗時/時間片長度:10/200 = 5%

16,減少磁盤服務時間

  • 塊高速緩存

    既然要減少通路,那最理想的情況就是不通路呗,把所有的資料都丢進緩存中, 将緩存變得大速度變快。

  • 磁盤驅動排程

    避免随意通路磁盤,于是就 改良磁盤排程算法。

  • 目錄分解法

    以上都是從調用情況的外部入手,名額也得治本,是以還要從自己的内部入手, 将自己的目錄管理的整齊,盡量不給人家添麻煩。

異步I/O隻能提高CPU的使用率,但通路磁盤的次數并不變化。

17,夥伴位址

夥伴位址:

兩個大小相同的相鄰塊合并成一個更大的塊時,首位址必須是塊(合成後的塊)大小的整數倍。

夥伴系統中,一個記憶體塊大小為8KB,起始位址是224KB,則其“夥伴”的位址應為多少?

對于8KB大小的塊,位址224KB相鄰的8KB大小的塊的首位址是224KB-8 = 216KB,224KB + 8 = 232KB

對于216KB:兩個塊合并,則首位址為216KB,216KB不是16(2 * 8KB)的整數倍,是以舍棄。

對于232KB:兩個塊合并,則首位址是224KB,224KB是16(2 * 8KB)的整數倍,是以其夥伴位址為:232KB

18,裝置管理軟體層次

作業系統的I/O子系統通常由四個層次組成,每一層明确定義了與鄰近層次的接口。其合理的層次組織排列順序是:

  1. 使用者級I/O軟體
  2. 裝置無關軟體
  3. 裝置驅動程式
  4. 中斷處理程式

19,實作裝置獨立性

對于基本的裝置配置設定程式是根據實體裝置名來配置設定裝置的,為了增加裝置的獨立性,程序應用邏輯裝置名請求I/O,這樣系統首先從系統裝置表SDT中找出第一個該類裝置的裝置控制表DCT,若該裝置忙,又查找第二個該類裝置的DCT,僅當所有該類裝置都忙時才把程序挂在該類裝置的等待隊列上。

20,首次适應算法

首次适應算法(First Fit):

從空閑分區表的第一個表目起查找該表,把最先能夠滿足要求的空閑區配置設定給作業,這種方法目的在于減少查找時間。

為适應這種算法,空閑分區表(空閑區鍊)中的空閑分區要按位址由低到高進行排序。該算法優先使用低址部分空閑區,在低址空間造成許多小的空閑區,在高位址空間保留大的空閑區。

繼續閱讀