天天看點

《現代作業系統》閱讀筆記——作業系統梗概

  • 作業系統的主要功能
    • 隐藏複雜的底層硬體操作,為使用者程式提供抽象
    • 管理計算機資源
  • 超線程
    • 對于一般的CPU, 雖然有多線程的概念,但是實際上CPU中每一時刻還是隻有一個線程在執行的
    • 我們知道現代CPU是流水線執行的,并且每個流水線階段有多個執行單元,比如專門執行浮點運算的,是以在不同任務重很有可能有些執行單元會不在工作。而超線程技術就是讓閑着的那些執行單元去做另一個線程的工作。這樣就實作了每一是個有多于一個線程在執行。
    • 但是這樣需要多于的硬體去管理,線程越多管理越複雜,是以一般隻有2個線程
    • 在核心本身就被充分利用的情況,超線程沒什麼用處
  • CPU, 實體核心和邏輯核心
    • CPU就是每台電腦一個的那東西
    • 核心就是CPU中含有的核心數,現在一般是一個CPU8核心,他們公用一些cache
    • 實體核心和邏輯核心一般來說是一樣的,但是由于超線程技術的存在,邏輯記憶體可能是實體核心的兩倍
  • 作業系統五大組成部分
    • 輸入輸出,保護/安全,程序,檔案系統,系統調用
  • 輸入輸出政策
    • 最簡單的就是CPU阻塞等待輸出輸出完成
    • 一般的方法是啟動裝置,待操作完成發出中斷
    • 第三種是DMA,直接儲存器通路。和第二種方法不同之處在于,第二種是将資料讀入一個緩沖區。待緩沖區滿後,發出中斷,清空緩沖區。但是如果輸入資料量很大的時候會面臨頻繁中斷的問題。而DMA是直接讓記憶體與裝置連接配接,在完成所有輸入的時候才發出中斷,通知CPU。
  • 核心模式和使用者模式
    • PSW(使用者狀态字)寄存器内含了CPU優先級,溢出标志等來表示目前程式的狀态,核心和使用者模式也可以在此被設定
    • 核心模式對計算機有全部操作權限,而使用者模式隻有有限權限,比如不能通路受保護的記憶體,不能修改目前模式等
    • I/O指令等都需要從使用者模式轉移到核心模式再執行
  • 程序擁有的資源
    • 寄存器
    • 打開的檔案清單
    • 警報(alarm)
    • 相關程序清單
    • 運作程式所需要的其他資訊
    • 位址空間
      • 可執行的程式指令
      • 程式資料
      • 程式的堆棧
  • 檔案系統
    • 作業系統将底層複雜的各種I/O細節抽象成了統一的概念——檔案
    • 特殊檔案
      • 塊特殊檔案:磁盤等
      • 字元特殊檔案: 列印機等
      • 特殊檔案抽象使得這個裝置看起來像檔案一樣
      • 一般存放在/dev目錄中
  • 系統調用
    • 提供使用者程式和作業系統的互動接口的集合
  • 微核心
    • 把許多核心态的功能放到使用者态實作
    • 代碼量較小
    • 減少核心中的錯誤
  • 為什麼C不支援自動垃圾回收機制呢?
    • 因為作業系統是用C語言寫的,這樣直接管理效率更高
    • 當發生中斷的時候,系統隻有很有限時間來處理,如果這個時候自動來及回收機制突然調用了,就有可能丢失關鍵資訊
  • POXIS标準
  • 一開始UNIX有不同的版本,各個版本之間不相容,後來為了統一标準,指定了POXIS标準,凡是符合這個标準的程式可以在任何版本的UNIX系統上運作。