電腦系統學習筆記<一>
來源:互聯網
上載者:User
電腦是由硬體軟體組成的, 硬體相當於肉體而軟體相當於靈魂,兩者是相輔相成的。軟體分為系統軟體和應用軟體他們和硬體的關係是應用軟體位於最外層,中心是硬體,系統軟體位於兩者中間。
系統軟體有很多種但是最重要的兩個是作業系統和編譯器。
作業系統作用:1.處理基本輸入輸出操作 2.分配記憶體和外存 3.為多個應用程式提供共用資源 編譯系統是把進階語言(java ,c等)翻譯成硬體能識別的機器語言協助我們與電腦建立聯絡
硬體是由輸入,輸出(Io裝置 ), 儲存空間,運算器,控制器五大組件組成 其中運算器,控制器是在處理器裡面是電腦的核心,整個電腦執行的的指令都是由它進行控制
儲存空間儲存著要處理的資料和指令,輸入,輸出則是負責輸入資訊和輸出資訊的.串連五大組件的是匯流排,它將整個系統通過電子管道串連起來來傳送資料。
我們通過執行一個hello.c程式來瞭解電腦是怎樣運行一個程式的
首先hello.c的來源程式為:
#include<stdio.h>
int main() {
printf("hello ,world\n");
}
它是通過鍵盤這個IO裝置輸入這個程式並通過ASCII標準將字母變成單位元組整數表示的字元儲存在磁碟裡面.然後通過編譯器進行翻譯轉換成機器能識別的位元。先經過前置處理器根據#開頭命令
讀取系統標頭檔stdio.h把它插入文本中得到以i為檔案的副檔名的c程式
再經過編譯器將其翻譯成組合語言它是機器代碼的文本表示,通過組合語言人類可以近距離的觀察機器代碼,這時產生hello.i的來源程式 。
在經過彙編器翻譯成機器指令產生hello.o的來源程式
最後通過連結器調用printf函數,這是標準C庫中的一個函數,它已經先行編譯過所以直接將print.o合并到hello.o的程式裡最終產生目標程式hello它可被記憶體執行
hello這時還在磁碟裡面通過運行hello時會把檔案複製到主存中然後處理器就能調用它產生"hello,world \n”放在寄存器檔案。最後從寄存器 複製到並在螢幕上輸出 。
從執行過程看出系統花了大部分時間移動檔案,而在移動檔案過程中磁碟到主存兩邊讀取速度不相同主存讀取檔案速度是磁碟的100w倍,而寄存器是主存的100倍。而快的裝置不能耗著在漫長等待過程中所以有了
緩衝的概念快的裝置在慢的裝置傳送檔案時候可以不要理睬等緩衝一定量以後直接從緩衝中拿資料,在次期間它可以幹自己的事
好像hello檔案在啟動並執行時候電腦只為它一個程式服務一樣其實它在運行時有其他程式也在運行只不過電腦通過進程交叉運行,這樣每個CPU時間就只有一個進程在運行。切換至其他進程時系統會
跟蹤其上下文情狀態再切換回來就會保持這種上下文情況就能再次執行沒運行完的任務 (本人第一次寫,所以寫得不好)