王道考研-操作系統學習筆記


王道考研-操作系統學習筆記

  • 聯機命令接口(交互式命令)&脫機命令接口(批處理命令接口)
  • 單道批處理程序時的監控程序是操作系統的原型,多道批處理程序時操作系統正式誕生
  • 運行機制
    • 兩種指令
      • 特權指令
      • 非特權指令
    • 兩種狀態(用PSW 寄存器的某個標記位表示)
      • 核心態(管態)
      • 用戶態(目態)
    • 兩種程序
      • 應用程序
      • 內核程序
  • 中斷和異常
    • 本質:在多道批處理后引入了中斷機制,本質:中斷發生之后需要操作系統介入,進行一些管理工作
    • 用戶態-->核心態的切換是通過【中斷】實現的,且中斷是唯一的途徑
    • 核心態-->用戶態的切換是通過一個特權指令,獎PSW寄存器的標記設置為“用戶態”即可
    • 中斷分為兩大類
      • 內中斷(信號來源:CPU內部,與當前執行的指令有關,也成為異常、陷入)
        • 自願中斷(如內核系統調用)
        • 強迫中斷(硬件故障,缺頁。軟件中斷,除0)
      • 外中斷(信號來源:CPU外部,與當前執行的指令五關)
        • 外設請求(IO操作完成)
        • 人工干預(用戶強制中斷執行)
    • int 指令(interrupt 又稱為 陷入\trap\訪管指令,在用戶態調用,立即引發內中斷,處理系統調用的相關代碼進入核心態)
    • CPU 每執行一條指令后就會去檢查是否有中斷發生
  • 進程
    • 進程由PCB(進程控制塊)、程序段、數據段組成
    • 進程控制-- 實現進程各種狀態的轉換,通過原語實現 ,原語是被 【關中斷】和【開中斷】指令包含的原語代碼,CPU不會被外部中斷打斷
    • 進程控制原語(阻塞原語和喚醒原語需要成對出現 )
      • 更新PCB中的信息
      • 將PCB 插入合適隊列
      • 分配回收資源
    • 進程通信指是進程間的信息交換
      • 共享存儲(必須互斥、PV操作)
        • 基於數據結構的共享,低級通信
        • 基於存儲區域的共享,高級通信
      • 消息傳遞(以格式化的消息message為單位,通過操作系統提供的發送\接收消息原語進行數據交換)
        • 直接通信,消息直接掛到接收進程的消息隊列
        • 間接通信,消息要先發到中間實體
      • 管道通信
        • 半雙工通信,同一個時刻只能向一個方向通信,兩個管道實現全雙工
        • 需要互斥,寫滿write 阻塞,讀空read阻塞。
        • 沒寫滿,不允許讀,沒讀空,不允許寫。
  • 線程
    • 傳統的進程是執行流調度的最小單位,現在線程是CPU執行的基本單元,進一步提高了系統的並發度。
    • 進程只作為除CPU之外的系統資源的分配單元
    • 線程實現方式
      • 用戶級線程,線程通過應用程序的線程庫創建,在用戶空間,由用戶程序負責調度,操作系統看不到
      • 內核級線程,線程通過操作系統內核創建,由內核調度。在內核空間。
    • 多線程模型
      • 多對一、一對一、多對多
  • 調度機
    • 不能調度的情況:1、處理中斷的過程中 2、操作系統內核臨界區中不能進行調度 3、原語不能進行調度
    • 進程切換
      • 對原來運行進程的各種數據的保存
      • 對新的進程的各種數據的恢復(計數器、程序狀態字、各種數據寄存器等處理機現場信息,一般保存再進程控制塊中、進程控制塊在隊列中、常駐內存)
    • 多級反饋隊列調度算法:多個隊列優先級從高到低,時間片從小到大
    • 進程同步、互斥
      • 進程異步,各並發執行的進程以各自獨立的、不可預知的速度向前推進,(步調不一致)
      • 進程同步,直接制約關系,協調多個多個異步進程的工作次序,使他們之間相互合作(步調一致)
      • 互斥指臨界資源的訪問方式(識別臨界資源)
        • 代碼分為:進入區、臨界區、退出區、剩余區
        • 遵循原則:空閑讓進、忙則等待、有限等待、讓權等待
      • 進程互斥的軟件實現方法
      • 進程互斥的硬件時間方法
        • 中斷屏蔽方法(開/關中斷指令)
          • 優點:簡單、高效;缺點:不適用多處理機,只適用操作系統內核進程、不適用用戶進程
        • TestAndSet(TS指令、TSL testandsetLock) 是用硬件實現的,執行過程不會被中斷
        • SWAP 指令
      • 信號量實現進程互斥、同步、前驅
        • 實現互斥:
          • 分析出臨界區
          • 設置互斥信號量 mutex 設置為1
            • (信號量是指操作系統中的某種資源,臨界區也可以是一個資源)
          • (進程)程序代碼先對互斥信號量進行P操作,
          • (進程)程序代碼再對互斥信號量進行V操作
        • 實現同步(由於進程並發執行,時間片輪轉、程序內順序執行、程序間存在異步性,同一個程序的多個進程(線程)間的代碼片段交替執行次序是不確定的)
          • 需要先分析什么地方需要實現同步關系(進程間代碼片段1要比代碼片段2先執行)
          • 設置同步信號量S,初始為0
          • 在“前操作”之后執行V(S)
          • 在“后操作”之前執行P(S)
        • 實現前驅(多級同步關系)
          • 需要為每一對前驅關系各設置一個同步變量
          • 在“前操作”之后對響應的同步變量執行V操作
          • 在“后操作”之前對響應的同步變量執行P操作
    • 內存
      • 操作系統負責內存的分配和回收
        • 連續分配
          • 固定分區分配
          • 動態分區分配 z
        • 非連續分配
          • 頁框(物理塊)是內存的分配和回收單位,實際物理地址還是字節,是由頁號+頁內偏移量計算得到的,計算機實際操作的地址仍然是字節
          • 邏輯地址和物理地址的轉換
            • 計算進程內頁號(邏輯頁號),計算方法:地址除以頁大小
            • 計算進程內頁面內偏移量(頁內便宜量),計算方法:地址模頁大小
            • 根據頁表得到實際物理塊號
            • 根據物理塊號(塊大小可以得到物理地址)+頁內偏移量得到 物理地址
          • 頁表項大小的計算
          • 頁表在內存中是連續存儲的,數組存儲而不是鍵值對,比如頁表項是3個字節大小,邏輯0號頁,對應的物理地址存在0~2 三個字節中
          • 每個進程有一個頁表,頁表有頁號和塊號組成
            • 每個頁表項長度是相同的,頁號是隱含的,這樣通過數組就能實現頁號和塊號的對應,計算頁表項長度的方法
          • 未運行時頁表啟始地址和頁表長度(校驗頁號是否合法)是放在進程pcb中,當進程被調度時,放入ptr頁表寄存器中。
          • 因為時間局部性和空間局部性引入了快表機制,又稱為聯想寄存器(TLB),內存中頁表又稱為慢表。
          • 單級頁表的問題
            • 頁表必須連續存放,如果頁表很大,需要占用很多連續的頁框
            • 沒必要讓整個頁表常駐內存,大部分情況只需要特定的幾個頁表就可以
            • 多級頁表的大小不能超過一個頁面
          • 基本分段管理(和分頁管理不同是分配的單位不一樣)
            • 按照程序自身邏輯 划分為若干段,各段之間不相鄰,段內地址連續,段內地址從0開始
            • 頁是信息的物理單位,分頁的主要目的是為了實現離散分配,提高利用率,僅僅是系統管理需要,對用戶是不可見的
            • 段是信息的邏輯單位。分段的主要目的是為了更好的滿足程序員的需求。一個段通常包含着一組屬於一個邏輯模塊的信息。分段是對用戶可見的,用戶編程時需要顯示的給出段名
            • 頁大小時固定由系統決定的,段的長度不固定。決定於用戶編寫的程序。分頁是一維的,分段是二維的
            • 分段更容易實現信息的共享和保護(因為分段是按照代碼邏輯划分的,可控制)
          • 段頁式內存管理
            • 一個程序有一個段表,每個段項對應一個頁表。一個進程可能有多個頁表
      • 邏輯上對內存空間進行擴充(虛擬內存)
        • 覆蓋、交換
        • 虛擬內存技術
          • 傳統的缺點:一次性裝入內存、一直駐留內存
          • 請求調頁
          • 頁換出
      • 實現邏輯地址和物理地址的轉換
      • 內存保護
      • LRU (最近最少使用算法)
        • 從當前的訪問位置,向前追溯訪問歷史,最久沒被用到的元素,被淘汰掉。
      • 駐留集:分配給進程的物理塊集合,常駐內存
    • 文件管理
      • 在很多操作系統中磁盤塊的大小設置和內存頁大小一致,便於內存和外存間的數據交換
      • 外存的管理方式和內存思路一樣,分塊、邏輯地址和物理地址及映射表
      • FAT (顯式連接文件分配表)整個磁盤僅僅有一張,索引文件每個文件都有一個分配表
      • 平時使用的個人電腦是把一個磁盤划分為多個邏輯卷,在大型操作系統中,也可以由多個磁盤組成一個邏輯卷
      • Unix 系統使用“成組鏈接法”跟蹤空閑磁盤號,試用超大文件系統,由超級塊記錄
      • 兩種打開文件表
        • 系統的打開文件表(整個操作系統只有一張),提供了打開技術器,一共被多少進程打開
        • 用戶進程的打開文件表
      • 磁盤初始化
        • 低級格式化,划分扇區
        • 磁盤分區
        • 邏輯格式化(創建文件系統)
        • 自舉程序(bootstrap),ROM 存放了一個很小的“自舉裝入程序”,完整的自舉程序裝在啟動塊中
    • IO控制方式
      • 程序控制方式(輪詢:CPU干預頻率高:傳送單位字:IO設備--》CPU寄存器--》內存:CPU和IO 串行工作)
      • 中斷驅動方式(中斷,每個指令執行末尾檢查中斷:CPU每次IO操作之前和完成之后CPU介入,干預頻率低:每次中斷一個字節:IO設備--》CPU寄存器--》內存:CPU和IO並行處理,傳輸大量數據需要很多中斷,耗費CPU)
      • DMA方式(直接內存訪問:僅僅在傳送一個或者多個數據塊開始結束時才需要CPU干預:每次讀寫一個塊:IO設備--》內存:CPU 和IO並行,性能進一步提高。只能讀寫連續塊,否則也需要CPU多次干預)
      • 通道控制方式(通道是一種硬件,弱雞版CPU,可以識別並執行一系列通道指令:每次讀寫完一組塊數據CPU干預:IO設備-》內存:實現復雜,需要專門硬件支持)
      • 注意的問題:
        • 完成一次讀寫操作的流程
        • CPU干預的頻率
        • 數據傳送的單位
        • 數據的流向
        • 主要的缺點和優點
      • 什么是脫機技術
        • 脫離主機(CPU)的控制進行輸入和輸出的操作。緩解CPU和設備間的速度矛盾,實現數據的預輸入和緩輸出。紙帶機-》外圍控制-》磁帶-》計算機
        • 假脫機(SPOOLING) 用軟件的方式模擬脫機技術。用輸入井模擬外圍控制機+磁帶


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM