天天看點

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

1,線程

  • 每個程序都有自己的位址空間,但線程沒有自己獨立的位址空間,而是運作在一個程序裡的所有線程共享該程序的整個虛拟位址空間。
  • 對于改善程式結構而言,将一個複雜、較長的程序分為幾個線程,使之稱為幾個獨立或半獨立的運作部分,這樣利于程式的了解和修改。
  • 對多CPU更加有效。目前的線程數目不多餘CPU的數目時,作業系統可以保證不同的線程運作于不同的CPU上,進而提高了CPU的使用率。
  • 線程是程序中的一個程式執行單元。線程包含CPU執行現場和執行堆棧,可以獨立地執行程式。

2,虛拟記憶體大小

虛拟記憶體大小:

  • min(記憶體+輔存, 邏輯位址)

假設主存容量為1MB,輔存容量為400MB,計算機系統的位址寄存器有24位,則其虛拟位址空間= 2^24B。

3,程序

  • 程序 (Process)是計算機中的程式關于某資料集合上的一次運作活動,是系統進行資源配置設定和排程的基本機關,是作業系統結構的基礎。
  • 程序是一個具有一定獨立功能的程式關于某個資料集合的一次運作活動。
  • 程序的概念主要有兩點:
  • 第一,程序是一個實體。每一個程序都有它自己的位址空間,一般情況下,包括文本 區域(text region)、資料區域(data region)和堆棧 (stack region)。文本區域存儲處理器執行的代碼;資料區域存儲變量和程序執行期間使用的動态配置設定的記憶體;堆棧區域存儲着活動過程調用的指令和本地變量。
  • 第二,程序是一個“執行中的程式”,但程序不是程式。程式是一個沒有生命的實體,是靜态的,隻有處理器賦予程式生命時(作業系統執行之),它才能成為一個活動的實體,我們稱其為程序。

4,固定分區配置設定

固定分區配置設定,是滿足多道程式設計的存儲技術,可以将記憶體劃分成多個區,每個區運作一個作業,進而達到多道程式設計的多個作業同時在記憶體中的設計。

但是固定分區配置設定是提前将記憶體劃分成多個區,區的大小可以不同,但是劃分好後,個數和大小都不能發生改變。

作業到來,選擇一個合适大小的區放置,但是作業長度不一,不會有太合适的區恰好滿足其大小,進而會造成區空間的浪費,并且此浪費非常嚴重。

5,檔案系統

檔案系統是作業系統用來組織和管理儲存設備或磁盤分區上的檔案的資料結構和方法; 即在儲存設備上組織和管理檔案的方法。 作業系統中負責管理和存儲檔案資訊的軟體機構即為檔案管理系統 ,簡稱為“檔案系統”。

檔案系統主要由三部分組成:

  • 檔案系統接口
  • 對對象操縱還有管理的軟體集合
  • 對象及屬性

從作業系統的角度來看,檔案系統是對檔案儲存設備的空間進行組織、配置設定,負責檔案存儲并且對存入的檔案進行保護和檢索的系統。

6,作業狀态

  • 作業從送出到後備狀态的變化由程序建立原語完成。
  • 作業從送出到運作狀态的轉化由作業排程程式完成。

7,管程

管程是由一組資料以及定義在這組資料之上的對這組資料的操作組成的軟體子產品,這組操作能初始化并改變管程中的資料和同步程序。管程不僅能實作程序間的互斥,而且能實作程序間的同步。

管程具有特性:

  • ①局部于管程的資料隻能被局部于管程内的過程所通路;
  • ②一個程序隻有通過調用管程内的過程才能進入管程通路共享資料;
  • ③每次僅允許一個程序在管程内執行某個内部過程;

8,程序基本狀态及轉換

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

9,周轉、響應、等待排程時間

  • 周轉時間: 從一個批處理作業送出時刻開始直到該作業完成所經過的時間間隔(包括作業進入記憶體前的等待時間、在後備隊列中的等待時間、占用CPU後的運作時間以及完成各種IO操作的時間)
  • 響應時間: 請求送出給系統到系統響應這個請求的時間間隔。
  • 等待排程時間: 作業從後備作業到被排程程式選中的時間稱為等待排程時間。

10,-rw-rw-r–

對于上面的Linux指令,表示檔案有三類使用者:

  • 所有人
  • 其他人

有三種權限rwe,是以可以用9個比特位标記權限,順序即為:所有者、組、其他人。如果無對應權限,則用-表示。

  • rwx:檔案所有者的權限是讀、寫和執行
  • rw-:與檔案所有者同一組的使用者的權限是讀、寫但不能執行;
  • r–:不與檔案所有者同組的其他使用者的權限是讀不能寫和執行;

11,段表的位址

某段表的内容如下,邏輯位址為(1,24),它對應的實體位址為應該為多少?

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

