這章的標題好大,說到作業系統,windows
肯定都用過嘍,
unix
沒用過也聽過嘍,
linux
什麼的也聽過嘍,至於它們到達是什麼樣的作業系統呢?多工作業系統。說作業系統,難道是講怎麼用嗎?這裡是
cs好不好,又不是計算機操作教學。。呵呵,開個小差啦。大三的時候學過一本書,書名就叫作業系統,所以這一章,又可以說,夠看一本書的了,呵呵。作業系統是用來協調計算機的內部活動以及檢查計算機與外部世界通訊的軟體包,通過
os,能將計算機硬體轉化為有用的工具,這章的目標是理解
os做哪些工作以及是如何完成這些工作的。
os是控制計算機所有操作的軟體,它提供了使用者儲存和檢索檔案的方法,提供了使用者可以請求執行程式的介面,還提供了程式請求執行所必需的環境。
作業系統的歷史
說最初的電腦程式是寫在紙帶上的,雖然沒見過,但大家都信吧。那麼當乙個人像用計算機幹事情的時候,他就必須把紙帶製作好,然後全權擁有一台計算機的操作許可權,使用讀卡機讀取程式,然後執行,得到結果,這稱為乙個「作業」好了。當好多人需要使用計算機的時候,大家得排隊吧,於是這個時候的作業系統出現了,叫批處理系統,用於控制「作業」按先進先出的順序執行。就幹這些事,啥也不幹。這種情況下,作業送到作業佇列後,使用者就不能再與他的作業互動了。後來又出了個新的作業系統,它們允許執行乙個程式來實現通過遠端終端與使用者對話,叫互動式處理系統。這時候用的還是乙個主機,連線多個終端,也就是說乙個主機,擁有多個使用者在使用,如果只有乙個使用者,那麼可以勉強理解為實時性,多個使用者就無法做到了。針對這個問題,又設計了一種稱為分時的作業系統,實現方法的一種為多道程式設計的技術,將時間分為時間片,每個作業的執行被限制為每次僅乙個時間片,造成同時可以執行多個任務的錯誤。
現在的作業系統都是多使用者多工的了,gui
介面也很好看,易於操作,可是
os的核心工作就那麼一點,分配工作,執行程式而已。其他的只不過是附加在作業系統之上的便於使用者使用的系統工具而已。另外作業系統還提供了可以供開發人員呼叫作業系統功能的
api介面,也就是呼叫硬體功能的方法。
另外說到安卓,塞班,ios
,這些手機系統,大家也不陌生吧,它們也是作業系統,用於管理乙個硬體系統的軟體系統,都可以稱之為作業系統。
作業系統的體系結構
這裡是說作業系統的體系結構,並不是上章說的計算機的體系結構呀,那是硬體,這是軟體。
這裡不再說什麼了,記幾個名詞好了,shell外殼,
gui圖形使用者介面,
kernel
核心。
作業系統的核心包含一些完成計算機安裝所需求的基本功能的軟體元件,如:檔案管理程式,裝置驅動程式,記憶體管理程式,排程程式,分派程式。這些名詞聽起來都好高大上的感覺,呵呵。
那麼系統是如何啟動的呢,一堆鐵,如果你看計算機,簡單的說,就是一堆鐵嘍,它接通電源之後,是如何開始執行作業系統的呢。在此之前,說cpu
接通電源,可以執行程式,那麼這裡是不是接通電源之後,第乙個執行的程式就是作業系統,當作業系統執行之後,我麼就能使用作業系統了呢。
cpu的設計使得每次
cpu啟動時,它的程式計數器都從事前確定的特定位址開始,
cpu在這個位址上期望找到第一條指令,那麼只要在這個位址上儲存作業系統的開始位址不就好了嘛,但是計算機主存關機之後,記憶體上的資料就沒有了,額,反正有點複雜。在一般的計算機中,稱之為引導的程式永久的儲存在計算機的
rom中,這樣,在計算機開機的時候,最先執行這個程式,引導程式的任務就是引導
cpu把作業系統從海量儲存器中預先定義的位置調入主存的可變儲存區中,一旦作業系統被放調入主存,引導程式就引導
cpu執行跳轉指令,轉到這個儲存器,開始執行作業系統這個程式,這樣,作業系統就接管了計算機的活動。如果有最夠大的
rom去放置整個作業系統,是不是就不需要從海量儲存器中引導了呢,這樣幹的話,效率未必高,但是在家用電器的作業系統啟動上,這樣很快速的。具體其他的,不太懂,作罷。
協調機器的活動
本節討論作業系統如何協調應用程式,實用軟體以及作業系統自身內部單元的執行的。聽起來很厲害的樣子。
現代作業系統的乙個基本的概念就是程式與可執行程式的行為區別開來,前者是一組靜態的指示,後者是一動態的行為,其屬性會隨著時間的推進而改變,我們把這種行為稱為程序。在典型的分時/
多工計算機系統中,許多程序通常會競爭計算機資源,而作業系統的任務就是管理這些程序。
與協調僅存的執行有關的任務是由作業系統核心中的排程程式和分派程式處理的。排程程式在主存中維護著乙個資訊塊,稱為程序表。分派程式是核心的乙個元件,它確保被排程的程序實際被執行。每次,分派程式給程序分配乙個時間片,它都會初始化乙個計時器電路,當時間片結束,它產生乙個中斷訊號給cpu
,cpu
完成當前機器週期,然後停止當前的工作,儲存中斷位置的任務進展,開始執行中斷處理程式,中斷處理程式是分派程式的一部分,它用來描述分派程式如何響應中斷請求。在學彙編的時候,曾經經常說
io中斷什麼的,大概都是這吧,不甚了解。。嘿嘿。。
處理程序間的競爭
作業系統的乙個重要任務就是將機器的各種資源分配給系統中的程序,為了控制各程序都能順利執行,而不會因為資源問題而導致無法執行,作業系統就必須設計演算法來控制資源的分配。這裡如果說幾個名詞,學過作業系統就肯定很熟,訊號量,死鎖,哲學家就餐問題,生產者消費者問題等等。呵呵,跳過嘍。
安全性這個貌似也沒什麼好說的,只說系統安全性的話,肯定離不開網路攻擊和軟體木馬什麼的了,黑客總是那麼神秘,嘿嘿。
作業系統作業三
2 已知主存的一次訪問為 1.5us,對於 tlb 表 快表 的查詢時間可以忽略,則訪問 上述兩個邏輯位址共耗費多少時間?訪問 0ac5h 不在快表,兩次訪問記憶體 3us 訪問 1ac5h,在快表,訪問一次記憶體,1.5us 所以總共 4.5us 3.在某請求分頁管理系統中,乙個作業共5頁,作業執...
Linux 作業系統(三)
命令名稱 選項 引數 命令名稱 描述該命令功能的英文單詞或縮寫,必不可少區分大小寫 選項 執行該命令的限定引數或功能引數,選項往往包括乙個或多個英語字母,字母前面有有乙個,同一命令採用不同的選項,其功能不同 引數 執行該命令的所必需物件,如檔案,目錄等,根據命令不同,引數可以乙個也可以多個甚至沒有 ...
作業系統 實驗三
分析程序爭用臨界資源的現象,學習解決程序互斥的方法。linux 程序控制 lockf 利用系統呼叫lockf fd,mode,size 對指定區域 有size指示 進行加鎖或解鎖,以實現程序的同步或互斥。其中,fd是檔案描述字 mode是鎖定方式,mode 1表示加鎖,mode 0表示解鎖 size...