成為“黑客”前,必須學習的“操作系統架構體系”

成為“黑客”前,必須學習的“操作系統架構體系”

我們先做個比喻,計算機就好比一棟具備"智能功能的大樓",操作系統就是負責這棟"智能大樓"協調、管理和控制的"總控中心",計算機硬件就是組成這棟大樓的"鋼筋、水泥",應用軟件就是大樓裡一個個具體的"環境、消防、人員監控系統"。這時候如果要入侵這棟智能大樓,我們最重要奪取哪一個關鍵點?我相信大家一定會選擇"總控中心"。因此對於黑客學習內容裡關鍵的一部分就是對於操作系統整體架構的掌握。

今天就以本篇文章,讓大家對計算機系統架構有個初步認識!便於未來的學習中對操作系統有個更深刻的理解。

一、 操作系統的定義

操作系統(英語:operating system,作OS)是管理與資源的,同時也是計算機系統的內核與基石。操作系統需要處理如管理與配置、決定系統資源供需的優先次序、控制輸入與輸出設備、操作與管理等基本事務。操作系統也提供一個讓用戶與系統交互的操作界面。

操作系統是作為計算機硬件和計算機用戶之間的中介的程序。操作系統的目的是為用戶提供方便且有效地執行程序的環境。操作系統是管理計算機硬件的軟件,硬件必須提供合適的機制來保證計算機系統的正確性,以及確保系統不受用戶程序干擾正常運行。操作系統龐大而複雜,因此它必須被分塊構造。每一塊都是系統中明確定義的一部分,具有嚴格定義的輸入、輸出和功能。

成為“黑客”前,必須學習的“操作系統架構體系”

操作系統由操作系統的內核(運行於內核態,管理硬件資源)以及系統調用(運行於用戶態,為應用程序員寫的應用程序提供系統調用接口)兩部分組成,所以,單純的說操作系統是運行於內核態的,是不準確的。

二、 操作系統的目標和作用

1、操作系統的目標:

1)有效性:提高系統資源利用率;提高系統的吞吐量。

2)方便性:

3)可擴充性:

4)開放性:開放性是指操作系統能遵循世界標準規範,特別是遵循開放系統互聯(OSI) 國際標準。凡遵循國際標準所開放的硬件和軟件,均能彼此兼容,可方便的實現互連。

2、操作系統的作用

1)OS 作為用戶與計算機硬件系統之間的接口:OS 處於用戶與計算機硬件系統之間,用戶通過 OS 來使用計算機系統。

成為“黑客”前,必須學習的“操作系統架構體系”

①命令方式:這是指由OS 提供了一組聯機命令接口,以允許用戶通過鍵盤輸入有關命令來取得操作系統的服務,並控制用戶程序的運行。

②系統調用方式:OS 提供了一組系統調用,用戶可在自己的應用程序中通過相應的系統調用,來實現與操作系統的通信,並取得它的服務。

③圖形、窗口方式:這是當前使用最為方便、最為廣泛的接口,它允許用戶通過屏幕上的窗口和圖標來實現與操作系統的通信,並取得它的服務。

2)OS 作為計算機系統資源的管理者

系統資源分為四類:處理器、存儲器、I/O設備、信息(數據和程序)。OS 的主要功能也正是針對這四類資源進行有效的管理,即:處理機管理,用於分配和控制處理機;存儲器管理,主要負責內存的分配與回收;I/O 設備管理,負責 I/O設備的分配與操縱;文件管理,負責文件的存取、共享和保護。

當一個計算機系統同時供多個用戶使用時,用戶對系統中共享資源的需求(包括數量和時間)可能發生衝突,為了更好的管理好這些共享資源(包括硬件和信息)的使用,操作系統必須記錄下各種資源的使用情況,對使用資源的請求進行授權,協調諸用戶對共享資源的使用,避免發生衝突,並計算使用資源的費用等。

3)OS 實現了對計算機資源的抽象

對於一個完全無軟件的計算機系統(即裸機),它向用戶提供的是實際硬件接口(物理接口),用戶必須對物理接口的實現細節有充分的瞭解,並利用機器指令進行編程,因此該物理機器必定是難以使用的。

在裸機上鋪設的 I/O軟件隱藏了對 I/O 設備操作的具體細節,向上提供了一組抽象的 I/O 設備。

