操做系統算法
1、操做系統概述編程
(一) 操做系統的概念、特徵、功能和提供的服務微信
(二) 操做系統的發展和分類併發
(三) 操做系統的運行環境負載均衡
(四) 操做系統的體系結構異步
2. 共享:操作系統
3.虛擬:.net
好比說只有一個CPU,可是微信和微博兩個進程處理的時候會被處理爲兩個虛擬的獨立的邏輯CPU,各自爲進程工做。3d
4.異步性:調試
1.2.1操做系統的發展過程
一個磁帶中有五首歌,就是有五個程序,每次把一首歌轉換成目標文件,而後處理,而後繼續這個過程,這就叫批處理。
多道批處理系統特性:
分時系統:
終端—只有顯示器和鍵盤(輸入輸出)
通用操做系統: 兼有分時、實時和批處理三者或其中二者的操做系統,稱爲通用操做系統。
構成集羣,協同工做
負載均衡的概念
1.1.2操做系統的分類
1.3.1內核態和用戶態
咱們把CPU分紅兩個狀態:
psw中有一位標明瞭
打開文件fopen的時候就要從用戶態轉換到核心態,由於要到硬件磁盤中去取
1.3.2中斷與異常
總結:
中斷:是爲了設備與CPU之間的通訊。典型的有如服務請求,任務完成提醒等。好比咱們熟知的時鐘中斷,硬盤讀寫服務請求中斷。中斷的發生與系統處在用戶態仍是在內核態無關,只決定於EFLAGS寄存器的一個標誌位。咱們熟悉的sti, cli兩條指令就是用來設置這個標誌位,而後決定是否容許中斷。在單個CPU的系統中,這也是保護臨界區的一種簡便方法。中斷是異步的,由於從邏輯上來講,中斷的產生與當前正在執行的進程無關。事實上,中斷是如此有用,Linux用它來統計時鐘,進行硬盤讀寫等。
異常:異常是由當前正在執行的進程產生。異常包括不少方面,有出錯(fault),有陷入(trap),也有可編程異常(programmable exception)。
出錯(fault)和陷入(trap)最重要的一點區別是他們發生時所保存的EIP值的不一樣。出錯(fault)保存的EIP指向觸發異常的那條指令;
陷入(trap)保存的EIP指向觸發異常的那條指令的下一條指令。
所以,當從異常返回時,出錯(fault)會從新執行那條指令;而陷入(trap)就不會從新執行。這一點實際上也是至關重要的,好比咱們熟悉的缺頁異常(page fault),因爲是fault,因此當缺頁異常處理完成以後,還會去嘗試從新執行那條觸發異常的指令(那時多半狀況是再也不缺頁)。
陷入的最主要的應用是在調試中,被調試的進程遇到你設置的斷點,會停下來等待你的處理,等到你讓其從新執行了,它固然不會再去執行已經執行過的斷點指令。
可編程中斷:這類中斷可由編程者用int指令來觸發。在Linux中,使用了一個,也是惟一的一個可編程中斷,就是int 0x80系統調用。硬件對可編程中斷的處理與對trap的處理相似,即從這類異常返回時也是返回到觸發異常的下一條指令。關於可編程中斷,還有另一種說法:軟件中斷(software interrupt),實際上是一個意思.
1.3.3系統調用
fopen() => open()
1.4操做系統體系結構
層次化
原來要調用,如今要調用三次,可是優勢是他健壯了,死了一個不會直接掛掉。