文本文件:只由ASCII字符組成的文件
二進制文件:除文本文件外的所有文件
所有信息都是一串比特,區分比特當前含義的唯一方法就是上下文
GCC翻譯.c文件過程
1.預處理階段:處理#開頭的命令,導入命令內容修改.c爲.i
2.編譯階段:編譯器把.i翻譯成彙編語言程序
3.彙編階段:.s被彙編器翻譯成機器語言指令,並把指令打包爲可重定位目標程序,保存在二進制文件.o中
4.鏈接階段:將hello.c 中調用過的函數,如print函數 預先編譯好的print.o與hello鏈接,最後產生可執行文件
系統的硬件組成
1.總線:負責攜帶信息在各個部件間傳遞,4字節總線機器32位,8字節64位
2.I/O:每個設備通過控制器(與主板一體)或者適配器(插在主辦卡槽上)與IO總線連接
3.主存:由一組DRAM(動態隨機存取存儲器)組成,邏輯上來講是一個線性的字節數組
4.處理器:執行主存中指令的引擎,核心是寄存器(大小爲一個字。 字在不同機器上代表的字節數不同,16位機器上等於2字節,32位機器上的能夠與4字節),稱爲程序計數器(PC)。任何時刻PC都指向內存中的某條機器指令
高速緩存技術:SRAM技術實現
存儲器層級結構:
進程與線程
進程:進程是操作系統對正在運行的程序的一種抽象。併發運行,例如進程數小於核數時是真併發
兩個進程的切換
線程:運行在進程的上下文裏,享受同樣的代碼和數據
併發和並行:
1.線程級併發:超線程技術,使一個處理器能在單個週期決定執行哪個線程,更好的利用資源
2.指令級並行:同時執行多條指令,(超標量:處理器速度超過一週期一條指令)
3.單指令、多數據並行:即在最低層次上某些硬件允許一條指令產生多個可以並行執行的操作,即SIMD並行