1. 程式人生 > >coding 菜鳥 記錄學習歷程

coding 菜鳥 記錄學習歷程

第一章:計算機系統漫遊

資訊=位+上下文。所有資訊都是由一串位表示的。區分的方法就是上下文,比如同一 位序列可以表示int、float、string、或是指令。

文字檔案:只由ASCII字元組成的檔案。(當然,由於各種語言的擴充套件,不一定只有ASCII了。個人理解)。不同於文字檔案的就是二進位制檔案了。

編譯系統:現在有一個a.c的原始檔,裡面就是簡單的helloworld的輸出。這個檔案經過 前處理器(cpp) 生成 格式為 .i 的檔案(被修改的文字,插入插入了#include的內容),再經過 編譯器(ccl)生成 .s 的彙編文字 再經過 彙編器(as) 生成  .o檔案(relocatable object program,可重定位目標程式,二進位制)在經過 連結器(ld)加入 printf.o 生成elf

系統硬體組成:匯流排,i/o,主存(DRAM),CPU

儲存器具有層次結構,快取記憶體(cache)至關重要,如L1、L2、L3(SRAM)

硬體由os管理:防止程式濫用硬體 ;向程式提供簡單的機制控制低階硬體裝置

抽象的概念在計算機系統中經常用到:I/O裝置(包括網路)被抽象成檔案。主存+I/O裝置被抽象成 虛擬儲存器,虛擬儲存器再加上CPU被抽象成程序,程序+os被抽象成虛擬機器。

程序:os提供假象,系統上只有這個程式在run,只有這個程式佔據所有的硬體資源。程序是os對正在執行的程式的抽象;

併發執行: 多個程序、指令交錯執行,靠的是CPU在程序間切換。交錯執行的機制是上下文切換,儲存當前程序上下文,恢復新程序的上下文,控制權給新程序。上下文指的是os跟蹤程序的狀態資訊,比如PC、暫存器、主存 內容

執行緒:每個執行緒執行在程序的上下文中,共享程式碼和全域性資料。虛擬儲存器:為程序提供假象:每個程序獨佔主存。

linux記憶體結構


併發:通用的概念,一個同時具有多個活動的系統;並行:用併發使系統執行更快。執行緒級併發,指令級並行、單指令多資料並行