Linux運維之操做系統學習筆記程序員
Posted on 25 十二月, 2013 Leave a Commentshell
學習藍本 《現代操做系統》 荷Andrew S.Tanenbaum著 陳向羣 馬洪兵等譯數據庫
現代計算機系統由一個或多個處理器、主存、磁盤、打印機、鍵盤、鼠標、顯示器、網絡接口和其餘輸入/輸出設備組成。編程
關於對抽象的理解,抽象是管理複雜性的一個關鍵;windows
好的抽象能夠把一個幾乎不可能管理的任務劃分爲兩個或者更多可管理的部分,第一部分是有關抽象的定義和實現,第二部分是隨時能夠用這些抽象解決問題;緩存
操做系統的任務是建立好的抽象,並實現和管理它所建立的抽象對象。網絡
操做系統是運行在內核態的軟件,操做系統的主要任務是隱藏硬件,呈現給程序以及程序員良好、清晰、優雅、一致的抽象,操做系統將醜陋變爲美麗。多線程
操做系統的實際客戶是應用程序,應用程序直接與操做系統及其抽象打交道;相反,最終用戶與用戶接口所提供的抽象打交道,或者是命令行shell或者是圖形接口。運維
把操做系統看作是嚮應用程序提供基本抽象的概念,是一種自頂而下的觀點。dom
按照另外一種自底向上的觀點,操做系統則用來管理一個複雜系統的各個部分。現代計算機包含:處理器、存儲器、時鐘、磁盤、鼠標、網絡接口、打印機以及許多其餘設備。從這個角度看,操做系統的主要任務是在相互競爭的程序之間有序地控制對處理器、存儲器、以及其餘I/O設備接口分配的狀況。
特別是在多用戶多任務的操做系統上,這種自底向上的觀點,變得尤其重要;由於當一個操做系統上有多個用戶時,用戶之間不只須要共享硬件、還要共享信息(文件、數據庫等),操做系統的主要任務是記錄哪一個程序在使用什麼資源,對資源請求進行分配,評估使用代價,而且爲不一樣的程序和用戶調解相互衝突的資源請求。
資源管理使用兩種方式來實現多路複用(共享),在時間和空間上覆用。
當一種資源在時間上覆用時,不一樣的程序或用戶輪流使用它,顯示第一個得到資源的使用,而後是下一個,以此類推
時間複用,打印機共享的例子
至於資源是如何實現時間複用的,則是操做系統的任務。
另外一類是空間複用。每一個客戶獲得資源的一部分,取得客戶排隊;如一般須要在各個應用程序之間分割內存,如此每個程序均可以同時入駐內存(如,爲了輪流使用CPU),假設有足夠的內存能夠存放多個程序,那麼在內存中同時存放若干個程序的效率,比把全部內存都分配給一個程序的效率要高得多,特別是,若是一個程序只須要整個內存的一小部分時,結果更是如此。
有關空間複用的其餘資源還有磁盤,在許多系統中,一個磁盤同時爲許多用戶保護文件。分配磁盤空間並記錄誰正在使用哪一個磁盤塊,是操做系統資源管理的典型任務。
操做系統的歷史:暫且略
計算機硬件介紹:
從概念模型上來說,一個簡單的我的計算機能夠抽象爲上圖中的模型:CPU、內存以及I/O設備都由一條系統總線鏈接起來並經過總線與其餘設備通訊。
處理器:
是計算機的大腦,從內存中取指令並執行之。在cpu基本週期中,首先從內存中取出指令,解碼並肯定其類型和操做數,接着執行之,而後取指令、解碼並執行下一條指令。如此循環往復。
每一個cpu都有其一套可執行的專門指令集。Pentium不能執行sparc程序,而sparc也不能執行pentium程序。
Pipeline流水線機制
超標量CPU, 有多個執行單元,例如,一個cpu用於整數算數運算,一個cpu用於浮點算術運算,而另外一個用於布爾運算;兩個或更多的指令被同時取出、解碼並裝入一個保持緩存區中,直至他們執行完畢。只要有一個執行單元空閒,就檢查緩衝區中是否有可處理的指令,若是有,就把指令從緩衝區移出並執行之。此設計的隱含之處在於:程序的指令常常不被順序執行。在多數狀況下,硬件負責保證這種運算的結果與順序執行指令時的結果相同,可是,仍然有部分使人煩惱的複雜情形而被強加給操做系統處理。
除了在嵌入式系統中的很是簡單的cpu以外,多數cpu都有兩種模式,也就是前面所說的用戶態和內核態。
PSW二進制位控制這兩種模式
當在內核態運行時,cpu能夠執行指令集中的每一條指令,而且使用硬件的每種功能。操做系統在內核態下運行,從而能夠訪問整個硬件。
相反,用戶在用戶態下運行,僅僅容許執行整個指令集中的一個子集和訪問全部功能的一個子集。通常而言,在用戶態中有關I/O和內存 保護的全部的指令都是禁止的。
爲了從操做系統得到服務,用戶必須使用系統調用(system call)TRAP指令把用戶態切換成內核態,並啓用操做系統。
多線程和多核芯片
Moore定律指出:芯片中晶體管的數量每18個月翻一番。
Moore定律已經保持了30年,還有望再保持至少10年。
Multithreading多線程
Hyperthreading超線程
存儲器:
寄存器採用與CPU一樣的材料製成,因此與CPU速度同樣快,訪問不延時。
下一層是高速緩存,多數由硬件控制。主存被分割成高速緩存行(cache line)其典型大小爲64字節,地址從0到63對應告訴緩存行0,地址64到127對應對應高速緩存行1,以此類推。
最經常使用的高速緩存行放置在CPU內部或者很是接近CPU的高速緩存中。當某個應用程序須要讀一個存儲字時,高速緩存硬件檢查所須要的高速緩存行是否在高速緩存中,若是是則被稱之爲高速緩存命中,緩存知足了請求,就不須要經過總線把訪問請求送往主存。
高速緩存中一般須要兩個時鐘週期。高速緩存未命中就必須訪問內存,這須要付出大量的時間代價。因爲高速緩存的價格昂貴,因此其大小有限。有些機器具備兩級設置三級高速緩存,每一級高速緩存比前一級慢且容量更大。
緩存在計算機科學的許多領域起着重要的做用,只要存在大量的資源能夠劃分爲小的部分,那麼,這些資源中的某些部分就會比其餘部分更頻繁地獲得使用,一般緩存的使用會帶來性能上的改善,操做系統一直在使用緩存。例如,多數操做系統在內存中保留頻繁使用的文件(的一部分),以免從磁盤中重複地調取這些文件。
在任何緩存系統中,都有若干須要儘儘快考慮的問題,包括:
1)什麼時候把一個新的內容放入緩存; 2)把新內容放在緩存的哪一行上; 3)在須要時,應該把哪一個內容從緩存中移走; 4)應該把新移走的緩存放在某個較大存儲器的何處。
現代CPU L1緩存老是在cpu中;L2緩存,二者之間的差異在於時序,對L1緩存的訪問,不存在任何延時,而對L2緩存的訪問,則會延時1或2個時鐘週期。
再往下就是主存 RAM,一般被稱之爲RAM(Random Access Memory)隨機訪問存儲器。全部不能在高速緩存命中獲得知足的訪問請求都會被轉送至主存。
除了主存以外,不少計算機都採用了非易失性訪問存儲器。他們與RAM不一樣,斷電後,存儲在其內的數據不會丟失。只讀存儲器ROM(Read Only Memory,ROM)在工廠中就被編程完畢,而後不再能修改,其特色是速度快價格便宜,
在有些計算機中,用於啓動計算機的引導加載模塊存放在ROM中,還有一些I/O也採用ROM底層處理機制。
EEPROM(Electrically Eraseable PROM,電可擦除可編程ROM)和閃存(flash memory)也是非易失性的,可是與ROM相反,它們能夠擦除和重寫。
還有一類存儲器是CMOS,易失性的。CMOS存儲器和遞增時間的時鐘電路由一塊小電池驅動。CMOS存儲器還能夠保存配置參數。
若電池失效時,會提示Alzheimer病症
硬盤:
下一個層次是磁盤(硬盤)
磁盤驅動器的構造
磁盤惟一的問題是隨機訪問數據時間大約慢了三個數量級。其低速的緣由是磁盤是一種機械裝置。
在一個磁盤上有一個或多個金屬盤片,它們以5400、7200、10800rpm的速度旋轉。
邊緣開始有一個機械手臂懸橫在磁盤上面,信息寫在磁盤上的一系列同心圓上。
在任意一個給定臂的位置,每一個磁頭能夠讀取一段環形的區域,稱爲磁盤(track),把一個給定臂的位置上的全部磁盤合併起來,就組成了一個柱面(cylinder)
每一個磁道劃分爲多個扇區,典型值是512字節。
現代磁盤,較外面的柱面比較內部的柱面有更多的扇區。機械臂從一個柱面到相鄰柱面大約須要1ms。而隨機移動到一個柱面的典型時間爲5ms到10ms,其具體時間取決於驅動器。
一旦磁臂到達正確的磁道上,驅動器必須等待所需的扇區旋轉到磁頭之下,就開始讀寫,低端磁盤的速率是5MB/s,而高端磁盤的速率是160MB/s,固態硬盤的速度更快。
計算機支持一種叫作虛擬內存的機制,存儲器管理單元(MMU memory management unit,MMU)
方法是將程序放在磁盤上,而將主存做爲一種緩存,用來保存使用最頻繁的部分程序。此機制須要快速的映像內存地址,以便把程序生成的字節地址轉換爲有關字節在RAM中的物理地址,這種映像由cpu的一個部件,成爲內存管理單元MMU。
緩存和MMU的出現對系統的性能有着重要的影響。
在多道程序設計中,從一個程序切換到另外一個程序,有時稱爲上下文切換(context text)
磁帶:
在存儲器體系中的最後一層是磁帶,此介質一般用於磁盤的備份,並可保存大量的數據集。
I/O設備:
I/O設備通常包括兩個部分,設備控制器和設備自己。
控制器是插在電路板上的一塊芯片或一組芯片,這塊電路板物理地控制設備。它從操做系統接受命令。
控制器的任務是爲操做系統提供一個簡單的接口。
I/O設備的另外一個部分是實際的自身。設備自己有個相對簡單的接口,、。
每類設備的控制器不一樣,因此須要不一樣的軟件進行控制,專門與控制器對話,發出命令並接受響應的軟件,稱之爲設備驅動程序(devcie driver)。每一個控制器廠家必須爲所支持的操做系統提供相應設備的驅動程序。
爲了可以使用設備驅動程序,必須把設備驅動程序載入到操做系統中,這樣它就能夠在覈心態中運行。
將設備驅動裝入操做系統的三個途徑:
1)內核與驅動程序從新連接,reboot 系統,多數UNIX以此種方式工做;
2)在操做系統文件中設置一個入口,並通知該文件須要一個設備驅動程序,windows以此方式工做;
3)操做系統在運行時接受新的設備驅動並裝載之,將其安裝好,無需重啓操做系統,也就是所謂的支持熱插拔了。
每一個設備控制器都有少許的用於通訊的寄存器。
版權聲明:今天下午上班,打開博客一看什麼個狀況,看變成轉載了,這篇文章最初是由本人發表在http://www.menger51.com/?p=143我本身的博客上的,只是那個博客很久沒有更新,因此才貼到這個上面來的,不知道51cto是個什麼狀況?