iT邦幫忙

2

【文科生都能懂的小黑馬作業系統教室】(3) (Ch1)簡介作業系統演進; interrupt與TimeSharing系統

我是心原一馬,今天系列文標題正式更名為「文科生都能懂的小黑馬作業系統教室」了,
由於小馬想嘗試以生活化的語言來講這門專業知識,
喜歡看嚴謹教科書的同學可能就不適合囉,
正式進入「作業系統」的講課。

【小黑馬作業系統教室】(2) 大膽科學-如果電腦上沒有作業系統?中,我們用非常生活化的語言說明了:
作業系統是協助管理你電腦上執行的程式的特別程式
並且它可以讓你的電腦有多支程式「同時」執行。

接下來要開始記一些專有名詞哦,
執行你電腦程式的電腦裝置稱為CPU,
電腦程式則稱為process,
然而,英文裡「program」和「process」都可以翻譯做「程式」。
可能連本科系學生都不易區分吧,
這邊小馬給個自己喜歡的比喻來說明,

介紹幾個主要角色:

  • CPU- 電腦用來運作程式的地方,我們可以把它比喻為「老師」
  • program- 程式碼本身,我們可以把它比喻為「學生」
  • process- 電腦程式(如瀏覽器、LINE、word、powerpoint),我們可以把它比喻為「老師處理學生問題的過程」(比如說: 要老師批改學生的作業、有課業問題要問老師)

觀念一: 什麼是電腦「同時」執行程式?

在電腦中,「同時」這個概念與日常生活口語的「同時」不太一樣,

這邊引入一個小馬喜歡的動畫幫助講解:
(小馬覺得<暗殺教室>本身是一部喜劇,對於談教學理念也發人深省,很推!
對動畫有興趣的朋友值得一看)
https://ithelp.ithome.com.tw/upload/images/20191208/20117114nqXY5bxoxG.png
(圖片來源: 動畫<暗殺教室>第一季第一集)

圖片中的這位是「章魚老師」,
在原作動畫中的設定,
「章魚老師」擁有過人的速度,可以用20倍音速移動(這種速度正好比喻電腦程式的極快速度)
我們想像CPU就是這位「章魚老師」。
於是在期中考前,這位非常有熱忱的老師為了同時幫幾十個同學們「同時」輔導課業,
便有了底下一幕:
https://ithelp.ithome.com.tw/upload/images/20191208/20117114pgX4slMVuA.png
(圖片來源: 動畫<暗殺教室>第一季第六集)

明明就只有一位老師,要如何能夠幫幾十個同學們「同時」輔導課業呢?
圖示是「章魚老師」使用20倍音速移動,
快速來回穿梭於教室之間,
由於「章魚老師」移動的速度非常快,
對每個學生來說,幾乎是同時幫他們課業輔導。
與日常生活口語中「同時」的不同為,
口語的「同時」比較像是有幾十個老師,同時對每個學生進行一對一輔導。
而「章魚老師」是快速交替處理每個學生的問題,
使得學生們感覺被同時輔導了。

小馬覺得這蠻貼近電腦CPU同時執行程式的概念,
電腦上就只有一個CPU,
但要滿足你同時在電腦上一邊打word報告,一邊聽音樂的功能。
「word」和「音樂播放器」都是程式,
CPU快速交替執行你的程式,
快速交替的時間可以儘儘幾毫秒就輪流一次,
讓你感覺你電腦上的程式被「同時」執行了。

觀念二: 什麼是interrupt?

學到作業系統第一章,
一定會學到這個重要的名詞interrupt,
interrupt一詞直譯成中文是「打斷」,
意思是說可能程式會發出「interrupt」去打斷正在工作的CPU。

這個觀念一開始讓小馬都懵了,
很難理解說為什麼CPU在工作,
去打斷CPU工作的用意是什麼。

直到聽到了「老師、學生」的比喻之後,
小馬瞬間秒懂。

CPU好比是老師嘛,打斷源(程式)好比是學生,
打斷的事情好比說你想叫老師幫你批改一份作業。
你不會希望老師時時刻刻都在問你作業寫好了沒啊?
或者說老師時時刻刻都坐在你面前等你把作業寫好,
估計這樣你可能也很有壓力。
而應該是當你作業寫好的時候,主動告訴老師。

對程式來說,如果有什麼特殊需求,
也應該主動發送interrupt告訴CPU。

觀念三: 作業系統的演進

早期作業系統的演進分成三個階段:
Batch system-> Multiprogramming system-> Multi-tasking system (又稱為Time sharing system)

  • Batch system: CPU一次只能執行一個工作,使用者跟電腦沒有互動。
    (所謂跟電腦互動指的是比如你在玩遊戲,你操控鍵盤,螢幕上的角色便即時移動,這樣你彷彿透過鍵盤跟電腦有了互動)
  • 後兩個指的都是CPU可以「同時」執行多個程式。

啊…那「Multiprogramming system」跟「Time sharing system」差在哪裡?
事實上,連資工本系同學都不太容易區分這兩個差在哪裡,
如果作業系統考試考第一章的話,
大概考這兩個差在哪裡是熱門題了吧。
小馬接下來讓你秒懂:
這兩個的差別在於目的不同:

  • Multiprogramming system只是說希望CPU不要閒置,當有程式需要執行時不要發呆
  • Time sharing system是希望每支程式都要被公平的執行到

以老師和學生的比喻來說,

  • Multiprogramming system只是說「欸,現在有很多學生在排隊問問題,老師不要睡覺。」
    在這個系統中,老師可以同時幫多個學生解答問題,
    但可能會忽略有的學生想問問題等待很久都沒問到。
  • Time sharing system則是對於每個想問問題的學生,
    都要公平的輪流讓每個人發問,
    不能有一個人連續問了十個問題,
    有些學生排隊很久都問不到。

現代你電腦上的作業系統,應該多屬於Time sharing system哦
(因為要跟使用者有較好的互動)

觀念四: interrupt跟Time sharing system的關係?

剛剛說Time sharing system的目的是希望每支程式都要被公平的執行,
可是CPU怎麼知道時間到了,應該換程式執行了呢?
畢竟電腦CPU又不像「章魚老師」一樣有教學熱忱,
又會盡心照顧每個學生。

在電腦上,只能是由硬體告訴CPU時間到了,該換人了,
由硬體每隔一段固定的時間,發送一個interrupt,
再透過scheduler(作業系統內的排程器,用來安排什麼時間CPU執行哪支程式)告訴CPU該換程式執行了,
以達到每支程式都要被公平的執行的目的。

今天就講到這裡啦,
嘗試引入生活用語及動畫題材做教學,
若喜歡小馬這種風格教學的話歡迎留言告訴我,
給創作者一個鼓勵哦。


1 則留言

0
神Q超人
iT邦新手 1 級 ‧ 2019-12-09 08:25:53

英文裡「program」和「program」都可以翻譯做「程式」。

這句話是不是怪怪的 /images/emoticon/emoticon19.gif

感謝糾正,原本想寫的是
然而,英文裡「program」和「process」都可以翻譯做「程式」
,現在已更正。

我要留言

立即登入留言