深入理解計算機作業系統 總體認識2

2021-07-11 12:22:25 字數 1998 閱讀 8463

進入windows命令列管理視窗,輸入hello.exe程式將被系統載入和執行,直至程式執行結束。那麼在這一系列工作中計算機是如何運作的呢?

首先我們來看看下面這張圖吧:

這是乙個典型的計算機硬體組織,現在不要關心它很複雜,我們會一步一步了解其工作原理。

在這之前我們必須要明確幾個基本概念:

位(bit):在數位電路和電腦技術中採用的是二進位制的方法,它的編碼只有'0'和'1',如『1000011』就代表著7位。

位元組(byte):是計算機技術用於儲存容量的計量單位,1byte = 8bit

字(word):字是一串數碼,它們被作為乙個整體來進行處理和運算。在計算機的運算器和控制器中都是以字為單位來進行運算的。

字長:字長是指計算機的每個字所包含的位數。指cpu一次能並行處理的二進位制位數。

在了解了這幾個基本概念後我們繼續往下看。

貫穿整個系統的是一組電子管道,稱作匯流排(bus)。是計算機傳遞各個部件資訊的公共通訊幹線。通常匯流排會傳送定長的字(word)。

i/o裝置(輸入/輸出裝置)是系統與外界聯絡的通道。如上圖,我們使用的i/o裝置有:滑鼠、鍵盤、顯示器、用於長期儲存資料或軟體的磁碟。

每個i/o裝置是通過控制器或者介面卡與i/o匯流排連線起來的。如我們所說的網路介面卡(網絡卡),開啟了計算機與網路之間的連線通道。

控制器是指i/o裝置本身,或者是主機板上的晶元組。

介面卡是插在主機板插槽上的卡。

主存是乙個臨時儲存裝置。當程式在執行時,它被用來存放程式和程式執行時的資訊。

**處理單元(cpu)簡稱處理器。是執行儲存在主存中指令的引擎。從系統通電開始,直到系統斷電,處理器一直在不停的工作。

處理器的執行步驟大致如下:

由程式計數器(pc)指定儲存器的位置,並從儲存器中讀取指令。

對讀取的指令進行解碼。

執行解碼完成後的指令。

更新程式計數器,使其指向下一跳指令。

以後(第四章)會對處理器的運作原理進行更詳細的說明。

hello.exe是hello.c通過編譯後生成的檔案。

開啟控制台(cmd),來到hello.exe檔案目錄下,在控制台中輸入"hello.exe"字串。字元會被逐一讀取到cpu中的暫存器中,再把它放到主存中。此時我們未按下回車,我們輸入的資料通過鍵盤--處理器--然後被儲存到主存。

當我們按下回車時,系統已經知道命令已經結束。它把hello.exe檔案中的**和資料從磁碟拷貝到主存(通過dma技術,資料可以不通過處理器,直接從磁碟到達主存),從而載入了hello.exe檔案。

一旦hello.exe中的**和資料被載入到了暫存器,處理器就開始執行其中的指令。這些指令將"hello world\n"從主存拷貝到暫存器,再從暫存器拷貝到顯示裝置。

了解上述計算機執行過程後,你可能會發現乙個問題,我們花費了大量的時間把資訊從乙個地方挪到另乙個地方。

暫存器儲存的資訊通常只有幾百位元組,而主存存放的資訊多達幾百萬位元組。但處理器從暫存器讀取資訊的速度比處理器從主存中讀取的資料塊幾乎一百倍。為了針對暫存器和主存的差異,我們使用了快取記憶體技術(sram),它相對於主存來說更小但也更快。(但依然可以儲存數萬位元組)它被作為乙個暫時的集結區域,用來存放處理器不久將來可能會需要的資訊。

容量更大的快取記憶體l2是通過一跳特殊的匯流排與處理器相連的,它相對於l1速度較慢,但仍比主存的訪問速度快5--10倍。

深入理解計算機作業系統(2 2 4)

在c語言中,對於有符號數和無符號數之間的轉換是從位級的角度來考慮的而不是從數級的角度來考慮的。簡單說就是,對於有符號數和無符號數之間的轉換,我們希望的是在可以表示的範圍內,數值表示不變,但是c語言中,是二進位制位不變,改變解釋二進位制位的方式。舉例 乙個8位的無符號數128,二進位制位是100000...

深入理解計算機作業系統(三)

基本資料型別 大小端模式 整型數範圍與c標準 複合型型別轉換 從short到unsigned 讓我們複習一下c語言中基本資料型別的位元組數 名稱32位 64位char11 short int22 int4 4long int48 long long int88 char 48 float44 dou...

深入理解計算機作業系統(九)

本文將介紹儲存器層次結構以及區域性性對程式效能的影響。什麼是儲存器層次結構?區域性性 這個詞大家也許並不陌生,計算機中的儲存器從暫存器 快取到記憶體 硬碟,形成了乙個層次結構。為什麼不用單一的一種儲存裝置,比如只用硬碟呢?因為每一種儲存裝置都有它的優缺點,硬碟雖然儲存空間大,但傳輸速率太慢,完全跟不...