1 認識計算機系統

2021-08-21 18:12:00 字數 3660 閱讀 2975

目錄

計算機系統硬體組成 匯流排

i/o裝置 記憶體

處理器dma傳輸

作業系統

系統程式設計 vs. 應用程式設計

錯誤處理

貫穿整個系統的一組電子管道稱為匯流排, 分為:

片內匯流排:cpu內部

系統匯流排

外部匯流排 (cpu訪問磁碟,鍵盤)

i/o裝置是系統與外界聯絡的通道

鍵盤滑鼠是輸入裝置,顯式器是輸出裝置,磁碟既是輸入裝置也是輸出裝置,輸入輸出是相對於記憶體來說的。

記憶體是乙個重要的部件,它是與cpu進行溝通的橋梁。它用來存放程式以及程式要處理的資料,磁碟中的程式要載入到記憶體才能執行。

**處理器(cpu),簡稱處理器。

cpu主要有運算器、控制器、暫存器構成

解碼: 指令解碼器, risc, cisc

執行: alu

寫回: -> 記憶體

跳** jmp

系統結構圖

dma (直接訪問記憶體)傳輸將資料從乙個位址空間複製到另外乙個位址空間的一種技術。當 cpu 初始化這個傳輸動作時,傳輸動作本身是由 dma 控制器 來實行和完成, 而cpu可以繼續去完成其他的工作, cpu僅在傳輸動作的開始和結束的時候參與資料傳輸的控制。 典型的例子就是移動乙個外存的區塊到晶元內部的記憶體區。像是這樣的操作並沒有讓處理器工作拖延,反而可以使cpu重新去處理其他的工作。在實現dma傳輸時,是由dma控制器直接掌管匯流排。

什麼是作業系統

作業系統是」有效地管理計算機系統中的資源,合理地管理計算機系統的工作流程,方便使用者使用」的程式的集合。

作業系統三個基本抽象

作業系統擁有三個基本抽象概念: 程序、虛擬儲存器和檔案。

檔案是對i/o裝置的抽象表示,虛擬儲存器是對主存和磁碟i/o裝置的抽象表示,程序則是對處理器、主存和i/o裝置的抽象表示。

程序

程序是作業系統對正在執行的程式的一種抽象。乙個系統可以執行多個程序,而每個程序好像在獨佔使用硬體。

程序上下文切換

虛擬儲存器

虛擬儲存器為每個程序提供了乙個大的、一致的、私有的位址空間

它將記憶體看成是儲存在磁碟上的位址空間的快取記憶體,在主存中只儲存活動區域,並根據需要在主存與磁碟中來回交換資料。

為每個程序提供一致的位址空間,簡化了儲存管理,保護每個程序的位址空間不被其他程序破壞。

程序虛位址空間

檔案

檔案是一系列的位元組序列,它向應用程式提供了乙個統一的視角,來看待系統中各式各樣的i/o裝置。

虛擬檔案系統vfs

虛擬檔案系統是核心實現的一種架構,為使用者空間提供統一的檔案操作介面,即檔案系統呼叫。它在核心內部為不同的真實檔案系統提供一致的抽象介面。

使用者通過系統呼叫與核心中的虛擬檔案系統互動,進而操作實際的檔案系統和裝置。

系統程式設計

在作業系統之上利用系統呼叫、c庫進行對系統資源進行訪問。編寫如apache 、gcc、gdb 等的服務應用.

系統資源包括:處理器,輸入輸出,程序管理,記憶體,裝置,定時器,程序間通訊,網路

應用程式設計

在更高層次的程式設計介面或者庫之上構建應用程式。如android程式(android sdk)、iphone程式(iphone sdk)、qt程式設計(qt)、mfc程式設計(mfc)等。

系統呼叫在系統中所處的位置

所有作業系統都提供多種服務的入口點,由此程式向系統核請求服務。這些入口點被稱之為系統呼叫(system call),

c庫

這裡我們所說的c庫(libc),指的是標準c定義的c函式的集合。如標準輸入輸出函式、字串處理函式、動態儲存分配函式、日期時間函式、數學函式等。

gnu發布的libc稱為glibc.

系統呼叫與c庫關係

系統呼叫與c庫從形式上來看都c函式;

但c庫函式有些是呼叫系統呼叫來實現的,比如說malloc、free呼叫brk,printf呼叫write系統呼叫,而有些函式不需要任何系統呼叫,比如abs(fabs)、strcpy、atoi等,因為它並不是必需要使用核心服務;

因此系統呼叫通常提供的是最小介面,而c庫函式通常提供更複雜的功能。

核心如何處理系統呼叫

核心通過軟中斷的方式實現系統呼叫, 每個系統呼叫被賦予乙個系統呼叫號, 在i386平台上,執行乙個系統呼叫需要通過 int 0x80 指令來完成, 從使用者態切換到核心態.

暫存器eax存放系統呼叫號, 暫存器ebx、ecx、edx、esi、edi儲存系統呼叫引數,對於超過5個引數的系統呼叫,用乙個暫存器(如ebx)指向使用者空間的某個快取, 該快取儲存所有系統呼叫的引數(可以多於5個)。

在系統程式設計中通常通過函式返回值來表示錯誤(一般-1代表函式執行出錯),並通過特殊變數errno來描述。

errno這個全域性變數在 errno.h 標頭檔案中宣告如下:extern int errno;

錯誤處理函式:perror, strerror;

//示例

int main()

*/if (ret == -1)

return 0;

}

常見錯誤**

e2big

引數列表太長

eaccess

許可權不足

eagain

重試ebadf

錯誤的檔案描述符

ebusy

裝置或資源忙

echild

無子程序

edom

數學引數不在函式域內

eexist

檔案已存在

efault

位址錯誤

efbig

檔案太大

eintr

系統呼叫被中斷

//常見錯誤**列印程式

int main()

return 0;

}

計算機系統組成 計算機系統的組成硬體系統1

計算機的系統組成,由軟體系統和硬體系統組成。對於硬體我們一般印象中的電腦機箱結構是下面這個樣子的 那從理論上來講乙個完整的計算機系統是由什麼組成的呢?我們換個思路來看看下面計算機系統的結構圖 今天我們從硬體開始為大家介紹計算機系統的各個知識點,在計算機所有硬體中最核心的硬體我們稱為 處理器,也就是我...

計算機系統

一陰一陽之為道。早在幾千年我國古人就知道天地萬物皆由正反兩個東西組成的。自從人類進入電氣時代,隨著電子元件的快速發展,各種裝置隨之誕生了。一些元件 例如閘流體 可以根據電壓的高低變化自行導 通或者關斷。如果是高電壓導通,就規定是1 低電壓導通規定是0,那麼眾多的這些元件組成的乙個整體就可以0 和1來...

計算機系統

做加法時,主要判斷是否溢位 無符號加溢位條件 cf 1 帶符號加溢位條件 of 1 舉例 若n 8,計算107 46 107 0110 1011 46 0010 1110 01001 1001 溢位標誌of 1 零標誌zf 0 符號標誌sf 1 進製標誌cf 0 無符號 sum 153,因為cf 0...