常用的操作系统知识
為什么要有操作系統
現代計算機系統是由一個或者多個處理器,主存,磁盤,打印機,鍵盤,鼠標顯示器,網絡接口以及各種其他輸入,輸出設備組成的復雜系統,每位程序員不可能掌握所有系統實現的細節,并且管理優化這些部件是一件挑戰性極強的工作。所以,我們需要為計算機安裝一層軟件,成為操作系統,任務就是用戶程序提供一個簡單清晰的計算機模型,并管理以上所有設備。
定義也就有了:操作系統是一個用來協調、管理和控制計算機硬件和軟件資源的系統程序,它位于硬件和應用程序之間。(程序是運行在系統上的具有某種功能的軟件,比如說瀏覽器,音樂播放器等。)
操作系統的發展歷史
手工階段
早期的程序員將對應于程序和數據的已穿孔的紙帶(或卡片)裝入輸入機,然后啟動輸入機把程序和數據輸入計算機內存,接著通過控制臺開關啟動程序針對數據運行;計算完畢,打印機輸出計算結果;用戶取走結果并卸下紙帶(或卡片)后,才讓下一個用戶上機。
手工操作方式有兩個特點:
(1)用戶獨占全機。不會出現因資源已被其他用戶占用而等待的現象,但資源的利用率低。 (2)CPU 等待手工操作。CPU的利用不充分。 ? 20世紀50年代后期,出現人機矛盾:手工操作的慢速度和計算機的高速度之間形成了尖銳矛盾,手工操作方式已嚴重損害了系統資源的利用率(使資源利用率降為百分之幾,甚至更低),不能容忍。唯一的解決辦法:只有擺脫人的手工操作,實現作業的自動過渡。這樣就出現了成批處理。批處理階段
出現了批處理系統,它是加載在計算機上的一個系統軟件,在它的控制下,計算機能夠自動地、成批地處理一個或多個用戶的作業(這作業包括程序、數據和命令)。
?為了解決上面手工階段的問題,所以產生了批處理系統,而批處理系統又分為單道批處理和多道批處理。
單道批處理
系統對作業的處理是成批進行的,但內存中始終保持一道作業。該系統主要特征如下
1)自動性:無需人工干預
2)順序性:磁帶上的各道作業順序進入內存,作業完成順序與其進入內存的順序,在正常情況下應完全相同
3)單道性:內存中只允許存在一道程序運行
多道批處理
多道程序設計技術允許多個程序同時進入內存,并在操作系統的控制下交替運行。內存中的程序共享系統中各中硬、軟件資源。當一道程序因I/O請求而暫停運行時,CPU便立即轉去運行另一道程序。其主要特點如下:
1)多道:計算機內存中同時允許多道相互獨立的程序
2)宏觀并行:同時進入系統內存的多道程序都處于運行過程中,宏觀上在并行運行
3)微觀串行:內存中多道程序流輪流占有CPU,交替執行
多道批處理系統的優點是資源的利用率高,系統吞吐量大,CPU和其他資源都處于忙碌狀態。缺點是用戶響應時間較長。不提供人機交互能力,用戶既不了解自己程序的運行情況,也不能控制計算機。
分時系統
由于CPU速度不斷提高和采用分時技術,一臺計算機可同時連接多個用戶終端,而每個用戶可在自己的終端上聯機使用計算機,好象自己獨占機器一樣。
分時技術:把處理機的運行時間分成很短的時間片,按時間片輪流把處理機分配給各聯機作業使用。
若某個作業在分配給它的時間片內不能完成其計算,則該作業暫時中斷,把處理機讓給另一作業使用,等待下一輪時再繼續其運行。由于計算機速度很快,作業運行輪轉得很快,給每個用戶的印象是,好象他獨占了一臺計算機。而每個用戶可以通過自己的終端向系統發出各種操作控制命令,在充分的人機交互情況下,完成作業的運行。
具有上述特征的計算機系統稱為分時系統,它允許多個用戶同時聯機使用計算機。
特點:
(1)多路性。若干個用戶同時使用一臺計算機。微觀上看是各用戶輪流使用計算機;宏觀上看是各用戶并行工作。
(2)交互性。用戶可根據系統對請求的響應結果,進一步向系統提出新的請求。這種能使用戶與系統進行人機對話的工作方式,明顯地有別于批處理系統,因而,分時系統又被稱為交互式系統。
(3)獨立性。用戶之間可以相互獨立操作,互不干擾。系統保證各用戶程序運行的完整性,不會發生相互混淆或破壞現象。
(4)及時性。系統可對用戶的輸入及時作出響應。分時系統性能的主要指標之一是響應時間,它是指:從終端發出命令到系統予以應答所需的時間。
分時系統的主要目標:對用戶響應的及時性,即不至于用戶等待每一個命令的處理時間過長。
分時系統可以同時接納數十個甚至上百個用戶,由于內存空間有限,往往采用對換(又稱交換)方式的存儲方法。即將未“輪到”的作業放入磁盤,一旦“輪到”,再將其調入內存;而時間片用完后,又將作業存回磁盤(俗稱“滾進”、“滾出“法),使同一存儲區域輪流為多個用戶服務。
多用戶分時系統是當今計算機操作系統中最普遍使用的一類操作系統。
實時操作系統
雖然多道批處理系統和分時系統能獲得較令人滿意的資源利用率和系統響應時間,但卻不能滿足實時控制與實時信息處理兩個應用領域的需求。于是就產生了實時系統,即系統能夠及時響應隨機發生的外部事件,并在嚴格的時間范圍內完成對該事件的處理。
實時系統在一個特定的應用中常作為一種控制設備來使用。
實時系統可分成兩類:
(1)實時控制系統。當用于飛機飛行、導彈發射等的自動控制時,要求計算機能盡快處理測量系統測得的數據,及時地對飛機或導彈進行控制,或將有關信息通過顯示終端提供給決策人員。當用于軋鋼、石化等工業生產過程控制時,也要求計算機能及時處理由各類傳感器送來的數據,然后控制相應的執行機構。
(2)實時信息處理系統。當用于預定飛機票、查詢有關航班、航線、票價等事宜時,或當用于銀行系統、情報檢索系統時,都要求計算機能對終端設備發來的服務請求及時予以正確的回答。此類對響應及時性的要求稍弱于第一類。
實時操作系統的主要特點:
(1)及時響應。每一個信息接收、分析處理和發送的過程必須在嚴格的時間限制內完成。
(2)高可靠性。需采取冗余措施,雙機系統前后臺工作,也包括必要的保密措施等。
內核態和用戶態
操作系統結構
操作系統的發展大致經歷了無結構操作系統(第一代),模塊化的操作系統(第二代),分層式結構(第三代),這些稱為傳統操作系統結構。而微內核操作系統是現代操作系統結構,他是在C/S(客戶端/服務器)這種架構方式上發展起來的。傳統操作系統的內容,大家只需要了解就可以了。重點在微內核操作系統。
微內核操作系統
????微內核操作系統往往采用的是C/S模式,它把操作系統分為微內核和多個服務器。微內核主要用于(1)實現與硬件緊密相關的處理,(2)實現一些較基本的功能,(3)負責客戶和服務器之間的通信。
內核的功能
由于微內核結構的存在,那么程序就運行在兩種不同的地方,內核態和用戶態,內核態與用戶態是操作系統的兩種運行級別,跟intel cpu沒有必然的聯系。
特權級
對于任何一個操作系統來說,創建一個新的進程都屬于核心功能,因為它要做很多底層細致的工作,消耗系統的物理資源,比如分配物理內存,從父進程拷貝相關信息,拷貝設置頁目錄頁表等,這些顯然不能隨便讓哪個程序就能去做,于是就自然引起了特權級別的概念,顯然,最關鍵性的權力必須由高特權級別的程序來執行,這樣才能做到幾種管理,減少有限資源的訪問和使用沖突。特權級別顯然是非常有效的管理和控制程序的執行手段,因此在硬件對特權級別做了很多支持,就Intel的x86架構的CPU來說,一共由0~3四個特權級,0為最高,3為最低,硬件上在執行每條執行的時候都會對指令所具有的特權級做相應的檢查,相關概念有CPL,DPL和RPL,這里不在多闡述,硬件已經提供了一套特權級使用的相關機制,軟件自然就是好好利用這個問題,這屬于操作系統要做的事情,對于Unix/Linux來說,只使用了0級特權和3級特權。也就是說在Unix和Linux中,一條工作在0級特權的指令具有CPU能提供的最高權力,而一條工作在3級特權的指令具有CPU提供的最低或者說最基本的權力。
內核態和用戶態
根據上面說的特權級,來理解用戶態和內核態就比較好理解了,當程序運行在3級特權的時候就可以稱之為運行在用戶態,因為這是最低特權級,是普通的用戶進行運行的特權級,大部分用戶之間面對的程序都是運行在用戶態;反之,當程序運行在0級特權級上時,就可以稱之為是運行在內核態。雖然用戶態下和內核態下工作的程序有很多差距,但是更重要的差別就在于特權級的不同,即權力的不同。運行在用戶態下的程序不能直接訪問操作系統內核數據結構和程序。當我們在系統中執行一個程序時,大部分時間是運行在用戶態下的,在其需要操作系統幫助完成某些它沒有權力和能力完成的工作時就會切換到內核態。
內核態:當一個任務(進程)執行系統調用而陷入內核代碼中執行時,我們就稱進程處于內核運行態(或簡稱為內核態)。其他的屬于用戶態。用戶程序運行在用戶態,操作系統運行在內核態.(操作系統內核運行在內核態,而服務器運行在用戶態)。用戶態不能干擾內核態.所以CPU指令就有兩種,特權指令和非特權指令.不同的狀態對應不同的指令。特權指令:只能由操作系統內核部分使用,不允許用戶直接使用的指令。如,I/O指令、置終端屏蔽指令、清內存、建存儲保護、設置時鐘指令(這幾種記好,屬于內核態)。?非特權指令:所有程序均可直接使用。?
所以:
系統態(核心態、特態、管態):執行全部指令。?
????用戶態(常態、目態):執行非特權指令。
?用戶態和內核態的轉換
用戶態切換到內核態的3種方式
- 系統調用
- 系統調用這是用戶態進程主動要求切換到內核態的一種方式,用戶態進程通過系統調用申請使用操作系統提供的服務程序完成工作,比如執行了一個創建新進程的系統調用。而系統調用的機制其核心還是使用了操作系統為用戶特別開放的一個中斷來實現,例如Linux的int?80h中斷。
- 異常
- 當CPU在執行運行在用戶態下的程序時,發生了某些事先不可知的異常,這時會觸發由當前運行進程切換到處理此異常的內核相關程序中,也就轉到了內核態,比如缺頁異常。
- 外圍設備的中斷
- 當外圍設備完成用戶請求的操作后,會向CPU發出相應的中斷信號,這時CPU會暫停執行下一條即將要執行的指令轉而去執行與中斷信號對應的處理程序,如果先前執行的指令是用戶態下的程序,那么這個轉換的過程自然也就發生了由用戶態到內核態的切換。比如硬盤讀寫操作完成,系統會切換到硬盤讀寫的中斷處理程序中執行后續操作等。
這3種方式是系統在運行時由用戶態轉到內核態的最主要方式,其中系統調用可以認為是用戶進程主動發起的,異常和外圍設備中斷則是被動的。
具體的切換操作
從觸發方式上看,可以認為存在前述3種不同的類型,但是從最終實際完成由用戶態到內核態的切換操作上來說,涉及的關鍵步驟是完全一致的,沒有任何區別,都相當于執行了一個中斷響應的過程,因為系統調用實際上最終是中斷機制實現的,而異常和中斷的處理機制基本上也是一致的,關于它們的具體區別這里不再贅述。關于中斷處理機制的細節和步驟這里也不做過多分析,涉及到由用戶態切換到內核態的步驟主要包括:
- 從當前進程的描述符中提取其內核棧的ss0及esp0信息。
- 使用ss0和esp0指向的內核棧將當前進程的cs,eip,eflags,ss,esp信息保存起來,這個過程也完成了由用戶棧到內核棧的切換過程,同時保存了被暫停執行的程序的下一條指令。
- 將先前由中斷向量檢索得到的中斷處理程序的cs,eip信息裝入相應的寄存器,開始執行中斷處理程序,這時就轉到了內核態的程序執行了。
常見的內核態常見總結
前文已經提到,內核的功能:
(1)進程(線程)管理 (進程或者線程的調度)
(2)低級存儲器管理 (用戶程序邏輯空間到內存空間的物理地址的變換)
(3)中斷和陷入管理 (中斷和陷入)
具體的:
(1)?I/O指令、置終端屏蔽指令、清內存、建存儲保護、設置時鐘指令。?
(2)?中斷、異常、陷入,比如缺頁中斷等
(3)進程(線程)管理
(4)系統調用,比如調用了設備驅動程序
(5)用戶內存地址的轉換(邏輯---> 物理映射)
并行和并發
?關于并行與并發說有很多,這里列舉一些常見的說法:
- 解釋一:并行是指兩個或者多個事件在同一時刻發生;而并發是指兩個或多個事件在同一時間間隔發生。
- 解釋二:并行是在不同實體上的多個事件,并發是在同一實體上的多個事件。
- 解釋三:在一臺處理器上“同時”處理多個任務,在多臺處理器上同時處理多個任務。如hadoop分布式集群
?簡單理解就是:
并發是指一個處理器同時處理多個任務。
并行是指多個處理器或者是多核的處理器同時處理多個不同的任務。
并發是邏輯上的同時發生(simultaneous),而并行是物理上的同時發生。
來個比喻:并發是一個人同時吃三個饅頭,而并行是三個人同時吃三個饅頭。
同步與異步
同步和異步通常用來形容一次方法調用。
- 同步方法調用一旦開始,調用者必須等到方法調用返回后,才能繼續后續的行為。
- 異步方法調用更像一個消息傳遞,一旦開始,方法調用就會立即返回,調用者就可以繼續后續的操作。而,異步方法通常會在另外一個線程中,“真實”地執行著。整個過程,不會阻礙調用者的工作。
?
轉載于:https://www.cnblogs.com/kuxingseng95/p/9418203.html
總結
- 上一篇: 石头自清洁扫拖机器人G10 Plus评测
- 下一篇: 前后端如何通信