成為“黑客”前,必須學習的“操作系統架構體系”

OS 是鋪設在計算機硬件上的多層系統軟件,它們不僅增強了系統的功能,而且還隱藏了對硬件操作的細節,由它們實現了對計算機硬件操作的多個層次的抽象。

三、 操作系統的結構

1、單一體結構

單一體結構是最早期的結構,這時整個OS是一個巨大的單一體,運行在內核態下,為用戶提供服務,如下圖所示。

成為“黑客”前,必須學習的“操作系統架構體系”

單一體結構各功能塊之間關係複雜,修改困難,牽一髮而動全身,且容易形成循環調用造成死鎖,於是有了下面的層次關係。

2、分層結構

將操作系統的功能分成不同的層次,低層次的功能為緊鄰其上一個層次的功能提供服務,而高層次的功能又為更高一個層次的功能提供服務,如下圖所示。

成為“黑客”前,必須學習的“操作系統架構體系”

分層結構的主要優點:①易保證系統的正確性。自上而下的設計方式,是所有的設計中的決定都是有序的,或者說是建立在較為可靠的基礎上,這樣比較容易保證整個系統的正確性。②易擴充和易維護性。在系統中增加、修改或替換一個層次中的模塊或整個層次,只要不改變相應層次間的接口,就不會影響其它層次,這必將使系統維護和擴充變得更加容易。

分層結構的主要缺點:系統效率降低了。由於層次結構是分層單向依賴的,因此必須在相鄰層之間都要建立層次間的通信機制,OS 每執行一個功能,通常要自上而下地穿越多個層次,這無疑會增加系統的通信開銷,從而導致系統效率的降低。

3、微內核結構

從單一體和層次化結構的圖中可以看出,操作系統的所有功能都在內核態下運行。但是,從用戶態轉為內核態是有時間成本的,這樣就會造成OS的效率低下。於是,人們將操作系統的核心中的核心才放在內核態運行,其他功能都遷移到用戶態運行,於是就有了下面的微內核結構。

成為“黑客”前,必須學習的“操作系統架構體系”

微內核操作系統的優點:

1)提高了系統的可擴展性由於微內核 OS 的許多功能是由相對獨立的服務器軟件來實現的,當開發了新的硬件和軟件時,微內核 OS 只需在相應的服務器中增加新的功能,或再增加一個專門的服務器。

2)增強了系統的可靠性由於微內核是出於精心設計和嚴格測試的,容易保證其正確性;另一方面是它提供了規範而精簡的應用程序接口(API),為微內核外部的程序編制高質量的代碼創造了條件。此外,由於所有服務器都是運行在用戶態,服務器與服務器之間採用的是消息傳遞通信機制,因此,當某個服務器出現錯誤時,不會影響內核,也不會影響其他服務器。

3)可移植性在微內核結構的操作系統中,所有與特定 CPU 和 I/O 設備硬件有關的代碼,均放在內核和內核下面的硬件隱藏層中,而操作系統其它絕大部分(即各種服務器)均與硬件平臺無關,因而,把操作系統移植到另一個計算機硬件平臺上所需的修改是比較小的。

4)提供了對分佈式系統的支持由於在微內核 OS 中,客戶和服務器之間以及服務器和服務器之間的通信,是採用消息傳遞通信機制進行的,致使微內核 OS 能很好地支持分佈式系統和網絡系統。事實上,只要在分佈式系統中賦予所有進程和服務器唯一的標識符,在微內核中再配置一張系統映射表(即進程和服務器的標識符與它們所駐留的機器之間的對應表),在進行客戶和服務器通信時,只需在所發送的消息中表上所發送進程和接收進程的標識符,微內核便可利用系統映射表,將消息發往目標,而無論目標是駐留在哪臺機器上。

5)融入了面向對象技術在設計微內核 OS 時,採用了面嚮對象的技術,其中的"封裝"、"繼承"、"對象類"和"多態性",以及在對象之間採用消息傳遞機制等,都十分有利於提高系統的的"正確性"、"可靠性"、"易修改性"、"易擴展性"等,而且還能顯著地減少開發系統所付出的開銷。

