iT邦幫忙

2

【小白馬的OS筆記】(5) 遇神人指導了,終於第一次知道作業系統存在的意義

小白馬打了作業系統筆記4篇後,
對作業系統的了解總是片片段段的,
所幸今日遇到實驗室學長貴人,
細心為我講解OS存在的意義,
小馬努力記錄一下…

作業系統幫助我們解決什麼問題?

好,首先回到寫程式的初衷-為什麼我們要寫程式?
寫程式不外乎就是要解決現實世界的問題,
比如說計算加、減、乘除之類的…
其實程式包括兩個部分-「instruction」和「data」,缺一不可。

instruction?data?

用大白話文來說好了,
比如說老師對學生下口令:「拿起板擦」、「拿起書本」。
「拿起」這個動作就像是「instruction」。
「板擦」、「書本」這些東西則像是「data」也就是被執行的對象。
一支程式不會沒有data,
否則你光是用「拿起」這個指令就只是個空泛的動作了,
因為不知道要「拿起」什麼東西。

對應到程式語言來說的話,
比如說我叫程式幫我算「85580 * 56093 =?」(數字隨便打的),
那麼「乘法」便是一個「instruction」,一個指令,
85580, 56093這些數字都是data了。

CPU- 工作的核心

電腦裡有個叫CPU的東西,
負責執行我們一道道下的程式指令,
然後剛剛說了,要執行程式,
一定有被執行的data,
那data要去哪裡拿呢?
我們有一個層層分級的結構:
(這邊引用上課投影片的講解圖)

https://ithelp.ithome.com.tw/upload/images/20191105/20117114ovQnD54c21.png

這個存放資料的結構統稱為「storage」
阿為什麼這麼多層勒?
因為我們在拿資料的時候注重「儲存空間」和「拿取速度」的問題,
當然,我們希望存資料的空間愈大愈好,同時又希望拿資料要拿的快,
因此分成四大結構:
register->cache(快取記憶體)->memory(記憶體)->disk(磁碟)
放在愈上層的容量愈小,但拿資料的速度愈快。
放在愈下層的容量愈大,但拿資料的速度愈慢。
身為人總不喜歡等待,我們總希望拿資料最好都從register, cache(快取記憶體)中去拿取,
速度最快,但缺點就是容量太小,我們需要的東西可能就不存在那邊,
總是需要到memory, disk那層去拿資料的。
因此,想要資料拿的又快又好,不同層級之間就需要有溝通橋粱。

Paging- 查找資料放在哪的機制

【小白馬的OS筆記】(3) logical/physical memory, 【小白馬的OS筆記】(4)TLB介紹中我們談到了paging的概念,
那為什麼需要paging呢?感覺答案好像也快呼之欲出了,
啊因為需要知道要用的資料放在哪裡啊。
然後單純page table查資料的速度太慢了,
就再用容量更小,查資料速度更快的TLB來查。

作業系統為何而生?

好了,講了這麼多,回到主旨,到底作業系統可以幹麻?
你可能想說,阿我又不寫程式,作業系統應該跟我沒關係吧?
其實,只要你打開電腦,就一定有程式在執行,即便你只用電腦玩遊戲。

假如你有寫程式的話…
對使用者寫的程式來說,就猶如老師對學生下指令,如「拿起板擦」、「拿起書本」,
不過你下指令的對象是電腦。
這些下指令的程式是「軟體程式」,
然後我們將程式給CPU執行,
CPU接受到命令,比如「拿起板擦」,阿那個「板擦」(data)放在硬體裡面啊。
如何讓軟體硬體間有個互動,
中間有個OS扮演處理的角色,這就是作業系統做的事了。

這是一支程式的狀況…
但是你的電腦可能不會只同時跑一支程式,
比如你可能想邊聽音樂(用音樂播放程式)、邊玩遊戲,還一邊寫你的程式作業…
這時作業系統就需要扮演「排程」的角色,
快速交替執行這些程式讓你感覺程式們同時被執行了

今天對OS的簡介就到此吧,自己總算漸漸對OS有概念了。


尚未有邦友留言

立即登入留言