操作系統(tǒng)淺析
這篇文章不是探討操作系統(tǒng)的具體實(shí)現(xiàn)細(xì)節(jié)這樣技術(shù)性的問題,而是想從宏觀上探討一下為什么會(huì)有操作系統(tǒng)仑氛,操作系統(tǒng)是干什么的抑堡。
一.從最簡單的輸入輸出設(shè)備說起
我做過一個(gè)最簡單的帶有輸入輸出設(shè)備的裝置站玄,大致是這樣:
有一個(gè)按鍵設(shè)備作為輸入按摘,一個(gè)數(shù)碼管作為顯示輸出包券,一個(gè)單片機(jī)處理數(shù)據(jù)。
整個(gè)單片機(jī)的工作流程是這樣的:
這是一個(gè)沒有操作系統(tǒng)的設(shè)備炫贤,程序是在電腦上寫好了然后下載到單片機(jī)上的溅固,所以寫了之后就不能更改。
我在獲取到鍵值(哪個(gè)鍵被按下照激,編號(hào)為1-10发魄,共10個(gè)按鍵)和按鍵類型(長按,短按俩垃,雙擊)之后所做的顯示操作是:數(shù)碼管的前兩位顯示鍵值励幼,后兩位顯示當(dāng)前鍵值代表的按鍵被按下了多少次(短按加一次,雙擊加兩次口柳,長按加三次)苹粟,比如說如果當(dāng)前數(shù)碼管顯示為0222,則表示2號(hào)按鍵被按下的次數(shù)為22次跃闹,如果此時(shí)我再對2號(hào)按鍵長按一次嵌削,則數(shù)碼管顯示會(huì)變成0225(長按按鍵次數(shù)加3)。
作為一個(gè)嵌入式的設(shè)備望艺,整個(gè)設(shè)備的功能已經(jīng)很完善了苛秕,在沒有操作系統(tǒng)的情況下運(yùn)行的很好。實(shí)際上這就是一個(gè)最簡易的計(jì)算機(jī)模型找默,它有輸入設(shè)備(10個(gè)按鍵)艇劫,有CPU和內(nèi)存(單片機(jī)),有顯示器(數(shù)碼管)惩激。這個(gè)裝置在沒有操作系統(tǒng)的情況下也可以良好運(yùn)行店煞,那么為什么計(jì)算機(jī)上要有一個(gè)操作系統(tǒng)呢?
二.操作系統(tǒng)的引入
實(shí)際上大多數(shù)嵌入式設(shè)備都是沒有操作系統(tǒng)的风钻,都是直接面向硬件編程顷蟀,因?yàn)榇蠖鄶?shù)嵌入式設(shè)備的功能比較固定,比如電視遙控器骡技,它的功能就只是負(fù)責(zé)控制電視鸣个。這類專用設(shè)備實(shí)際上是不需要操作系統(tǒng)的,直接對硬件編程就行了布朦,那么操作系統(tǒng)是怎么產(chǎn)生的呢毛萌?
我還是以上面那個(gè)最簡單的設(shè)備為例,如果其他的程序員拿到了我的這個(gè)設(shè)備喝滞,而他現(xiàn)在在獲取按鍵鍵值和按鍵類型之后想要做其他的顯示操作(比如只想顯示哪個(gè)鍵被按下阁将,只需要前面兩位數(shù)碼管就行了,后面兩位可以顯示為0)右遭,而他又看不懂我的原始代碼做盅,這樣就意味著,他需要從做基礎(chǔ)的檢測按鍵鍵值→檢測按鍵類型→進(jìn)行顯示操作做起窘哈,而他實(shí)際上只是希望在獲取到鍵值和類型之后進(jìn)行其他的顯示操作吹榴,也就是只想改變一下最后一步。這樣的情況下滚婉,這個(gè)程序員肯定就會(huì)想图筹,如果能夠有一個(gè)東西幫我檢測按鍵鍵值和類型就好了,這個(gè)東西就是操作系統(tǒng)。
如果這個(gè)設(shè)備有了操作系統(tǒng)远剩,它可以幫程序檢測但按鍵鍵值和類型扣溺,那么程序員就可以很方便的對其進(jìn)行編程,達(dá)到所需要的顯示操作瓜晤,因此這個(gè)設(shè)備就有了通用性锥余。這實(shí)際上就是操作系統(tǒng)一個(gè)很重要的功能:為應(yīng)用程序提供底層接口。以這個(gè)設(shè)備為例痢掠,它提供的底層接口就是按鍵鍵值和類型驱犹,使程序員可以忽略具體的檢測過程而直接進(jìn)行所需要的顯示操作。想象一下足画,如果IOS程序員在編程時(shí)雄驹,還需要自己去寫代碼檢測是否有手指點(diǎn)擊以及點(diǎn)擊的位置,那么對程序員來說無疑是災(zāi)難性的淹辞,這些檢測實(shí)際上都是操作系統(tǒng)完成的医舆,程序員編程時(shí)只需要告訴操作系統(tǒng)有手指按下之后需要做什么就行了,包括iOS最新出的3Dtouch的功能桑涎,程序員并不需要自己去檢測是否發(fā)生了一次3Dtouch彬向,而只需要告訴操作系統(tǒng)當(dāng)3Dtouch發(fā)生之后需要做什么就行了。這些都是操作系統(tǒng)提供的接口攻冷。
我們大多數(shù)有操作系統(tǒng)的設(shè)備娃胆,比如手機(jī)和電腦,其實(shí)都是通用設(shè)備等曼,你可以在上面裝各種各樣的應(yīng)用程序來完成不同的功能里烦,而如果要在操作系統(tǒng)上編寫應(yīng)用程序,實(shí)際上就是利用了操作系統(tǒng)所提供的各種各樣的接口禁谦,操作系統(tǒng)很重要的一個(gè)功能就是:為上層應(yīng)用程序提供底層接口胁黑。當(dāng)然操作系統(tǒng)還有其他很多功能比如進(jìn)程線程管理等。
以上內(nèi)容為自己的一些淺薄的認(rèn)識(shí)州泊,如有錯(cuò)誤丧蘸,還請大神指出。