作業系統 基本概念

2021-07-28 16:25:08 字數 1980 閱讀 4524

本文為自己學習《unix環境高階程式設計》而來的學習記錄;我的學習方**是將此書作為工具書來使用,當實際工作中遇到相關的問題針對性地學習知識圓點。

基礎概念

從嚴格意義上說,可講作業系統定義為一種軟體,它控制計算機硬體資源,提供程式執行環境。

系統呼叫

共用函式庫

shell

應用程式

unix系統登陸(about shell)

當使用者登陸時,某些系統啟動乙個視窗管理程式,但最終總會有乙個shell程式執行在乙個視窗中。

shell是乙個命令列直譯器,它讀取使用者輸入,然後執行命令。shell使用者輸入通常來自與終端(互動式shell),有時來自於檔案(稱為shell指令碼)。

檔案和目錄

unix檔案系統:目錄和檔案的一種層次結構,所有東西的起點是稱為根(root)的目錄,使用字元」/」標示;

檔名:目錄中的各個名字稱為檔名,斜線和空格字元不能出現在檔名中;

路徑名:由斜線分割的乙個或多個檔名組成的序列構成的路徑名,以斜線開頭的路徑名即為絕對路徑名,否則稱之為相對路徑名;

工作目錄:每個程序都有乙個工作目錄,所有的相對路徑名都從當前工作目錄開始解釋;

起始目錄:登陸時,工作目錄設定為起始目錄,該起始目錄從口令檔案中相應使用者的登陸項中取得。

輸入和輸出

檔案描述符

file descriptor通常是乙個小的非負整數,核心以標識乙個特定程序正在訪問的檔案。當核心開啟乙個現有檔案或建立乙個新檔案時,他都返回乙個檔案描述符。

標準輸入、標準輸出和標準錯誤

每當執行乙個新程式時,shell都會為其開啟3個檔案描述符,即標準輸入、標準輸出和標準錯誤。重定向

不帶緩衝的io

函式open、read、write、lseek以及close提供了不帶緩衝的io;

標準io

標準io函式都為那些不帶緩衝的io函式提供了 乙個帶緩衝的介面。

程式和程序

程式,是乙個儲存在磁碟上某個目錄中的可執行檔案。核心使用exec函式將程式讀入記憶體,並執行程式。

程序和程序id,unix系統確保每個程序都有乙個唯一的數字識別符號,稱為程序id。

程序控制,主要用於程序控制的主要函式fork、exec、waitpid。

執行緒和執行緒id,乙個程序內的所有執行緒共享資料時需要採取同步措施以避免不一致性。與程序相同,執行緒也用id標識,但是執行緒id只在它所屬的程序內起作用。乙個程序中的執行緒id在另乙個程序中沒有意義。

訊號

訊號用於通知程序發生了某種情況。程序處理訊號有三種方式:1、忽略訊號;2、按系統預設方式處理;3、提供乙個函式,系統發生時呼叫該函式,這被稱為捕捉該訊號。通過提供自編的函式,我們就能知道什麼時候產生了訊號,並按期望的方式處理它。

終端鍵盤上有兩種產生訊號的方法,分別稱為中斷鍵和退出鍵,它們被用於中斷當前執行的程序。

另一種產生訊號的方法是(程序的所有者或是超級使用者)呼叫kill函式,在乙個程序中呼叫此函式就可向另乙個程序傳送乙個訊號。

時間值

系統呼叫和庫函式

所有作業系統都提供多種服務的入口點,由此程式向核心請求服務。各位種版本的unix實現都提供良好定義、數量有限、直接進入核心的入口點,這些入口點被稱為系統呼叫。

使用者程序用標準c呼叫序列來呼叫這些函式,然後,函式又用系統要求的技術呼叫相應的核心服務。例如,函式可將乙個或多個c引數送入通用暫存器,然後執行某個產生軟中斷進入核心的機器指令。

我的理解為,庫函式就是使用者將系統呼叫封裝後的產物;系統呼叫和庫函式的關係還體現在,庫函式在使用者層次管理程序,系統函式則是在核心中實現呼叫。

應用程式既可以呼叫系統呼叫又可以呼叫庫函式。很多庫函式則會呼叫系統呼叫。系統呼叫通常會提供一種最小介面。

作業系統基本概念

一.程序的基本狀態 1.初始態 2.就緒態 3.執行態 4.等待態 5.終止 相互轉換關係如下 二.執行緒和程序區別 程序 是作業系統分配資源的最小單位 執行緒 是排程的基本單元,共享所在程序的檔案資料 有自己的棧和程式計數器 一般對於許多相同或相似的任務,傾向於將他們設計為多執行緒模型。因為程序占...

作業系統基本概念

1 桌面作業系統 macos linux 2 伺服器作業系統 windows server 3 嵌入式作業系統 linux 4 移動裝置作業系統 iosandroid 基於linux 1965 年之前的時候,電腦並不像現在一樣普遍,它可不是一般人能碰的起的,除非是軍事或者學院的研究機構,而且當時大型...

作業系統基本概念

五 使用者態 核心態及系統呼叫 六 微核心結構 七 程序 記憶體和檔案 八 系統呼叫 程式可以執行在機器語言或組合語言上編寫,用這種被稱為 低階 我更願意稱其為底層 的語言編寫出來的機器語言程式無需經過編譯器的翻譯就可以在計算機指令集上執行。如果是在組合語言上編寫的匯程式設計序,則只需要經過彙編器的...