操作系統(Operating Systems: Internals and Design Principles)


chapter 01 計算機系統概述

  • 空間局部性(spatial locality)和時間局部性(temporal locality)的區別

    • 時間局部性(temporal locality)
      最近被引用的存儲單元在未來會被多次引用(通常在循環中)。
    • 空間局部性(spatial locality)
      如果一個存儲單元被引用,那么將來它附近的存儲單元也會被引用。
  • 三種I/O技術:

    • 可編程I/O(Programmed I/O)

      處理器執行I/O指令后,還要定期檢查I/O模塊的狀態,以確定I/O操作是否已經完成。

    • 中斷驅動I/O(Interrupt-Driven I/O)

      CPU給I/O模塊發送I/O命令,然后繼續做一些其他的工作,當I/O模塊准備好與CPU交換數據時,它將打斷CPU的執行並請求服務。

    • 直接存儲器訪問(DMA)

      DMA模塊控制內存和I/O模塊之間的數據交換。為傳送一塊數據,處理器給DMA模塊發送請求,等到整個數據塊傳送結束后,DMA模塊才發送中斷信號給CPU。

  • 中斷產生的背景(?

    大多數I/O設備比CPU慢得多,引入中斷機制以提高CPU利用率。

  • 中斷處理流程

    課本圖1.10

  • 中斷的現場保存和恢復

    現場保存:將程序狀態字(PSW)、PC、一些寄存器的值 壓入控制棧

key words

instruction cycle:CPU取出一條指令並執行這條指令所用的時間。

interrupt:中斷是一種允許其他模塊(如I/O、存儲器)中斷CPU正常處理過程的機制。

hit ratio:較快存儲器的訪問次數與對所有存儲器的訪問次數的比值。

memory hierarchy:為了以較低的價格獲得更高的性能,現代計算機系統采用多類型存儲器的組合,稱為存儲器的層次結構。分為:板上存儲器、板外存儲體、離線存儲體。

cache:高速緩存

locality:

​ 空間局部性:訪問趨向於在地址空間中聚集

​ 時間局部性:最近訪問的數據在不遠的將來會被再次訪問

chapter 02 操作系統概述

  • 操作系統設計的三個目標

    • 方便:OS使計算機更易於使用。
    • 有效:OS能以更有效的方式使用計算機資源。
    • 可擴展
  • 操作系統提供的功能/服務

    • 程序開發
    • 程序運行
    • I/O設備訪問
    • 文件訪問控制
    • 系統訪問
    • 錯誤檢測和響應
    • 審計
  • 批處理系統/分時系統產生的背景

    • 批處理

      • 簡單批處理
      • 多道批處理:簡單批處理系統提高了CPU資源的利用率,但是由於I/O設備相對於處理器的速度太慢(一個用戶程序要使用I/O設備,CPU必須等待),處理器經常是空閑的。
    • 分時

      多道批處理系統已經極大地提高了計算機系統的效率,但是用戶交互性並不好。所以出現了分時技術(Time-Sharing),多個用戶可以同時分享處理器時間,以達到減少用戶響應時間的目的。

  • PCB和執行上下文(execution context)or 進程狀態(process state)的關系

    上下文屬於PCB的一部分。PCB是進程映像的一部分。

  • 一個進程的執行上下文(execution context)是如何被OS使用的

  • 系統調用(system call)的目的是什么?系統調用是如何與OS,以及雙執行模式(dual-mode:kernel-mode & user-mode)相聯系的?

    • 為了管理硬件資源和為應用程序開發人員提供良好的環境來使應用程序具有更好的兼容性,為了達到這個目的,內核提供一系列具備預定功能的多內核函數,通過一組稱為系統調用(system call)的接口呈現給用戶。系統調用把應用程序的請求傳給內核,調用相應的的內核函數完成所需的處理,將處理結果返回給應用程序。
    • 具有多任務處理的功能,通常靠進程來實現。
    • 為了安全問題,一些I/O操作的指令都被限制在只有內核模式可以執行,因此操作系統有必要提供接口來為應用程序提供諸如讀取磁盤某位置的數據的接口,這些接口就被稱為系統調用。
    • 當操作系統接收到系統調用請求后,會讓處理器進入內核模式,從而執行諸如I/O操作,修改基址寄存器內容等指令,而當處理完系統調用內容后,操作系統會讓處理器返回用戶模式,來執行用戶代碼。

key terms

操作系統(Operating System):是控制應用程序執行的程序,它充當用戶和計算機之間的接口,並對計算機資源進行管理。

內核(kernel):OS常駐內存的部分,包含了操作系統中最常用的功能。

多道(multiprogramming):當一個程序(作業)被中斷需要等待某些事件發生時,CPU可以切換到另一個可以立即運行的程序(作業),這種處理稱為多道multiprogramming

分時系統(time-sharing system)分時系統允許多個用戶通過終端同時訪問系統,共享CPU時間,操作系統以時間片為單位,輪流為每個終端用戶服務,提供了較好的交互性。

批處理系統(Batch Processing System)批處理是指計算機操作員將作業組織成批,提交給操作系統,由操作系統控制它們自動運行。這種采用批處理技術的操作系統稱為批處理操作系統。批處理操作系統分為單道批處理系統和多道批處理系統。批處理操作系統不具有交互性,它是為了提高CPU的利用率而提出的一種操作系統。

chapter 03 進程描述和控制

  • 什么是進程?為什么要引入進程的概念?

    進程是計算機中的程序關於某數據集合上的一次運行活動,是系統進行資源分配和調度的基本單位,是操作系統結構的基礎。

    在操作系統中引入進程,是為了實現多個程序的並發執行。傳統的程序不能與其他程序並發執行,只有在為之創建進程后,才能與其他程序(進程)並發執行。

  • 有中斷為什么還需要引入進程?

    系統程序員在開發早期的多道程序和多用戶交互系統時使用的主要工具是中斷。

    為了能夠協調各種不同活動而進行的系統軟件設計是相當困難的。

    容易產生四類錯誤:

    • 不正確的同步(Improper synchronization)
    • 失敗的互斥(Failed mutual exclusion)
    • 不確定的程序操作(Nondeterminate program operation)
    • 死鎖(Deadlocks)
  • PCB的構成

    • 進程標識信息
    • 處理器狀態信息
      • 用戶可見寄存器
      • 控制和狀態寄存器
      • 棧指針
    • 進程控制信息
      • 。。。
  • process switching vs mode switching

    進程切換,是作用於進程之間的一種操作。OS將一個正在運行的進程中斷,指定另一個進程為運行態,並把控制權交給這個進程。當分派程序(dispatcher)回收當前進程的CPU並准備把它分派給某個就緒進程時,該操作將被引用。

    模式切換是進程內部所引用的一種操作。當進程映像所包含的程序引用系統調用時,該操作將被引用。

    進程切換一定引起模式切換(進程切換時會執行中斷例程,中斷例程要在系統模式下運行;調度程序也要在系統模式下運行),反之則不一定。

  • 進程切換發生的時機

    • 中斷(與當前運行的進程本身無關,與某種外部事件相關)
      • 時鍾中斷
      • I/O中斷
      • 內存失效
    • 陷阱(trap)(與當前運行的進程所產生的錯誤或異常條件相關)
    • 系統調用
  • 進程切換的流程

    1. 保存處理器上下文
    2. 更新當前處於運行態的進程的PCB
    3. 把進程的PCB移到相應的隊列(就緒、在事件i處阻塞、就緒/掛起)
    4. 選擇另一個進程執行
    5. 更新所選進程的PCB
    6. 更新內存管理的數據結構
    7. 恢復處理器在被選擇的進程最近一次切換出運行態時的上下文
  • 進程創建的流程

    1. 給新進程分配一個唯一的進程標識號
    2. 給進程分配空間
    3. 初始化PCB
    4. 設置正確的連接
    5. 創建或擴充其他數據結構
  • 為什么需要雙模式?(user-mode & kernel-mode)

    雙模式可以保護操作系統重要的操作系統數據表(如PCB)不受用戶進程的干涉。在內核模式下,軟件具有對及所有指令、寄存器和內存的控制能力,這一級的控制不是用戶程序所必需的,並且為了安全起見也不是用戶程序可訪問的。

  • 阻塞的原因

    • 請求系統服務
    • 啟動某種操作:如I/O
    • 需要的新數據尚未到達
    • 無新工作可做
  • 關於 五狀態圖 or 七狀態圖 中的退出態

    此狀態下,OS只釋放了進程的指令和數據,它的PCB仍留在內存中。

key terms

進程(process):一個正在執行中的程序。

進程控制塊(Process Control Block, PCB):OS用來 控制管理 進程所用的數據結構。

CPU的執行模式:用戶模式、系統模式(內核模式)。

進程的狀態:一個進程的生命周期可以划分為一組狀態,這些狀態刻畫了整個進程。

軌跡(trace):可以通過列出為某進程而執行的指令序列來描述單個進程的行為,這樣的序列被稱為進程的軌跡。可以通過給出各個進程的軌跡是如何交替的來描述處理器的行為。

分派器(dispatcher):

輪循(round-robin):依次給隊列中的每個進程一定的執行時間,然后進程返回隊列。阻塞情況除外。

交換(swap):將內存中暫時不能運行的進程(或暫時不用的數據和程序)轉移到外存,以騰出足夠的內存空間,把已具備運行條件的進程(或進程所需要的數據和程序)轉移到內存。

程序狀態字(PSW):

處理器狀態寄存器(processor status register, psr):

chapter 04 線程、對稱多處理和微內核

  • 傳統進程的概念中包含兩個特點:

    • 資源所有權(Resource ownership)
    • 調度/執行(Scheduling/execution)
    • These two characteristics are treated independently(獨立的) by the operating system
  • 進程和線程

    • 擁有資源所有權(resource ownership)的單位通常稱為進程(process)任務(task)
    • 分派的單位通常稱為線程(thread)或輕量級進程(LightWeight Process,LWP)
  • 單線程方法(single-threaded approach):每個進程中只有一個線程在執行的傳統方法(還沒有明確線程的概念)。

    • 多線程(Multithreading):指操作系統支持在一個進程中執行多個線程的能力。
  • 為什么要引入線程?(引入的原因)

    有了線程以后,凡是程序涉及到多線任務時,都使用多線程來實現,使用多線程來實現時,線程間的切換和數據通信的開銷非常低,正因為開銷非常低,因此線程還有另一個名稱,叫“輕量級的進程”。

  • 從性能上看,線程的重要優點有:

    • 創建一個新線程比創建一個新進程用時更少
    • 終止一個線程比終止一個進程用時更少
    • 同一進程內線程間切換進程切換用時更少
    • 線程之間無需調用內核就可以互相通信
  • 進程的部分活動會影響該進程中的所有線程

    • Suspending a process involves suspending all threads of the process since all threads share the same address space
    • Termination of a process, terminates all threads within the process
  • 線程的實現方法(?

    用戶級線程(ULT)、內核級線程(KLT)。

    KLT又稱為輕量級進程。

  • 用戶級線程(ULT)與內核級線程(KLT)的優缺點

    image-20210409193711813

    image-20210409193722595

    image-20210409193735417

    image-20210409193745734

  • 並行處理器(parallel processor)體系結構圖

    圖片1

  • 為什么線程間的模式切換比進程間的模式切換開銷少?

    線程包含的狀態信息比進程少。

  • 為什么一個用戶級線程(ULT)進行系統調用被阻塞時,進程中所有線程都會被阻塞?

    因為對用戶級線程來說,有關線程管理的工作都由應用程序完成,線程對操作系統是不可見的,此時操作系統的調度是以進程為單位的。所以當一個線程被阻塞,這個進程內的所有線程都會被阻塞。

  • 微內核的優點

    • 為進程請求提供一致接口(進程無須區分是內核級服務還是用戶級服務)
    • 可擴展性
    • 靈活性
    • 可移植性
    • 增強了系統的可靠性(小的內核可以被嚴格地測試)
    • 有助於對分布式系統的支持
    • 適用於面向對象操作系統

key terms

進程(process):一個正在運行的程序。

線程(thread):是操作系統進行調度的最小單位。它包含在進程之中,是進程中的實際運作單位。

輕量級進程(lightweight process)

內核級線程(kernel-level thread, KLT)

用戶級線程(user-level thread, ULT)

多線程(multithreading)

任務(task)

對稱多處理(Symmetric MultiProcessing,SMP):是指在一個計算機上匯集了多個CPU,各CPU之間共享存儲器以及總線結構。它是相對非對稱多處理技術而言的、應用十分廣泛的並行技術。

微內核(microkernel)僅提供一些操作系統最基本的功能,大部分的服務由用戶空間的程序提供。通常包括:內存管理、進程間通信、I/O和中斷管理。

宏內核(monolithic kernel):在一個操作系統程序中提供了所有必須的功能,即所有操作系統功能都運行在內核空間內。

chapter 05 並發性:互斥和同步

  • 並發帶來的問題:

    • 全局資源的共享存在風險
    • OS難以對資源分配進行最優化的管理
    • 難以定位程序設計的錯誤
  • 並發(concurrency)需要解決的四個問題

    • 進程間通信
    • 資源共享與競爭
    • 多個進程活動的同步
    • 分配給進程的CPU時間
  • 信號量的類型

    • 計數信號量(一般信號量)

    • 二元信號量(互斥量):值只能為0或1

    • 強信號量

    • 弱信號量

    ​ 不論是二元信號量還是一般信號量,都需要一個隊列來保存當前正在等待的進程,那么就產生一個問題:進程按照什么順序從隊列中移除?
    ​ 最公平的策略是先進先出:被阻塞時間最久的先從隊列中移除。采用這一種策略的稱為強信號量,而沒有規定進程從隊列中移除順序的信號量稱為弱信號量。強信號量保證不會飢餓,而弱信號量則無法保證。

  • 實現互斥的三類方法

    • 軟件方法
    • 硬件方法
      • 中斷禁用
      • 專用機器指令
    • 在操作系統或程序設計語言中提供某種級別的支持
      • 信號量(semaphore)
      • 管程(monitor)
      • 消息傳遞(message passing)
  • 硬件實現互斥的方法描述

    • 中斷禁用
    • 專用機器指令

key terms

並行(parallel):在同一時刻,有多條指令在多個處理器上同時執行。所以無論從微觀還是從宏觀來看,二者都是一起執行的。

並發(concurrency):在同一時刻只能有一條指令執行,但多個進程指令被快速的輪換執行,使得在宏觀上具有多個進程同時執行的效果,但在微觀上並不是同時執行的,只是把時間分成若干段,使多個進程快速交替的執行。

交替(interleave):

覆蓋技術/重疊(overlap):

互斥(mutual exclusion):當一個進程在臨界區訪問臨界資源時,其他進程不能進入臨界區。

同步(synchronize):它主要源於進程合作,是進程間共同完成一項任務時直接發生相互作用的關系。為進程之間的直接制約關系。在多道環境下,這種進程間在執行次序上的協調是必不可少的。

臨界區(critical section):是一段代碼,在這段代碼中,進程將訪問臨界資源。

臨界資源:一次僅允許一個進程使用的資源。

競爭條件(race condition):指多個線程或進程在讀寫一個共享數據時,結果依賴於它們的執行順序的情形。

原子操作(atomic operation):原子操作是指不會被中斷的操作;這種操作一旦開始,就一直運行到結束。

信號量(semaphore):是在多線程環境下使用的一種數據結構,是可以用來保證兩個或多個關鍵代碼段不被並發調用。

多道程序設計技術(multiprogramming):管理單處理器(uniprocessor)系統的多個進程。

多處理技術(multiprocessing):管理多處理器系統中的多個進程。

分布式處理技術(distributed processing):管理多台分布式計算機系統中多個進程的執行。

chapter 06 並發性:死鎖和飢餓

  • 死鎖的必要條件

    • 互斥
    • 占有並等待
    • 非搶占
  • 死鎖的充分條件

    • 互斥
    • 占有並等待
    • 非搶占
    • 循環等待
  • 死鎖:一組競爭系統資源或相互通信的進程間相互的永久阻塞。

  • 死鎖預防

    • 間接:防止三個必要條件其中一個的發生
      • 互斥:不可能禁止
      • 占有且等待:可以要求進程一次性地請求所有需要的資源
      • 非搶占:可以設置優先級
    • 直接:防止循環等待的發生
      • 可以通過定義資源類型的線性訪問順序來預防
  • 死鎖避免(包括 進程啟動拒絕資源分配拒絕

    • 允許三個必要條件的發生,但通過明智地選擇,確保永遠不會到達死鎖點。

    • 優點:不需要死鎖預防中的搶占和重新運行進程,並且比死鎖預防的限制少。

    • 缺點:必須事先聲明每個進程請求的最大資源;

      ​ 進程之間必須無同步要求;

      ​ 分配的資源數目必須是固定的;

      ​ 占有資源時,進程不能退出。

  • 死鎖檢測和死鎖恢復

    死鎖檢測:

    死鎖恢復:

    1. 退出所有的死鎖進程;

    2. 把每個死鎖進程回滾到某個檢查點,再重啟所有進程(原來的死鎖可能再次發生);

    3. 連續退出死鎖進程直到不再存在死鎖;

    4. 連續搶占資源直到不再存在死鎖。

    對於(3)和(4),選擇進程的原則可采用下面的一種:

    Least amount of processor time consumed so far (耗費處理器時間最少)

    Least number of lines of output produced so far (輸出的行數最少)

    Most estimated time remaining (預計剩下時間最長)

    Least total resources allocated so far (分配的資源最少)

    Lowest priority (最低優先級)

image-20210503195928349

key terms

死鎖(deadlock):兩個或兩個以上的進程,因每個進程都在等待其他進程做完某些事情而不能繼續執行的情形。

活鎖(livelock):兩個或兩個以上的進程,為響應其他進程中的變化而繼續改變自己的狀態,但不做有用的工作的情形。

飢餓(Starvation):一個可運行的進程盡管能繼續執行,但被調度器無期限地忽視,而不被調度執行的情況。

chapter 07 內存管理

  • 內存管理需要滿足的需求:

    • 重定位(relocation)
    • 保護(protection)
    • 共享(sharing)
    • 邏輯組織(logical organization)
    • 物理組織(physical organization)
  • 分頁與固定分區的區別

    • 塊的大小更小
    • 進程可以加載到不連續的塊中
  • 分段與動態分區的區別

    動態分區是進程間的分配,分段內存管理是進程內的分配,兩者的分配方式十分相似。

    動態分區是進程間的,一個進程的所有代碼作為一塊存儲;分段式內存管理將一個進程的代碼按邏輯分為多個段,多個段被在內存中不同的位置。

  • 內存管理技術

    image-20210522134151459

key terms

重定位(relocation):將邏輯地址轉換為物理地址的過程。

  • 靜態重定位:在程序執行前就完成了邏輯地址到物理地址的變換
  • 動態重定位:程序執行時才進行地址轉換

地址類型

  • 邏輯地址:與當前數據在內存中的實際地址無關的訪問地址
  • 相對地址:相對於某些已知點的存儲單元
  • 物理地址:數據在內存中的實際位置

覆蓋(overlaying):不同的模塊被指派到內存的同一塊區域,主程序負責在需要時換入換出模塊。

  • 覆蓋的一個實例:

    圖片1

內部碎片(internal fragmentation):由於被裝入的數據塊小於分頁大小,從而導致頁內部有空間浪費的現象。

外部碎片(external fragmentation):指內存中還沒有分配出去,但是由於大小太小而無法分配給申請空間的新進程的空閑塊。

伙伴系統(buddy system):固定分區和動態分區的一種折中方案。

壓縮(compaction):操作系統不時地移動進程,使得進程占用的空間連續,所有的空閑空間連成一片。

chapter 08 虛擬內存

  • 簡單分頁和虛存分頁的區別

    image-20210522125923336

  • 什么是系統抖動(thrashing)

    從內存中剛剛換出(Swap Out)某一塊后,又因請求馬上又換入(Swap In)該塊,這種反復換出換入的現象。(馬上需要的進程塊被換出)

    系統抖動導致CPU大部分時間用於交換塊,而不是執行指令,大大降低系統效率。

  • 典型的內存管理結構

    • 頁表結構:

      image-20210522131131548

    • 段表結構:

      image-20210522131250093

    • 段頁式:

      image-20210522131308662

  • 虛擬內存的支持(Support needed for virtual memory)

    • 必須有對所采用的分頁或分段方案的硬件支持
    • 操作系統必須有管理頁或段在主存和輔存之間移動的軟件
  • 用於虛擬內存的操作系統策略(Operating System Policies for Virtual Memory)

    image-20210522132238502

    替換策略★★★
  • 采用分級頁表的優缺點

    • 優點:減少了頁表對內存空間的占用
    • 缺點:進行地址轉換時訪問內存的次數增加了
  • 純粹的分段系統越來越少,OS面臨的大多數內存管理問題都是關於分頁方面的。

  • 駐留集 (resident set) 管理

    • 固定分配 or 可變分配
    • 局部替換 or 全局替換

key terms

常駐集(resident set):進程執行中的任何時候都在主存中的部分。

系統抖動(thrashing):從內存中剛剛換出(Swap Out)某一塊后(換出到Disk),根據請求馬上又換入(Swap In)該塊,這種反復換出換入的現象。

頁表項(page table entry, PTE):頁表中的行

頁錯誤(page fault):當CPU執行進程的某個頁面時,發現這個虛擬空間中的頁沒有映射到內存中,而導致的中斷(頁錯誤)。

注意:簡單分頁並不會發生 page fault,因為簡單分頁會將進程所有頁都載入內存中。

Translation Lookaside Buffer, TLB

反向頁表( inverted page table):虛擬地址的頁號通過一個哈希函數映射到表項中。反向頁表的大小只與實際內存大小相關。

頁緩沖(page buffering):為提高性能,被替換出的頁不是被丟棄,而是分配到空閑頁表或修改頁表。(被替換出的頁仍留在主存中)

讀取策略(fetch policy):確定一頁何時取入。

放置策略(placement policy):確定一個進程塊駐留在內存的什么地方

替換策略(replacement policy):

  • OPT
  • LRU
  • FIFO
  • Clock

清除策略(cleaning policy):用於確定在何時將一個被修改過的頁寫回輔存。

裝入控制(load control):確定駐留在主存中的進程數目。

進程的地址空間(系統空間和用戶空間):

chapter 09 單處理器調度

  • 處理器調度的目標

  • 調度與進程狀態轉換

    圖片1

  • 調度的層次

    圖片2

  • 在一個進程狀態轉換的過程中涉及的隊列(假設一個新進程直接到達就緒態,上兩圖中給出了就緒態就緒/掛起態兩種選擇)

    圖片3

  • 短程調度什么時候進行?

    當可能導致當前進程阻塞,或可能搶占剝奪當前正在運行的進程的事件發生時,調用短程調度器(也稱為分派器)。這類事件包括:

    • 時鍾中斷
    • I/O中斷
    • 操作系統調用
    • 信號(如信號量)
  • 短程調度准則(Short-Term Scheduling Criteria)

    • 面向用戶,面向系統
    • 與性能相關(定量的),與性能無關(定性的)

    image-20210528220121397

  • 進程調度策略

    • 先來先服務(First-Come-First-Served,FCFS)

    • 輪轉(Round-Robin)、虛擬輪轉法(VRR,對I/O密集型進程友好)

    • 最短進程優先(Shortest Process Next,SPN)

    • 最短剩余時間(Shortest Remaining Time,SRT)

    • 最高響應比優先(Highest Response Ratio Next,HRRN)

      image-20210529151144489

    • 反饋(Feedback)

      • 懲罰運行時間較長的作業
      • 無須知道進程剩余時間

key terms

長程調度(long-term scheduling):決定進程是否加入待執行的進程池中。

中程調度(medium-term scheduling):交換(swap)功能的一部分,決定是否將進程換入/換出內存。

短程調度(short-term scheduling):決定處理器下一次執行哪個就緒進程。

搶占(preemptive):當前運行的進程可能被操作系統中斷,並轉移到就緒態。

chapter 11 I/O管理和磁盤調度

  • 執行I/O的三種技術

    • 程序控制I/O(programmed I/O):CPU代表一個進程給I/O模塊發送I/O命令,此后定期檢查I/O模塊的狀態,I/O模塊准備就緒后進程才能繼續執行。
    • 中斷驅動I/O(interrupt-driven I/O):CPU給I/O模塊發送I/O命令,然后繼續做一些其他的工作,當I/O模塊准備好與CPU交換數據時,它將打斷CPU的執行並請求服務。
    • 直接內存訪問(DMA):DMA模塊控制內存和I/O模塊之間的數據交換。為傳送一塊數據,處理器給DMA模塊發送請求,等到整個數據塊傳送結束后,DMA模塊才發送中斷信號給CPU。
  • 操作系統設計I/O機制時的目標

    • 效率
      • 多道程序設計
      • 交換技術
    • 通用性:人們希望用一種統一的方式處理所有的I/O設備。
  • 磁盤讀寫時有哪些因素影響延遲

    尋道時間(seek time)、旋轉延遲(rotational delay)、存取時間(access time)、傳輸時間(transfer time)

    image-20210603190657469

  • 引入I/O Buffer的原因

    • 進行I/O時,程序被掛起,等待相對較慢的I/O完成
    • 普通I/O的方法干擾的操作系統的交換決策
  • I/O Buffer的實現方式

    • 單緩沖
    • 雙緩沖
    • 循環緩沖
  • 磁盤調度策略

    • 隨機調度(random scheduling):性能最差,用於評估其他調度策略。
    • 先進先出(FIFO)
    • 優先級(Priority,PRI)
    • 后進先出(LIFO)
    • 最短服務時間優先(Shortest-Service-Time-First,SSTF)
    • SCAN(又稱電梯算法)
    • C-SCAN(circular SCAN, 循環SCAN)
    • N-step-SCAN
    • FSCAN
      • 使用兩個子隊列
      • 新請求進入空隊列

key terms

面向塊的設備(block-oriented device):信息保存在塊中,一次傳送一塊。

面向流的設備(stream-oriented device):以字節流的方式輸入/輸出數據

獨立磁盤冗余陣列(RAID)

尋道時間(seek time)

旋轉延遲(rotational delay)

存取時間(access time):尋道時間 + 旋轉延遲

傳輸時間(transfer time):向/從磁盤傳送數據所需的時間。

chapter 12 文件管理

key terms

文件(File):是一組相似記錄的集合,可通過名字訪問。

文件系統(File System / File Management System):操作系統的重要組成部分,提供存儲數據(組織為文件)的手段,並提供一系列對文件進行操作的功能接口。

文件分配表(File Allocation Table,FAT):用來記錄文件所在位置的一種數據結構。

磁盤分配表(Disk Allocation Table,DAT):記錄磁盤中已用和空閑塊的數據結構。

相對路徑(Relative Path):指由這個文件所在的路徑引起的跟其它文件(或文件夾)的路徑關系。

絕對路徑(GetFullPath):目錄下的絕對位置,直接到達目標位置,通常是從盤符開始的路徑。


免責聲明!

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



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