理解計算機(一)計算機中的抽象概念

我們可以把操作系統看成是應用程序和硬件之間插入的一層軟件,所有應用程序對硬件的操作嘗試都必須通過操作系統。
這裏寫圖片描述

操作系統的兩個基本功能:
(1)防止硬件被失控的應用程序濫用
(2)嚮應用程序提供一致的機制來控制複雜而又通常大不相同的低級硬件設備。操作系統通過幾個基本的抽象概念(進程,虛擬內存和文件)來實現這個兩個功能。
這裏寫圖片描述
文件是對I/O設備的抽象表示
虛擬內存是對主存個磁盤I/O設備的抽象表示,進程則是對處理器,主存和I/O設備的抽象表示。

進程

進程是操作系統對一個正在運行的程序的一種抽象。在一個系統上可以同時運行多個進程,而每個進程都好像是單獨佔使用硬件。併發運行是指一個進程的指令可以和另一個進程的指令交錯執行。在大多數系統中,需要運行的進程數是多於可以運行他們的CPU個數的。傳統系統在一個時刻只能執行一個程序,而先進的多核處理器同時能夠執行多個程序,這是通過處理器在進程間切換來實現的。操作系統實現這種交錯執行的機制稱爲上下文切換。

討論單個CPU的單處理器系統的情況
這裏寫圖片描述
操作系統保持跟蹤進程運行需要的所有狀態,這種狀態就是上下文,包括許多信息,比如PC和寄存器文件的當前值,以及主存中的內容。在任意時刻,單處理器系統都只能執行一個進程的代碼。當操作系統決定把控制權從當前進程轉移到某個新進程時,就會執行上下文的切換,即保存當前進程的上下文,恢復新進程的上下文,然後將控制權傳遞給新進程,新進程就從他上次停止的地方開始。
從一個進程到另一個進程的切換是由操作系統內核(kernel)管理的。內核是從操作系統代碼常駐內存的部分,當應用程序需要操作系統的某些操作時,比如讀寫文件,他就執行一條特殊的系統調用指令,將控制權傳遞給內核,然後內核執行被請求的操作並返回應用程序。注意,內核不是一個獨立的進程。相反,它是系統管理全部進程所用代碼和數據的集合。

線程

儘管通常我們認爲一個進程只有單一的控制流,但是在現代系統中,一個進程實際上可以由很多可以稱爲線程的執行單元組成,每個線程都運行在進程的上下文中,並共享同樣的代碼和全局數據。由於網絡服務器中對並行處理的需求,線程成爲越來越重要的編程模型,因爲多線程之前比多進程之間更容易共享數據,線程一般而言比進程更高效。

虛擬內存

虛擬內存是一個抽象的概念,它爲每一個進程提供了一個假象,即每個進程都在單獨的使用主存。每個進程看到的內存是一一致的,稱爲虛擬地址空間。

併發和並行

併發:指一個同時具有多個活動的系統
並行:指的是用併發來使一個系統運行的更快。

計算機系統中抽象的重要性

抽象是計算機科學中最爲重要的概念之一。比如我們爲一組函數規定一個簡單的應用程序接口(API)就是一個很好的編程習慣,程序員無需瞭解它內部的工作便可以使用這些代碼。不同的編程語言提供不同形式和等級的抽象支持,例如Java類的聲明和C語言的函數原型。
如下圖,在處理器裏,指令集架構提供了對實際處理器硬件的抽象。使用這個抽象,機器代碼表現得幾號箱運行在一個依稀執行一條指令的處理器上。底層的已經遠比抽象描述的要複雜驚喜,它並行的執行多條指令,但又總是與那個簡單有序的模型保持一致。只要執行的模型一樣,不同的處理器實現也能執行同樣的機器代碼,而有提供不同的開銷和性能。
這裏寫圖片描述
幾個抽象概念的額介紹:
文件:對I/O設備的抽象
虛擬內存:對程序存儲器的抽象
進程:對一個正在運行的程序的抽象
虛擬機:對整個計算機的抽象,包括操作系統,處理器和程序

計算機系統是由硬件和系統軟件組成,它們共同協作以運行應用程序,計算機內部的信息被表示爲一組組位,它們依據上文有不同的解釋方式,程序被其他程序翻譯成不同形式,開始是ASCII文本,然後被編譯器和鏈接器翻譯成二進制可執行文件。
處理器讀取並解釋存放在主存中的二進制指令,因爲計算機花費大量時間在內存,I/O設備和CPU寄存器之間複製數據,所以系統中的存儲設備劃分成層次結構-CPU寄存器在頂部,接着是多層的硬件告訴緩存存儲器,DRSM主存和磁盤存儲器。在層次模型中,位於更高層的存儲設備比低層的存儲設備要快,單位比特造價也更高。層次結構中較高層次的存儲設備可作爲較低層析的存儲設備的告訴緩存。理解這種存儲設備,可以優化C程序的性能。

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