|
計(jì)算機(jī)最基本模型是圖靈模型(相關(guān)知識(shí)自行腦補(bǔ)),計(jì)算機(jī)將所有要處理的復(fù)雜任務(wù)分解到有限的基本的操作(指令),這個(gè)操作的集合就是指令集,指令集被設(shè)計(jì)固化到硬件(CPU或處理器)中。程序是為了解決特定問題而編制的一個(gè)指令序列,計(jì)算機(jī)的運(yùn)行就是一個(gè)在時(shí)間上串行的一個(gè)指令流。
如果有2個(gè)程序需要在一臺(tái)計(jì)算機(jī)上運(yùn)行,常見的場(chǎng)景是先運(yùn)行其中一個(gè)程序,運(yùn)行結(jié)束后,再運(yùn)行第二個(gè)程序。
第二部分: 單CPU計(jì)算機(jī)中多個(gè)程序并發(fā)執(zhí)行
多個(gè)程序并行的概念出現(xiàn)的很早,早期為了共享昂貴的計(jì)算機(jī)資源,人們?cè)噲D使一個(gè)計(jì)算機(jī)為多個(gè)用戶同時(shí)提供服務(wù)。多個(gè)程序并發(fā)執(zhí)行,采取分時(shí)的方法來實(shí)現(xiàn),稱分時(shí)系統(tǒng)。
分時(shí)即將時(shí)間視為資源進(jìn)行分配,將時(shí)間切分為人們感知上較小的一個(gè)單位,比如20毫秒(0.02秒),稱為一個(gè)時(shí)間片。若程序1和程序2都要被執(zhí)行,每個(gè)程序輪流被執(zhí)行一個(gè)時(shí)間片。從宏觀(感官)上來看,程序1和程序2是同時(shí)一起執(zhí)行的,就像兩臺(tái)計(jì)算機(jī)在同步工作一樣。
若程序1和程序2同步運(yùn)行,計(jì)算機(jī)是這樣進(jìn)行的:先運(yùn)行程序1,20毫秒后,切換到程序2,20毫秒后又切換到程序1,20毫秒后再次切換到程序2,如此反復(fù)… 一秒鐘切換了50次,程序1和程序2都在運(yùn)行、暫停、運(yùn)行、暫停這樣的狀態(tài)中進(jìn)行,由于切換時(shí)間夠快,人的感官認(rèn)為程序1和程序2是同步運(yùn)行的。
第三部分: 中斷和定時(shí)器的作用
要實(shí)現(xiàn)分時(shí)的機(jī)制,離不開定時(shí)器和中斷機(jī)制。定時(shí)器就是定時(shí)發(fā)出中斷信號(hào)讓計(jì)算機(jī)能夠進(jìn)入切換程序;中斷機(jī)制是指計(jì)算機(jī)的硬件要能夠支持在執(zhí)行過程中被中斷,跳轉(zhuǎn)到指定的中斷程序中去運(yùn)行,并在運(yùn)行結(jié)束后能夠返回到被中斷的點(diǎn)繼續(xù)運(yùn)行原來的程序。如果計(jì)算機(jī)硬件沒有中斷機(jī)制,則無法實(shí)現(xiàn)分時(shí)。
對(duì)于信號(hào)的輸入處理,程序總是以順序的方式進(jìn)行的。比如按下一個(gè)按鍵,程序并不是立即就知道有按鍵被按下,而是要等到程序指針運(yùn)行到按鍵處理程序時(shí)才會(huì)被發(fā)現(xiàn)。按鍵響應(yīng)的速度取決于程序指針本身的運(yùn)行速度和按鍵處理程序的長(zhǎng)短及間隔距離,前者依賴于硬件主頻,后者依賴于程序設(shè)計(jì)的水平。這種依賴程序主動(dòng)去發(fā)現(xiàn)的信號(hào)輸入方式一般稱查詢方式,與查詢方式相對(duì)應(yīng)的是中斷方式。
|
|