這一周我自學了第十和第十一章的內容,這兩章的知識已經從之前的比較陌生的層面變成了現在的我們時常接觸的宏觀層面了,這也是我們能夠直觀的感受到的。
第十章操作系統
操作系統是其他的軟件依附的基礎。
10.1操作系統的角色
現代的軟件可以分為應用軟件和系統軟件,他們的定義如下,
應用軟件(Application software):幫助我們解決現實世界問題的程序。
系統軟件(System software):管理計算機系統並與硬件進行交互的程序。
而系統軟件存在着核心——計算機操作系統(Operating system),即管理計算機資源並為系統交互提供界面的系統軟件。
計算機系統與其他層面都有交互,見下圖
一台計算機通常只有一個活動的操作系統,在系統運行中負責控制工作。具有兩個或多個操作系統的配置稱為雙引導或多引導系統 。不過,任何時候都只有一個操作系統在控制計算機。以Mac為例吧,登錄時會要求選擇系統,而兩個系統之間又互不干擾。
操作系統的各種角色都圍繞着“良好的共享”這一中心思想。
多道程序設計(multi programming):同時在主存中駐留多個程序,由它們競爭CPU的技術。
內存管理(memory management):了解主存中載有多少個程序以及它們的位置的動作。
進程(process):程序執行過程中的動態表示法。
進程管理(process management):了解活動進程中的信息的動作。
CPU調度(CPU scheduling):確定主存中的哪個進程可以訪問CPU以便執行的動作。
內存管理、進程管理和CPU調度是本章的三個重點。操作系統自身也是必須執行的程序,所以在內存中也要和其它系統程序軟件及應用程序一起管理和維護OS進程,執行OS的CPU就是執行其他程序的CPU。因此也要把OS進程排進競爭CPU的隊列中。
分時(timesharing):多個交互用戶同時共享CPU時間的系統。
虛擬機(virtual machine):分時系統創建的每個用戶都有專有機器的假象。
主機(mainframe):一個大型的多用戶計算機,通常與早期的分時系統相關。
啞終端(dumb terminal):在早期的分時系統中用戶用於訪問主機的一套顯示器和鍵盤。
每個用戶由主機上運行的一個登錄系統進程表示。
微型機第一次采用單個的集成芯片作為CPU,成了可以放在書桌上的計算機,從而引發了個人計算機的想法。這也就是我們現在的電腦的由來。
實時系統(real-time system):應用程序的特性決定了響應時間至關重要的系統。
響應時間(response time):收到信號和生成響應之間的延遲時間。
10.2 內存管理
操作系統必須采用技術來執行以下任務:1.跟蹤一個程序駐留在內存的什么位置以及是如何駐留的2.把邏輯程序地址轉換成實際的內存地址
下面就是內存的大致模型:
邏輯地址(logical address):對一個存儲值的引用,是相對於引用它的程序的。
物理地址(physical address):主存儲設備中的真實地址。
地址聯編(address binding):邏輯地址和物理地址間的映射。
單塊內存管理(single contiguous memory management):把應用程序載入一段連續的內存區域的內存管理方法。
單塊內存管理法的優點在於實現和管理都很簡單,但卻大大浪費了內存空間和CPU時間。
固定分區法(fixed-partition technique):把內存分成特定數目的分區以載入程序的內存管理方法。
動態分區法(dynamic-partition technique):根據容納程序的需要對內存分區的內存管理方法。
基址寄存器(base register):存放當前分區的起始地址的寄存器。
界限寄存器(bounds register):存放當前分區的長度的寄存器。
內存還有其他不同的分區方法:
最先匹配(first fit):把第一個足夠存放程序的分區分配給它。
最佳匹配(best fit):把最小的能夠容納程序的分區分配給它。
最差匹配(worst fit):把最大的能夠容納程序的分區分配給它。
在動態分區中作業可以在內存中移動,以創建較大的空白分區。這個過程叫作壓縮(compaction)。正是因此,在創建虛擬機時一般選擇動態分配。
頁式內存管理法(paged memory technique):把進程划分為大小固定的頁,載入內存時存儲在幀中的內存管理方法。
幀(frame):大小固定的一部分主存,用於存放進程頁。
頁(page):大小固定的一部分進程,存儲在內存幀中。
頁映射表(Page Map Table,PMT):操作系統用於記錄頁和幀之間關系的表。
如果你不想把進程存儲在連續的內存空間中,那你就可以嘗試分頁。
請求分頁(demand paging):頁式內存管理法的擴展,只有當頁面被引用(請求)時才會被載入內存。
頁面交換(page swap):把一個頁面從二級存儲設備載入內存,通常會使另一個頁面從內存中刪除。
分頁使得對整個內存大小沒有了限制,也就是虛擬內存。
虛擬內存(virtual memory):由於整個程序不必同時處於內存而造成的程序大小沒有限制的假象。
系統顛簸(thrashing):連續的頁面交換造成的低效處理。
10.3 進程管理
進程狀態(process state):在操作系統的管理下,進程歷經的概念性階段。
在創建階段,將創建一個新進程。
在准備就緒狀態中,進程沒有任何執行障礙,只是等待使用CPU的機會。
運行狀態下的進程是當前CPU執行的進程。
等待狀態下是當前在等待資源(除CPU以外的資源)的進程。
終止狀態下的進程已經完成了它的執行。
可能有多個進程處於准備就緒或等待狀態,但只有一個進程處於運行狀態。
進程控制塊(Process Control Block,PCB):操作系統管理進程信息使用的數據結構。
上下文切換(context switch):當一個進程移出CPU,另一個進程取代它時發生的寄存器信息交換。
10.4 CPU調度
CPU調度就是確定把哪個處於准備就緒狀態的進程移入運行狀態。
非搶先調度(nonpreemptive scheduling):當當前執行的進程自願放棄了CPU時發生的CPU調度。
搶先調度(preemptive scheduling):當操作系統決定照顧另一個進程而搶占當前執行進程的CPU資源時發生的CPU調度。
周轉周期(turnaround time):從進程進入准備就緒狀態到它最終完成之間的時間間隔,是評估CPU調度算法的標准。
CPU調度有幾種常見的方法:
先到先服務(FCFS)調度方法
最短作業優先(SJN)調度方法
輪詢法
時間片(time slice):在CPU輪詢算法中分配給每個進程的時間量。
第11章 文件系統和目錄
11.1 文件系統
文件(file):數據的有名集合,用於組織二級存儲設備。
文件系統(file system):操作系統為它管理的文件提供的邏輯視圖。
目錄(directory):文件的有名分組。
文本文件(text file):包含字符的文件。
二進制文件(binary file):包含特定格式的數據的文件,要求給位串一個特定的解釋。
文件類型(file type ):文件中存放的關於類型的信息。
文件擴展名(file extension):文件名中說明文件類型的部分。
順序文件訪問(sequential file access):以線性方式訪問文件中的數據的方法。
直接文件訪問(direct file access):通過指定邏輯記錄編號直接訪問文件中的數據的方法。
在多用戶系統中,文件保護的重要性居於首要地位。
11.2 目錄
目錄樹(directory tree):展示文件系統的嵌套目錄組織的結構。
根目錄(root directory):包含其他所有目錄的最高層目錄。
工作目錄(working directory):當前活動的子目錄。
路徑(path):文件或子目錄在文件系統中的位置的文本名稱。
絕對路徑(absolute path):從根目錄開始,包括所有后繼子目錄的路徑。
相對路徑(relative path):從當前工作目錄開始的路徑。
11.3 磁盤調度
上一章的CPU是內存,也就是一級存儲設備,而像磁盤這樣的就是二級存儲設備,磁盤也恰恰是二級存儲設備中最重要的一個,把數據傳入或傳出二級存儲設備是一般的計算機系統的首要瓶頸。
磁盤調度(disk scheduling):決定先滿足哪個磁盤I/O請求的操作。
磁盤調度也有幾種常見的方法:
先到先服務磁盤調度法
最短尋道時間優先磁盤調度法
SCAN磁盤調度法
LOOK磁盤調度法(變體)
以上就是我本次自習所了解到的所有知識,這次學習讓我受益匪淺,了解到了系統以及一級和二級最重要的存儲設備的一些原理。