微內核系統存在的問題:在微內核 OS 中,由於客戶和服務器及服務器和服務器之間的通信,都需通過微內核,只是同樣的服務請求至少需要四次上下文切換。第一次是發生在客戶發送請求消息給內核,以請求取得某服務器特定的服務時;第二次是發生在由內核把客戶的請求消息發往服務器時,第三次是當服務器完成客戶的請求後,把響應消息發送到內核時;第四次是在內核將響應消息發送給客戶時。實際情況是,當某個服務器自身尚無能力完成客戶請求,而需要其他服務器幫助時,如下圖所示,其中的文件服務器還需要磁盤服務器的幫助,這時就需要進行上下文的切換。

成為“黑客”前,必須學習的“操作系統架構體系”

為了改善運行效率,可以重新把一些常用的操作系統的基本功能,由服務器移入微內核中,這樣可使客戶對常用操作系統的功能的請求所發生的用戶/內核模式和上下文切換的次數。但是這又會使微內核的容量明顯的增大,在小型接口定義和適應性方面的有點也有所下降,同時也提高了微內核的設計代價

四、 操作系統的功能

主要功能:

1、隱藏了硬件調用接口,為應用程序員提供調用硬件資源的更好,更簡單,更清晰的模型(系統調用接口)。應用程序員有了這些接口後,就不用再考慮操作硬件的細節,專心開發自己的應用程序即可。

例如:操作系統提供了文件這個抽象概念,對文件的操作就是對磁盤的操作,有了文件我們無需再去考慮關於磁盤的讀寫控制(比如控制磁盤轉動,移動磁頭讀寫數據等細節),

2、將應用程序對硬件資源的競態請求變得有序化

例如:很多應用軟件其實是共享一套計算機硬件,比方說有可能有三個應用程序同時需要申請打印機來輸出內容,那麼a程序競爭到了打印機資源就打印,然後可能是b競爭到打印機資源,也可能是c,這就導致了無序,打印機可能打印一段a的內容然後又去打印c,操作系統的一個功能就是將這種無序變得有序。

詳細功能:

(1) 處理機管理功能

處理機管理的主要功能是創建和撤銷進程,對諸進程的運行進行協調,實現進程之間的信息交換,以及按照一定的算法把處理及分配給進程。

1、進程控制

進程控制的主要功能是為作業創建進程,撤銷已結束的進程,以及控制進程在運行過程中的狀態轉換。

2、進程同步

進程同步的主要任務是為多個進程的運行進行協調。有兩種協調方式:

1)進程互斥方式:這是指諸進程在對臨界資源進行訪問時,應採用互斥方式;

2)進程同步方式:這是指在相互合作去完成功能任務的諸進程間,由同步機構對他們的執行次序加以協調。

3、進程通信

在多道程序環境下,為了加速應用程序的運行,應在系統中建立多個進程,並且再為一個進程建立若干個線程,由這些進程(線程)相互合作去完成一個共同的任務。

4、調度

1)作業調度

作業調度的基本任務是從後備隊列中按照一定的算法,選擇出若干個作業,為他們分配運行所需的資源。在將他們調入內存後,便分別為他們建立進程,使他們都成為可能獲得處理機的就緒進程,並按照一定的算法將他們插入就緒隊列。

2)進程調度

進程調度的任務是從進程的就緒隊列中,按照一定的算法選出一個進程,把處理機分配給它,併為它設置運行現場,使進程投入執行。值得提出的是,在多線程OS中,通常是把線程作為獨立運行和分配處理機的基本單位,為此,須把就緒線程排成一個隊列,每次調度時,是從就緒線程隊列中選出一個線程,把處理機分配給它。

(2) 存儲器管理功能

存儲器的主要任務是為多道程序的運行提供良好的環境,方便用戶使用存儲器,提高存儲器的利用率以及能從邏輯上擴充內存。

1、內存分配

內存分配的主要任務是為每道程序分配內存空間,使它們"各得其所";提高存儲器的利用率,以減少不可用的內存空間;允許正在運行的程序申請附加的內存空間,以適應程序和數據動態增長的需要。

為了實現內存分配,在內存分配的機制中應具有這樣的結構功能:

1)內存分配數據結構。該結構用於記錄內存空間的使用情況,作為內存分配的依據。

2)內存分配功能。系統按照一定的內存分配算法為用戶程序分配內存空間。

3)內存回收功能。系統對用用戶不再需要的內存,通過用戶的釋放請求去完成系統的回收功能。

2、內存保護

