現代作業系統都支援多工同時執行。在這裡,作業系統對我們使用者「營造了一種假象」,讓cpu看上去是用不完的,能夠不斷地新增新的程式使它們同時執行。
但每核cpu在某一時刻都只能執行乙個程序。使用作業系統的人是不會去關注cpu是單核還是多核的,每個人都希望作業系統能同時執行多個程式,比如可以同時看網頁、發郵件、聊qq、聽**等。
所以作業系統提供的多程式同時執行是「偽並行」。要想實現真正的並行執行多個程序,只能使用多核cpu來實現。
os營造這種假象的技術是「cpu時間共享(time sharing)」,也稱為「分時系統」,即cpu執行一會程序a,然後停下來去執行一會程序b,再停下來執行一會程序a。即,每個程序都只執行一會,然後cpu切換去執行其它程序,每一段執行和切換的時間很短(每秒能執行很多個程序),使得使用者以為程序根本未停過,從而形成了假象。
例如,下圖描述了分時系統的程序切換方式。程序a執行一會後切換到程序b,b執行一會後又切換到c,c執行一會後又切換到b,再切換回c、a、c、d。
這種不斷切換程序的機制,其關鍵技術是cpu從乙個程序切換到另乙個程序,這是通過「上下文切換(context switch)」實現的。上下文切換可以直接理解為程序的切換,之所以使用「上下文」這個術語,是因為cpu要從程序a切換到程序b時,必然要儲存程序a的執行環境,比如進入切換時程序a執行到了哪個地方,以便下次切換回程序a的時候能夠從這裡恢復繼續執行,此外,既然要切換到程序b,必然還要恢復之前已儲存好的程序b的執行環境,才能知道從**開始繼續執行程序b。而在計算機世界中,「環境」和「上下文」通常是可以互換的概念,所以cpu的上下文切換正是兩個前後程序執行環境的切換。
上面每個程序執行一會就會切換到另乙個程序,這個執行的時長稱為進間片。當乙個程序耗盡所有時間片後,將切換到其他程序,那麼時間片長好還短好?進間片分配過短,上下文切換就會越頻繁,而且上下文切換是有開銷的,時間片過長,則每個程序需要等待執行時間就越長,意味著互動性越差。乙個常見的時間片長度是100 ms,但是現在linux(從linux2.6.23開始)的時間片是動態計算的,並非完全固定的值。
cpu時間共享的好處是提公升了互動性,因為每個程序都可以盡快地執行起來,都能夠更快地被響應,使得每個程序都像是被公平對待,這是非常感人的。但是時間共享卻帶來了另外乙個問題,站在程序的角度上看,每個程序從啟動開始到執行完成,中間需要花費更長時間,而且很多時間處於等待狀態。
再考慮另外乙個問題,既然要不斷的切換程序,作業系統如何選擇下乙個要執行的程序?例如下圖中,當程序d開始程序切換時,下乙個要執行的是哪個程序呢?
選擇下乙個要執行的程序,是通過作業系統的程序排程程式(也稱為排程器或排程類)來決定的,排程器根據一些排程演算法策略決定哪個程序將幸運地被選中(即,被排程到)作為下乙個要執行的程序。
而程序排程演算法策略的兩個關鍵性指標正是響應時間和周轉時間。響應時間體現的是互動性和公平性,響應時間越短,表示互動時能更快得到響應,比如當敲下鍵盤時,使用者肯定不希望還要等一段時間才顯示字元。周轉時間體現的是何時完成任務的問題,周轉時間越短,表示從啟動開始到執行結束所花的時間更短,也就是更快完成任務。
另外,雖然在分時系統下,通過為每個程序分配固定的時間片能保證每個程序都有機會執行,但總會有一些程序是比較重要的,它們的優先順序比較高,它們可以從當前正在執行的程序處搶占cpu,這稱為「搶占式多工處理」。當然,這裡的搶占並不是真的無條件搶到cpu,cpu給誰是由作業系統的排程策略決定的,「搶占」只是表明某程序比較重要,應當優待,比如讓該程序盡快執行或讓它多執行一會。
什麼是分時系統?
分時系統 9706663?fr aladdin 分時系統 分時作業系統 time sharing system 分時 的含義 分時是指多個使用者分享使用同一臺計算機。多個程式分時共享硬體和軟體資源。分時作業系統是指在一台主機上連線多個帶有顯示器和鍵盤的終端,同時允許多個使用者通過主機的終端,以互動方...
實時系統與分時系統的區別
實時是指計算機對於外來資訊能夠以足夠快的速度進行處理,並在被控物件允許的時間範圍內做出快速響應。因此,實時作業系統與分時作業系統的 第一點區別是互動性強弱不同,分時系統互動型強,實時系統互動性弱但可靠性要求高 第二點區別是對響應時間的敏感牲強,對隨機發生的外部事件必須在被控制物件規定的時間做出及時響...
批處理系統和分時系統的區別
要弄清批處理系統和分時系統的區別,首先我們得了解何為批處理系統和分時系統?一 批處理系統 從字面上理解,就是一批一批的處理任務的一種系統,嚴格的定義,就是指使用者將一批作業提交給作業系統後就不再干預,由作業系統控制它們自動執行。這種採用批量處理作業技術的作業系統稱為批處理作業系統。簡單地理解就是我手...