對于這道題,邏輯位址(1,24)(其中段号為1,段内位址為24)那麼查表可以知道段首位址為60KB,然後24為邏輯位址中的偏移量,也就是相對于位址60KB的相對位置,那麼實體位址就是60KB+24。

12,處理機排程

  • 程序結束時能夠進行處理機排程。
  • 建立新程序後能進行處理機排程。
  • 在系統調用完成并傳回使用者态時能夠進行處理機排程。
  • 當程序處于臨界區時,說明程序正在占用處理機,隻要不破壞臨界資源的使用規則,是不會影響處理機排程的。比如,通常通路的臨界資源可能是慢速的外設(如列印機),如果在程序通路列印機時,不能進行處理機排程,那麼系統的性能将是非常差的。

13,strcat()的作用

對于一個問題:

int n = 2;
char& str = "Thunder";
strcat(str+n, "Downloader");
           

則str是多少?

  • strcat() 的作用是在字元串後面追加字元串。

函數能正常執行的前提是,原字元串要有足夠的空間來存儲追加的字元串。

str+n,不管n的大小是多少,隻要str+n後還是指向原字元串中某個字元,那麼追加的字元串都是在該字元串的末尾。即你傳遞str+1,或是傳遞str+2,,該函數都會依次從str+1或str+2指向的字元往後周遊,直到末尾。

是以,n不能超過原字元串的長度,不然str+n不指向原字元串的任何字元,strcat()不知道從哪裡追加。

最後str為:“ThunerDownloader”

14,拼接技術

拼接技術

在連續配置設定方式中,必須把這個系統或使用者程式裝入一連續的記憶體空間。如果在系統中隻有若戶個小的分區,即使它們容量的總和大于要裝入的程式,但由于這些分區不相鄰接,也無法把該程式裝入記憶體。

若想把作業裝入,可采用的一種方法是:将記憶體中的所有作業進行移動,使它們全都鄰接。

這樣,就可把原來分散的多個小分區拼接成一個大分區,這時就可把作業裝入該區。這種通過移動記憶體中作業的位置,以把原來多個分散的小分區拼接成一個大分區的方法,就是拼接技術。

對換技術

對換技術,是指把記憶體中暫時不能運作的程序或者暫時不用的程式和資料調出到外存上,以便騰出足夠的記憶體空間,再把已具備運作條件的程序或程序所需要的程式和資料調入記憶體。

SPOOLing技術

為了緩和CPU的高速性與I/O裝置低速性間的沖突,引入了脫機輸入、脫機輸出技術——Spoling技術。

15,分段存儲的訪存次數

基本分段存儲管理中,若沒有引入快表,則每次從主存取指令或取操作數,要通路多少次主存?

在分段存儲管理方式中,作業的位址空間被劃分為若幹個段,每個段定義了一組邏輯資訊。每個段都有自己的名字。為了實作簡單起見,通常可用一個段号來代替段名,每個段都從0開始編址,并采用一段連續的位址空間。其邏輯位址由段号(段名)和段内位址所組成。是以第一次通路段名,第二次通路段内位址。

是以,需要通路2次主存。

16,删除檔案

當使用者删除某檔案時:

  • 不需要删除檔案所在目錄
  • 需要删除檔案的關聯目錄、檔案控制塊
  • 需要釋放檔案的關聯緩沖區

17,動态優先權

動态優先權是指在建立程序時所賦予的優先權,是可以随程序的推進或随其等待時間的增加而改變的,以便獲得更好的排程性能。

例如,我們可以規定,在就緒隊列中的程序,随其等待時間的增長,其優先權以速率a提高。

若所有的程序都具有相同的優先權初值,則顯然是最先進入就緒隊列的程序将因其動态優先權變得最高而優先獲得處理機,此即先來先服務算法。

18,線程的切換

  • 一個程序也可能包含多個線程,對于同一個程序中的線程間切換,不會引起程序切換;
  • 不同程序中的線程切換會導緻程序切換。

19,請求頁式存儲管理

因為有"請求"兩字,說明一個作業不必把程式所有的内容都寫入記憶體中,而是什麼時候需要用到了,什麼時候就把該部分内容從外存調入到記憶體中,真實位址必須是在運作時才決定的。

是以,請求頁式存儲管理采用動态重定位與記憶體動态配置設定。

20,頁表的實體位址

在一個3 級頁表結構的系統中,記憶體共有8192 頁,每頁2048 位元組。請問記憶體的實體位址需要多少位?

需要注意的是,這裡所求得是實體位址而非頁面位址,頁面位址是邏輯位址,最終都是會轉化為實體位址的。

這裡給出的3級頁表具有迷惑作用,實體位址和頁表級數無關,真實記憶體有多大,記憶體尋址範圍就有多大。

是以:8192*2048=224Byte,需要24位位址來尋址。

繼續閱讀