iT邦幫忙

5

【小黑馬作業系統教室】(5) (Ch2)常見的OS結構

我是心原一馬,接下來整理第二章的內容,
來講講幾個常見的作業系統架構吧。
哦,對了,給對OS還不熟的同學,
OS(operating system)是作業系統的簡稱。

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

繼續整理作業系統的觀念,
自己也沒把握能寫到讓「文科生都能懂」,
並且假如是文科生想對作業系統有個大概的認識,
大概看我前四篇應該也夠了,
好像也不必深入到學那麼多的專有名詞,
決定再度把標題改回【小黑馬作業系統教室】。

在學習第二章的時候,
又會再學習到一些專有名詞,
讓小馬試著一一揭開這些名詞的涵義吧。

API(application program interface)介紹- 什麼是API?

Interface是「介面」,
大致上可以想成是函數的長相,
比如說

int power (int x, int y);

指的可能是一計算次方的函數,
參數x, y都是整數,函數返回x的y次方。

小馬理解的話,會覺得其實API就很像是函式庫的感覺。
比如說我想讓程式幫我計算「2的100次方」好了,
我可能就會去呼叫數學運算的API來幫我做這件事。

system call 與API的區別

在上次有提到「system call」是當你需要OS服務(比如說在螢幕上輸出文字)的時候你可以呼叫它,
所以system call也可以想成是函式庫,
那麼system call跟API區別在哪呢?

區別在API是使用者介面(也就是所謂的user mode)可以使用的函式庫,
而System call是OS介面(也就是所謂的kernal mode)的函式庫。

訊息傳送方式: message passing v.s. shared memory

在有OS的世界裡,可以允許同時有很多支程式(process)在執行,
程式之間也可能會需要互相傳遞訊息。
message passing 和 shared memory是最常見的兩種方式,
這邊附個上課精美投影片圖示說明:

https://ithelp.ithome.com.tw/upload/images/20191214/201171143tFTuZNXXn.png

  • message passing: 程式傳遞訊息要先傳送到kernal,再傳給另一支程式。
  • shared memory: 兩個程式之間共享一個記憶體,A要傳訊息給B,就把訊息寫在這個記憶體中,B就會看到了。

這邊以非常生活化的例子來比喻加深印象:
就直接以部落格來比喻吧。
假設本部落格的邦友們都是一支支的程式(process),
現在邦友們之間想要互傳訊息但沒有私訊功能可用

假設邦友A想傳訊息給邦友B,
那麼 message passing 就好比說邦友A先把訊息告訴小財神(iT邦幫忙的管理員),
再由小財神把訊息傳給邦友B。
可以看到這種傳訊息的方式非常麻煩,速度較慢。

shared memory就好比說邦友A,B共享一個iT邦的帳號,
A想要傳訊息給B,
可以直接寫在自己的文章裡,
由於A,B的帳號共享,
這樣B如果登錄帳號的話就可以直接看到訊息了。
雖說此種方式一定比剛剛比喻說透過小財神幫忙傳遞訊息更快,
但我們也可以發現這種方式相當不安全,
假設A,B同時登錄帳號修改文章,
那麼同時修改文章的話可能導致一些相傳遞的訊息被覆蓋掉。

常見OS架構

有了一些基礎概念後,
我們來介紹最常見的兩種OS架構吧。

Layerd OS Architecture

https://ithelp.ithome.com.tw/upload/images/20191214/201171141TeAX8go0P.png

Layered OS level分成一層一層的,
level N只能從levelN-1去呼叫函數,
較容易維護與除錯(debug),
但困難點是較難去定義layer。

Microkernal OS

https://ithelp.ithome.com.tw/upload/images/20191214/20117114yiIwEukv5m.png

Microkernal則是節省核心功能,
將一些非必要的OS部分移至user space,
以message passing 做為process間的溝通,
process間的溝通效率較差但kernal結構比較簡單。

先整理到這裡吧。


2 則留言

1
c123456789q
iT邦新手 5 級 ‧ 2019-12-15 08:13:58

系列文不錯,可以讓人簡單易懂,讚讚

哈哈,謝謝你的讚美哦~

1
valosb19608
iT邦新手 5 級 ‧ 2020-01-15 13:51:49

寫得很簡單易懂
非常感謝
前後查了幾篇文章
終於找到資管人也看得懂的作業系統了
/images/emoticon/emoticon02.gif

哈囉~ 非常感謝您的讚美,
很高興能對你有幫助,
希望寫得讓多數人能看懂是小馬的目標

我要留言

立即登入留言