作為一名開發者,編碼能力是最主要的這個毋庸置疑,但是有多少人仔細的研究過我們所寫的程式是怎麼執行起來的那?
這裡我拿我們最常用到的軟體"微信.exe"舉例,如果你說不常用微信,那麼我就用"QQ.exe"來給大家說明!
說白了,當我們用點選某一應用程式的時候,其實就是計算機磁碟攜帶著指令與資料到記憶體中並在其中開闢一塊空間,這也就是一個程序。
但是當該程序儲存到記憶體中是,多條指令也許並不在同一執行緒裡,這裡就會首先找到主執行緒(main執行緒)開始執行,其中也可能會有執行緒分叉或者同步等操作。
當這是我們有一條指令為"i = 1+1",這是cpu 就會通過 IO Bridge 將該執行緒讀取到暫存器中,這時我們的cpu的暫存器就會拉著ALU對改執行緒進行執行,並把執行的結果返回到記憶體中,同時CPU的PC元件(program counter)也就是程式計數器,會執行執行下一條指令;
暫存器(Data Register):其主要功能儲存指令地址,同時也作為CPU和主記憶體、外設之間資訊傳輸的中轉站,用以彌補CPU和主記憶體、外設之間操作速度上的差異。
ALU(Arithmetic/Logic Unit):數學邏輯單元,通常支援一些基本的算術和按位元邏輯函數。。
PC(program counter):程式計數器,主要是用於存放指令的地址。通常當程式執行時,PC的初值為程式第一條指令的地址,在順序執行程式時,控制器首先按程式計數器所指出的指令地址從記憶體中取出一條指令,然後分析和執行該指令,同時將PC的值加1指向下一條要執行的指令。
通過上文的描述,大家心裡也已經有了這個概念
程序:包含著資料和指令,我們可以理解為它是資源分配的基本單元
執行緒:程式是通過執行緒執行的,我們也可以理解為它是程式執行的基本單元
這是本人人生中第一篇貼文,以後我也會堅持的寫下去,以上觀點有什麼不對的地方方可批評,謝謝。關於圖我也會繼續強化爭取可以優美一些! 謝謝!
關於CPU的暫存器,ALU,PC並未做太多說明,如果感興趣下面附帶地址
CPU暫存器
ALU
PC