iT邦幫忙

1

【文科生都能懂的小黑馬作業系統教室】(4) (Ch1)特權指令與系統保謢

我是心原一馬,繼續給大家普及作業系統的概念囉。
上一篇: 【文科生都能懂的小黑馬作業系統教室】(3) (Ch1)簡介作業系統演進; interrupt與TimeSharing系統

之前說過,作業系統是協助管理你電腦上執行的程式的特別程式
那麼這支程式應該有某種方法被保護起來,
避免一般使用者在玩電腦的時候,
誤觸了作業系統的程式,
導致了電腦系統的損壞。

在作業系統上,用了Dual mode來保護系統,
說是說「Dual mode」,可實際上「Dual mode」包括了兩種模式-
「kernal mode」及「user mode」,
對電腦系統會造成重大影響的指令我們則稱為「privileged instruction」,
中文翻作「特權指令」,
只能在「kernal mode」底下執行。

kernal mode/user mode- 比喻:你的私人房間和你家大廳

我們現在用個生活化的比喻來想:
假設你邀請你的朋友到你家玩,
但你的房間內是私人空間,
裡面可能有些不想隨意給人看到的東西,
但是你朋友可能會在你家隨意亂走,
那麼你如何保護你的房間呢?

直覺的方法就是把房間門上鎖就好了嘛。
只能你才有開門的鑰匙。

電腦系統也是類似的感覺,
kernal這個單字翻譯做「核心」,
既然是「核心」表示很重要的意思,
所以「kernal mode」猶如你的秘密房間,
「user mode」就猶如你家大廳,
開放給朋友隨意參觀也沒關係。

觀念: 特權指令

再來,我們還要再介紹一個詞: 「privileged instruction」,
中文翻作「特權指令」,
是作業系統把對於電腦系統影響重大的指令設為「特權指令」,
只能在「kernal mode」裡面執行,
這樣就可以確保你平時在玩電腦的時候不會去誤觸「特權指令」而把電腦玩壞了。

具體例子: 哪些指令是特權指令?

常見的特權指令例子有

  • I/O指令
  • 關掉interrupt
  • context switch

好的,這邊又出現了幾個專有名詞,
不過若是想了解作業系統這個科目也必然會接觸到一些專有名詞,
讀者加油哦。

雖說有些專有名詞嘛,
不過小馬自己看著這張圖倒是能夠記住不少:

https://ithelp.ithome.com.tw/upload/images/20191210/201171145gIusthKUW.png
(圖片來源: 動畫<暗殺教室>第一季第六集)

關於動畫中這位「章魚老師」是誰,
在上一篇【文科生都能懂的小黑馬作業系統教室】(3)已經簡介過了,
總之這張圖就是「章魚老師」可以用20倍音速移動,
快速來回穿梭於教室之間,
達到「同時」幫幾十個同學們輔導課業的效果。

「context switch」可以想成就是「章魚老師」快速來回穿梭於教室之間的動作。
(CPU快速交替執行不同的程式稱為context switch)

「interrupt」就猶如學生有重要的事情,主動打斷老師。
(程式有特別的需求所以去打斷CPU)

所以後兩個為什麼是「特權指令」也不是這麼難理解了,
因為「interrupt」猶如學生有重要的事情打斷老師,
可以隨意關掉interrupt當然會對電腦系統造成重大影響。

「context switch」用來管理電腦程式的,所以自然也是重要的指令。

回頭來講第一個,
什麼是「I/O指令」呢?
這個名詞可能有在打程式的同學比較熟悉,
I/O 就是 Input/Output的簡稱。
比如說你在打word報告,
你從鍵盤上「輸入」文字,稱為「Input」,
然後螢幕上會「輸出」顯示你的文字,稱為「Output」。

這邊稍稍不太好理解了,
你會覺得那I/O感覺是一件稀鬆平常的事啊,
怎麼會是「特權指令」呢?
原因是因為你並不是直接做I/O的,
而是你需要做I/O的時候,
電腦程式呼叫了「system call」,
請求作業系統可以使用I/O這個「特權指令」。

比喻: 你的秘密房間

回到這個生活化的例子幫助理解吧,
剛剛比喻說:

  • kernal mode: 你的私人房間,上了鎖,朋友不能隨意進去
  • user mode: 你家大廳,朋友可以隨意走動

現在多加幾個比喻,
你朋友想跟你玩「交換日記」,你朋友請求看你藏在秘密房間內的私人日記,則:

  • privileged instruction(特權指令): 看你的日記
    當然,你的朋友沒辦法直接做這個「特權指令」,
    於是他便發出「請求」,徵求你的同意。
  • system call(系統呼叫): 徵求你同意看你的日記

所以,system call這個專有名詞指的便是請求使用在kernal mode下的OS服務(也就是請求用特權指令)。
這邊觀念有個可能會令人誤解的地方是,
可能有人會認為說既然「特權指令」是被保護的指令,
那是不是使用者就不能做「特權指令」呢?
其實並非絕對不能做,
只是必須要在要監督的狀況下來做。
可以透過程式發出「system call」讓作業系統幫你做「特權指令」。

這概念有點像是說你的朋友要請求看你的日記(特權指令),
但你的房間上鎖,也只有你進的去,
所以你朋友對你(作業系統)發出請求(system call),
你同意之後進你的房間(kernal mode)拿出日記借你朋友看。

希望這樣生活化的說明有幫助到大家理解,
以下給大家自我檢測自己是不是懂了。

自我檢測題

嘗試回答下面作業系統的觀念題:

  • 選擇題: 用來執行電腦程式(process)的裝置稱為 (A)CPU (B)作業系統 (C) scheduler
  • 選擇題: I/O指令是什麼的縮寫? (A)In Order (B)Input/Output (C)India Ocean
  • 什麼是interrupt?
  • 什麼是context switch?
  • 作業系統如何用dual mode保護電腦系統?
  • 請比較Multiprogramming system 與Time sharing system的區別?

尚未有邦友留言

立即登入留言