內存保護的主要任務是確保每道用戶程序都只在自己的內存空間內運行,彼此互不干擾;決不允許用戶程序訪問操作系統的程序和數據;也決不允許用戶程序轉移到非共享的其他用戶程序中去執行。

3、地址映射

4、內存擴充

為了能在邏輯上擴充內存,系統必須具有內存擴充機制,用於實現下述各功能:

1)請求調入功能。

允許在裝入一部分用戶程序和數據的情況下,便能啟動該程序運行。在程序運行過程中,若發現要繼續運行時所需的程序和數據尚未裝入內存,可向OS發出請求,由OS從磁盤中將所需部分調入內存,以便繼續運行。

2)置換功能。

若發現在內存中已無足夠的空間來裝入需要調入的程序和數據時,系統應能將內存中的一部分暫時不用的程序和數據調至盤上,以騰出內存空間,然後再將所需調入的部分裝入內存。

(3) 設備管理功能

完成用戶進程提出的 I/O 請求;為用戶進程分配所需的 I/O 設備;提高 I/O 設備和 CPU 的利用率;提高 I/O 速度;方便用戶使用 I/O 設備。

設備管理應具有:緩衝管理,設備分配,設備處理以及虛擬設備等功能。

1、緩衝管理:

2、設備分配:

設備分配的基本任務是根據用戶進程的 I/O 請求、系統的現有資源情況以及按某種設備的分配策略,為之分配其所需的設備。

3、設備處理:

設備處理的基本任務是用於實現 CPU 和設備控制之間的通信。

4、虛擬設備:

(4) 文件管理功能

文件管理的主要任務是對用戶文件和系統文件進行管理,以方便用戶使用,並保證文件的安全性。

為此,文件管理應具有對文件存儲空間的管理、目錄管理、文件的讀/寫管理,以及文件的共享與保護等功能。

1、文件存儲空間的管理

為每個文件分配必要的外存空間,提高外存利用率,並能有助於提高文件系統的存、取速度。

2、目錄管理

為每個文件建立其目錄項,並對眾多的目錄項加以有效的組織,以實現方便的按名存取,即用戶只需提供文件名便可對該文件進行存取。

3、文件的讀/寫管理和保護

1)文件的讀、寫管理

根據用戶的請求,從外存中讀取數據,或將數據寫入外存。

2)文件保護

①防止未經核准的用戶存取文件

②防止冒名頂替存取文件

③防止以不正確的方式使用文件

(5) 操作系統與用戶之間的接口

用戶與操作系統的接口:

1、用戶接口

它是提供給用戶使用的接口,用戶可通過該接口取得操作系統的服務。

1)聯機用戶接口

為聯機用戶提供,它由一組鍵盤操作命令及命令解釋程序所組成。

2)脫機用戶接口

為批處理作業的用戶提供的,故也稱批處理用戶接口。該接口由一組作業控制語言(JCL)組成。批處理作業的用戶不能直接與自己的作業交互作用,只能委託系統代替用戶對作業進行干預和控制。這裡的作業控制語言 JCL 便是把需要對作業進行的控制和干預事先寫在作業說明書上,然後將作業和作業說明書一起提供給系統。

3)圖形用戶接口

圖形用戶接口採用了圖形化的操作界面,用非常容易識別的各種圖標將系統的各項功能、各種應用程序和文件,直觀、逼真的表示出來。

2、程序接口

是為用戶程序在執行中訪問系統資源而設置的,是用戶程序取得操作系統服務的唯一途徑。

5、 主流操作系統架構圖

1、Windows操作系統架構圖

成為“黑客”前,必須學習的“操作系統架構體系”

2、Linux操作系統架構圖

系統一般有4個主要部分:

內核、shell、文件系統和應用程序。內核、shell和文件系統一起形成了基本的結構,它們使得用戶可以運行程序、管理文件並使用系統。

成為“黑客”前,必須學習的“操作系統架構體系”

3、Android系統架構圖

成為“黑客”前,必須學習的“操作系統架構體系”

4、Mac系統架構圖

成為“黑客”前,必須學習的“操作系統架構體系”

關於Windows、linux、安卓、蘋果的操作系統內容我會在以後的文章中為大家詳細講解。本篇文章主要讓大家初步認識操作系統架構體系。

最後學習過程中有任何疑問都可以隨時私信我哦!


分享到:


相關文章: