作業系統真象還原第十章

2021-10-11 13:22:49 字數 2020 閱讀 4584

執行緒排程工作的核心內容就是執行緒的上下文保護+上下文恢復。

公共資源:

臨界區:

互斥:競爭條件:

關中斷是實現互斥最簡單的方法。

同步一般是指合作單位之間為協作完成某項工作而共同遵守的工作步調。

訊號量是計數值,dijkstra 用 p、v 操作來表示訊號量的減、增。

p、v 的意義不明朗,本書用 down、up 來代替。

up 操作:

down 操作:

up 操作和 down 操作都是原子操作。

若訊號量的初值為 1,它的取值就只能為 0 和 1,稱為二元訊號量,可以利用二元訊號量來實現鎖。

終端也稱為控制台,是計算機歷史中遺留下來的概念。終端的構造原理是把使用者鍵入的命令傳送到主機,待主機運算完成後再將結果送回給使用者,終端不提供任何額外功能,僅是個顯示視窗。

為了讓更多的人同時使用計算機,必須在同乙個顯示器下實現多使用者,也就是為每個使用者虛擬出乙個「顯示器」,這就是虛擬終端的由來,因此每個控制台其實就是個虛擬終端,使用者看到的螢幕是由軟體模擬出來的。

虛擬終端就是我們熟知的 tty,我們登入系統後,就會在後台執行乙個 tty 程序。

雖然多個虛擬終端共用同乙個顯示器,也就是共享同一片視訊記憶體,但使用者之間能夠互不干擾,就是因為每個虛擬終端顯式的是視訊記憶體中的不同區域。

linux 啟動後一般會有 7 個介面可選,1 個是圖形介面,也稱為 xwindows;還有 6 個純文字的控制台介面。一般按下 alt+f1、alt+f2 等組合鍵會切換到不同的控制台,後台對應的操作就是變換資料在視訊記憶體中的起始位址。

通過 ssh 客戶端遠端連線到 linux 主機的終端稱為 pts。

鍵盤內部有個叫做鍵盤編碼器的晶元,通常是 intel 8048 或相容晶元,它的作用是:每當鍵盤上發生按鍵操作,它就向鍵盤控制器報告哪個鍵被按下,按鍵是否彈起。

鍵盤控制器在主機內部的主機板上,通常是 intel 8042 或相容晶元。它的作用是接收來自鍵盤編碼器的按鍵資訊,將其解碼後儲存,然後向中斷**發中斷,之後處理器執行相應的中斷處理程式讀入 8042 處理儲存過的按鍵資訊。

鍵盤掃瞄碼是一張」按鍵-數值「編碼對映表。

乙個鍵的狀態要麼是按下,要麼是彈起,因此乙個鍵有兩個編碼,按鍵被按下時的編碼叫通碼,按鍵被鬆開彈起時產生的編碼叫斷碼。

無論是按下鍵,或是鬆開鍵,當鍵的狀態改變後,鍵盤中的 8048 晶元把按鍵對應的掃瞄碼傳送到主機板上的 8042 晶元,由 8042 處理後儲存在自己的暫存器中。

鍵的掃瞄碼是由鍵盤中的鍵盤編碼器決定的,不同的編碼方案便是不同的鍵盤掃瞄碼。

鍵盤掃瞄碼有三套:

為了相容第一套鍵盤掃瞄碼對應的中斷處理程式,不管鍵盤用的是何種鍵盤掃瞄碼,當鍵盤將掃瞄碼傳送到 8042 後,都由 8042 轉換成第一套掃瞄碼。

大多數情況下第一套掃瞄碼中的通碼和斷碼都是 1 位元組大小。

在每一次擊鍵動作的」按下「,」按下保持「,」彈起「三個階段,8042 都會想中斷**發一次中斷。

將複雜的硬體控制指令封裝成乙個過程,每次只把對硬體的操作需求提交給此過程,由此過程實施底層的控制細節,然後返回給呼叫者乙個結果,這個直接同底層硬體打交道的過程便是驅動程式。

在 c 語言中有三種轉義字元:

shell 命令由多個字元組成,並且要以回車鍵結束,因此在鍵入命令的過程中,必須找個緩衝區把已鍵入的資訊存起來,當湊成完整的命令名時再一併由其它模組處理。

同步是指多個執行緒相互協作,共同完成乙個任務,屬於執行緒間工作步調的相互制約。互斥是指多個執行緒分時訪問共享資源。

生產者與消費者問題描述的是:對於有限大小的公共緩衝區,如何同步生產者與消費者的執行,以達到對共享緩衝區的互斥訪問,並且保證生產者不會過度生產,消費者不會過度消費,緩衝區不會被破壞。

第十章 函式

使用def關鍵字 定義個數可變的位置形參 定義個數可變的關鍵字形參 定義預設值引數 定義個數可變的位置形參 deffun1 args 結果為乙個元組 print args fun1 10,20,30 10,20,30 定義個數可變的關鍵字形參 deffun2 args 結果為乙個字典 print a...

第十章 屬性

z屬性 本章也比較簡單稍作介紹 無參屬性就是我們常見的屬性 可以封裝屬性 以執行緒安全方式訪問 有參屬性就是c 中的所引器 匿名型別 如圖遇到如下 具體點就是 上面的注釋也已經講清楚了,定義的型別之後,構造例項,然後初始化屬性。現在詳細說下 編譯器接收到 上圖 先用var 定義乙個型別,但是不具體指...

第十章 屬性

目錄 10.1 無參屬性 10.2 有參屬性 10.3 呼叫屬性訪問器方法時的效能 10.4 屬性訪問器的可訪問性 10.5 泛型屬性訪問器方法 物件導向設計和程式設計的重要原則之一就是資料封裝,意味著型別的字段不應該公開,否則很容易因為不恰單使用欄位而破壞物件的狀態。可將屬性想象成智慧型字段,即背...