操作系統核心原理概述

操作系統概述


    操作系統是在硬件彙編級基礎上的軟件抽象,相應的,對於硬件彙編級的CPU、多級存儲以及外設IO都有自己的程序抽象模型。操作系統向下管理不同的計算機硬件,所謂的管理即對不同硬件的有相應的軟件模型,同時通過控制各個軟件模型的協作和通訊,來控制各個硬件組件的協作和通訊。操作系統向上爲應用軟件提供控制硬件組件的程序模型接口,其實是應用軟件開發過程中使用的底層接口。這樣將應用軟件和硬件隔離,不同機器的不同硬件的適配由操作系統完成,開發者不需要關心硬件細節,做到了底層和上層的實現互不影響。
    硬件彙編級的系列文章簡略介紹了計算的底層架構,主要涉及CPU、多級存儲和外設IO。在操作系統原理中,也有對應的模型和模型的管理方案:和CPU、彙編代碼相關的是進程和線程等,代表程序執行的控制流;和多級存儲相關的是內存管理、磁盤文件系統管理等,提供程序執行時所需要的數據;和硬件IO相關的是IO軟件驅動,支持程序的輸入和輸出。這三部分的內容也就構成了操作系統的基本要點。

  • 進程與線程
        進程和線程的概念包含了操作系統是如何利用CPU硬件資源的,是動態情況下操作系統層面執行流程的抽象。進程和線程的內容主要包括進程線程的系統模型、創建和終止、進程和線程的調度。還有在分時系統中獨佔性資源不能同時被多個進程或者線程訪問,需要實現進線程間的通訊和互斥,這個在應用程序編程中也常常遇到。這裏需要解釋一下分時系統。操作系統按照進程或者或者線程能否搶佔CPU可以分爲批處理操作系統和分時操作系統。在批處理操作系統中,進程一旦佔用了CPU就不再放手,直到運行結束,系統纔會調度另一進程運行。而分時操作系統中,如果進程或者線程(具體是進程還是線程要看操作系統的實現)不自動放棄CPU,則操作系統則會按照某種規則中斷進程或者線程的執行,調度另一個進程或者線程佔用CPU,這被稱爲搶佔式調度。這種搶佔式調度的時間單位一般是非常短的,短到正在使用電腦的你不能感知到操作系統在不同進程之間頻繁切換,感覺上就像多個程序“同時”在運行。現在的大型網絡服務器、個人電腦或手機,一般都是使用linux系統內核或者windows桌面系統,這兩種操作系統都是分時系統。分時系統可以保證比較好的用戶操作交互體驗,因爲用戶操作的當前進程總有機會被分配CPU資源,進程不會因此出現未響應的情況。
  • 多級存儲
        內存管理也面臨着互斥問題。因爲系統中可能有多個進程在運行,如果用匯編語言的執行來理解,就是可能出現多個程序的彙編語句同時讀寫一個內存地址的情況。這樣因爲數據被篡改,程序的運行結果和預想也許會不一樣。如何保證多個進程使用內存空間時能夠不互相影響,操作系統中引入了虛擬內存的設計方式。虛擬內存的實現需要對物理內存進行分塊,所以頁面置換算法也是內存管理比較重要的方面。
        對應多級存儲,操作系統層面的另一個需要抽象的部分是文件系統,一般是指磁盤上數據的管理方式。文件管理系統需要關注的概念包括文件的結構、類型、屬性,文件操作,目錄的實現和管理,整個文件系統的實現和管理等。
  • IO原理
        最後和硬件彙編級的IO外設一一對應的是操作系統IO原理。由於計算機IO外設非常多,鍵盤、鼠標、硬盤、u盤、打印機、掃描儀、照相機等等,還包括一些專用設備。很多外設都有自己的配套的管理系統,不能窮舉。因此IO軟件原理只會涉及操作系統中IO驅動軟件的管理方式和一些常見的IO外設的相關內容。

一般的應用程序開發都是在操作系統或者虛擬機的基礎上,進程線程、內存管理和IO等都是開發中需要考慮的關鍵點,養成從底層到上層的思考習慣是解決問題的訣竅,所以深入瞭解操作系統的核心原理對開發人員來講十分有必要。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章