1、程序和進程區別:
程序,編譯好的二進制文件,存儲在磁盤中,不佔用系統資源(cpu,內存。。。),如a.out
進程,活躍的程序,需要佔用系統資源,
a.out可以在多個終端中運行,即同一個程序可以加載爲不同的進程,不同的進程互不影響。又如Qt程序也可以同時打開多個,但二者的id是不同的,
如下圖windows進程圖所示,同一個程序被打開了多次,pid進程號是不同的,即屬於不同的進程,linux下也是如此。
2、併發:並行運行
單道程序設計模式:如DOS系統,一個程序A執行完,再執行下一個程序B;
執行效率低
多道程序設計模式:win7,程序看起來能夠同時運行;
實質:cpu劃分成多個時間輪片;每個進程會劃分成多個任務片段。
cpu將時間片1給進程A的1任務片段,時間片1用完,觸發時鐘中斷,
cpu將時間片2給進程B的1任務片段,時間片2用完,觸發時鐘中斷,
cpu將時間片3給進程A的2任務片段,依次。。。。。
因爲CPU的執行時納秒級的,人的反應是毫秒級的,所以用戶看起來是在同時執行多個進程,比如同時在聽歌,又在瀏覽網頁。