1. 程式人生 > >天天在用作業系統,但你真的造嗎?

天天在用作業系統,但你真的造嗎?

目錄

一、什麼是作業系統

二、作業系統的發展

三、作業系統的組成

四、作業系統如何啟動

五、程式在作業系統上執行

一、什麼是作業系統

一臺計算機包含硬體及軟體,作業系統是控制一臺計算機所有操作的軟體。它提供了使用者可以儲存和檢索檔案的工具,提供了使用者可以請求程式執行的介面,還提供了程式執行所需要的環境,作業系統是一個大而複雜的軟體包。常見的PC作業系統有:Windows系列、Mac OS系列、UNIX、Linux。常見的手機作業系統有:Android、IOS、Windows Phonoe以及已經被淘汰的Symbian。我們在日常的開發過程其實都是在開發執行在特定作業系統上的軟體。如:針對Windows開發大部分開發人員使用.net開發語言。

二、作業系統的發展

作業系統發展到今天這種程式都是不斷演化形成的。

a)         初始:20世紀四、五十年代,一臺機器佔據整個房間,甚至幾個房間。執行一段程式需要大量的裝置準備工作、如安裝磁帶、把卡片放到讀卡機上、設定各種開關等。每個程式執行稱為一個作業(Job),同時若干個使用者需要共享一臺計算機。每次,若干個作業交給計算機操作人員,這些作業形成一個批次(批處理)並逐個在計算機裡執行。作業是以先進先出(FIFO)的順序執行的。

這種方式存在的主要的缺點:程式一但交給作業佇列的使用者就無法與它互動。

b)         互動式處理-實時處理:為了適應這些需求,作業系統時進行了發展,作業系統允許程式通過遠端終端或工作站以與使用者對話的方式進行互動。這種及時的方式提供計算機服務稱為實時處理。但那時計算機還比較昂貴,每臺計算機必須服務於多個使用者,如果作業系統在多使用者的情況下,仍堅持一次只執行一個作業,那麼只有一個使用者會得到滿意的實時服務。

c)         互動式處理-分時處理:對於實時處理,作業系統是這樣設計的,作業系統使得許多作業輪流執行,這種方式把時間分為時間片,然後限制一個作業每次只能執行一個時間片的時間。在每個時間片結束後,當前作業暫時停止執行。通過這個方法快速地在各個作業之間移動,造成了若干個作業同時執行的錯覺。今天,分時即用在單使用者系統中,也用在多使用者系統中,在單個使用者系統中稱為多工,指同時可以實現多於一個任務的錯覺。

d)         負載均衡與均分:在多處理器的機器中,多工是通過把不同的任務分配給不同的處理器實現的。負載均衡是動態的把各個任務分配給各處理器,使得每個處理器都能夠得到有效的使用。均分是舞臺劇在的任務劃分若干個子任務,與可用的處理器數目相適應。

三、作業系統的組成

作業系統主要由“外殼”和“核心”組成。外殼負責與使用者進行通訊,當前我們用的大部分外殼是藉助“圖形使用者介面(GUI)”來實現這個任務的。如:要操作的物件以圖形的形式表示在監視器螢幕上。使用者通過滑鼠定位並點選這些圖示對計算機發出指令。核心則來實現計算機的基本功能。核心主要包括:檔案管理程式、裝置驅動程式、儲存器管理程式、排程程式、調遣程式等。

四、作業系統如何啟動

作業系統的啟動通過一個稱為引導(boot)的步驟實現的,每當我們開機時由機器執行。這個步驟會把作業系統從大容量儲存器傳送到主儲存器中。為了保證開機時能夠找到正確的指令,一部分儲存器能夠將內容永久儲存,這種儲存器稱為只讀儲存器(ROM)。

主儲存器有一部分由ROM構成,它存放載入程式。正是這個程式在計算機開機時被自動執行。

五、程式在作業系統上執行

要了解程式如何在作業系統上執行,需要理解程序與執行緒。

程序(Process):執行一個程式的活動。作業系統上一個最基本的概念是將一個程式和執行該程式的活動區分開來,程式是一組靜態的檔案,而程序是一個動態的活動,其屬性會隨著時間的推移而改變。一個程序包含該活動的當前狀態,稱為程序狀態。程序是一個實體。每一個程序都有它自己的獨立的地址空間,一般情況下,包括文字區域、資料區域和堆疊。

協調程序的執行有關的任務是由作業系統核心中的”排程程式”和”調遣程式”來處理的。

排程程式:維護計算機中現有的程序記錄(程序池),它將新的程序放入程序池,並將已完成的程序從程序池中移除。

調遣程式:確保被排程的程序被執行。在分時系統中,把時間劃分成為短的時間段,每個段稱為一個時間片(通常不超過50ms),然後把CPU的注意力在程序間的切換。允許每個程序每次執行不多於一個時間片。

執行緒(Thead)有時被稱為輕量級程序,是程式執行流的最小單元。一個標準的執行緒由執行緒ID,當前指令指標(PC),暫存器集合和堆疊組成。執行緒是程序中的一個實體,是被系統獨立排程和分派的基本單位,執行緒自己不擁有系統資源,只擁有一點兒在執行中必不可少的資源,但它可與同屬一個程序的其它執行緒共享程序所擁有的全部資源。同一個程序中的多個執行緒之間可以併發執行,但需要硬體支援。

執行緒的意義在於一個應用程式中,有多個執行部分可以同時執行。但作業系統並沒有將多個執行緒看做多個獨立的應用,來實現程序的排程和管理以及資源分配。

     有膽量就掏出手機掃一下下面的二維碼收聽微信推送,敢嗎?