回顧
解釋器模型 -- 怎么執(zhí)行
存儲器模型 -- 怎么存儲
通信鏈路模型 -- 怎么通信
解釋器模型
抽象對象
硬件設(shè)備橘蜜,比如處理器、磁盤控制器添瓷、顯示器等
軟件公般,比如瀏覽器、Java字節(jié)碼等
構(gòu)成
只有3部分組成择份,
指令引用:指向程序的下一條指令的地址扣孟;
指令庫:解釋器可以執(zhí)行的所有操作的集合;
環(huán)境引用:本質(zhì)是一種狀態(tài)荣赶,基于此狀態(tài)凤价,解釋器執(zhí)行當前的指令;
工作原理
正常執(zhí)行
當沒有中斷發(fā)生時拔创,解釋器是順序執(zhí)行程序的利诺。
步驟1,使用環(huán)境引用確定當前所處狀態(tài)剩燥;
步驟2慢逾,根據(jù)指令引用確定要執(zhí)行的指令;
步驟3灭红,執(zhí)行第二步中找到的指令對應(yīng)的操作侣滩;
步驟4,取下一個指令变擒,重復(fù)步驟1君珠、2、3娇斑;
步驟3中的執(zhí)行的操作:使用和修改當前環(huán)境的數(shù)據(jù)策添;更新指令引用等;
異常處理
當中斷事件發(fā)生時毫缆,由中斷事件提供下一條指令唯竹;
接下來,中斷處理程序接管控制器苦丁,開始處理中斷事件浸颓;
解釋器要修改環(huán)境引用為中斷處理程序的環(huán)境引用;
多個解釋器執(zhí)行是異步的
由于多個解釋器是異步的,表示這些解釋器運行在單獨的猾愿、沒有協(xié)調(diào)的時鐘上鹦聪,所以
這些解釋器以不同的速率執(zhí)行程序账阻。
在處理讀寫一致性和原子性問題時蒂秘,都會假設(shè)多個解釋器是異步執(zhí)行的。
實現(xiàn)示例:處理器
處理器的構(gòu)成
指令引用:程序計數(shù)器
程序計數(shù)器:記錄的是當前程序的下一個執(zhí)行的存儲位置的地址淘太;值存儲在寄存器中姻僧;環(huán)境引用:
內(nèi)置的多個寄存器;
如果處理器中存在指令或者引用直接引用存儲器地址的蒲牧,
那么存儲器也是處理器的環(huán)境引用的一部分撇贺;且這些地址必須是固定的,不能改變冰抢,否則程序執(zhí)行就會出問題松嘶;
如果處理器都是通過一個或者多個寄存器來間接引用存儲器的地址的,
則處理器執(zhí)行產(chǎn)生的地址就可以指向存儲器地址空間的不同位置挎扰;指令集
計算指令翠订,比如ADD/SUB/CMP/JMP等
移動數(shù)據(jù)指令,比如LOAD/STORE
處理器的用途
有了指令引用遵倦、指令集尽超、環(huán)境引用后,處理器可以實現(xiàn)哪些功能梧躺?
函數(shù)調(diào)用
中斷處理
處理器是如何實現(xiàn)函數(shù)調(diào)用的似谁?尤其是遞歸調(diào)用?
處理器是如何實現(xiàn)中斷的掠哥?