1. 程式人生 > >2018-11-13

2018-11-13

可用 指數 字節 異常 spool rem 記錄 method 語言

2018/11/13

減少訪問磁盤次數的措施

  • 既然要減少訪問,那最理想的情況就是不訪問唄,把所有的數據都丟進緩存中, 將緩存變得大速度變快
  • 避免隨意訪問磁盤,於是就 改良磁盤調度算法
  • 以上都是從調用情況的外部入手,指標也得治本,所以還要從自己的內部入手,將自己的目錄管理的整齊,盡量不給人家添麻煩

I/O設備

  • 獨享設備:在一個用戶作業未完成或退出之前,此設備不能分配給其他作業用。所有字符設備都是獨享設備。如輸入機、磁帶機、打印機等。——很明顯:需要裝驅動。
  • 共享設備:多個用戶作業或多個進程可以“同時”從這些設備上存取信息。軟硬盤、光盤等塊設備都是共享設備。——無需驅動。
  • 虛擬設備:通過軟件技術將獨享設備改造成共享設備。例如:通過SPOOLing技術將一臺打印機虛擬成多臺打印機。——實質還是獨享設備,需要驅動。

存根程序 驅動程序

  • 存根程序:用來代替被測試的模塊所調用的模塊,因此存根程序也稱為“虛擬子程序”,它利用被它代替的模塊的接口,只做盡可能少的數據操作。
  • 驅動程序:指的是設備驅動程序(Device Driver),是一種可以使計算機和設備通信的特殊程序。相當於硬件的接口,操作系統只有通過這個接口,才能控制硬件設備的工作
  • 底層模塊無需編寫存根軟件,頂層無需編寫驅動軟件

設備的分配算法

  • 先請求先服務
  • 優先級高者優先
  • 設備分配方式有靜態分配和動態分配兩種。

進程制約關系

  • 直接制約關系(即同步問題)
    • 是為完成某種任務而建立的兩個或多個線程,這個線程需要在某些位置上協調他們的工作次序而等待、傳遞信息所產生的制約關系。進程間的直接制約關系來源於他們之間的合作
  • 間接制約關系(即互斥問題)
    • 當一個進程進入臨界區使用臨界資源時,另一個進程必須等待。只有當使用臨界資源的進程退出臨界區後,這個進程才會解除阻塞狀態。

CPU現場信息

  • 指令計數器
  • 堆棧的棧頂指針
  • 段表控制寄存器
  • 不屬於的:進程的就緒、阻塞、執行等基本狀態進程信息保存在PCB中

JCL語言

  • JCL 又稱 作業控制語言,是用於描述MVS,OS/390和VSE操作系統上描述作業的語言

FAT表

  • 用來描述文件系統內存儲單元的分配狀態及文件內容的前後鏈接關系的表格

FCB

  • 文件控制塊:存儲文件在磁盤中的相關信息。 為了便於對文件進行控制和管理,在文件系統內部,給每個文件惟一地設置一個文件控制塊
  • 這種數據結構通常由下列信息項組成:
    • 文件名——符號文件名,如 files,mydata,ml.c等。
    • 文件類型——指明文件的屬性,是普通文件,還是目錄文件,特別文件,是系統文件還是用戶文件等。
    • 位置——指針,它指向存放該文件的設備和該文件在設備上的位置,如哪臺設備的哪些盤塊上。
    • 大小——當前文件的大小(以字節、字或塊為單位)和允許的最大值。
    • 保護信息——對文件讀、寫及執行等操作的控制權限標誌。
    • 使用計數——表示當前有多少個進程在使用(打開了)該文件。
    • 時間——日期和進程標誌,這個信息反映出文件有關創建、最後修改、最後使用等情況,可用於對文件實施保護和監控等。 核心利用這種結構對文件實施各種管理。例如,按名存取文件時,先要找到對應的控制塊,驗證權限。僅當存取合法時,才能取得存放文件信息的盤塊地址

在生產者-消費者問題中,緩沖區是臨界資源,在同一時間段只允許一個進程使用它,所以互斥信號量的初始值為1。

客戶端-服務器(Client-Server)模式的進程間通信

  • 遠程方法調用(Remote Method Invocation)
  • 遠程過程調用(Remote Procedure Calls)
  • 套接字編程(Sockets)
  • 消息傳遞是共享內存的,必須在一個主機。當然不能用於CS模型了

總線傳輸

  • 猝發(突發)傳輸:在一個總線周期中,可以傳輸多個存儲地址連續的數據,即一次傳輸一個地址和一批地址連續的數據
  • 並行傳輸是在傳輸中有多個數據位同時在設備之間進行的傳輸
  • 串行傳輸是指數據的二進制代碼在一條物理信道上以位為單位按時間順序逐位傳輸的方式
  • 同步傳輸是指傳輸過程由統一的時鐘控制

文件分配

  • 對應於文件的物理結構,是指如何為文件分配磁盤塊
  • 常用的磁盤空間分配方 法有三種:
    • 順序分配:順序分配方法要求每個文件在磁盤上占有一組連續的塊。
    • 隱式鏈接分配:每個文件對應一個磁盤塊的鏈表;磁盤塊分布在磁盤的任何地方,除最後一個盤塊外,每一個盤塊都有指向下一個盤塊的指針,這些指針對用戶是透明的。
    • 顯式鏈接分配:是指把用於鏈接文件各物理塊的指針,顯式地存放在內存的一張鏈接表中。該表在整個磁盤僅設置一張,每個表項中存放鏈接指針,即下一個盤塊號。 在該表中,凡是屬於某一文件的第一個盤塊號,或者說是每一條鏈的鏈首指針所對應的盤塊號,均作為文件地址被填入相應文件的FCB的“物理地址”字段中。由於查找記錄的過程是在內存中進行的,因而不僅顯著地提高了檢索速度,而且大大減少了訪問磁盤的次數。由於分配給文件的 所有盤塊號都放在該表中,故稱該表為文件分配表(File Allocation Table, FAT)。MS-DOS采用的就是這種方式。

線程執行方法

    • yield()暫時交出 cpu 控制權,從 running 狀態轉為 runnalbe 狀態,但是仍有可能被調度
    • sleep()線程指定休眠一段時間
    • wait()在其他線程調用此對象的 notify()或 notifyAll()方法時才能繼續執行
    • 線程中 sleep()方法和 yeild()方法的主要區別:
      • sleep()方法會給其他線程運行的機會,而不管其他線程的優先級,因此會給較低優先級的線程運行的機會
        yeild()方法只會給優先級相同的或者比自己高的線程運行的機會.
      • sleep()方法聲明拋出 InterruptionException 異常
        yeild()方法沒有聲明 拋出任何異常.
      • sleep()方法比 yeild()方法具有更高的可移植性.
      • sleep()方法使線程進入阻塞狀態
        yeild()方法使線程進入就緒狀態.
    • 當前運行的線程可以調用另一個線程的 join()方法,當前運行的線程將轉到阻塞狀態,直到另一個線程運行結束,它才會恢復運行.
      • join()有兩種形式:public void join()和 public void join(long timeout)可 以設置阻塞的時間

2018-11-13