自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

沒(méi)有操作系統(tǒng),程序可以運(yùn)行起來(lái)嗎?

數(shù)據(jù)庫(kù) 其他數(shù)據(jù)庫(kù)
要想寫(xiě)個(gè)能直接在計(jì)算機(jī)上運(yùn)行的程序可不簡(jiǎn)單,想一想這種不依賴操作系統(tǒng)系統(tǒng)的程序該怎樣運(yùn)行起來(lái)?

大家好,我是小風(fēng)哥。

現(xiàn)在的程序員對(duì)操作系統(tǒng)已經(jīng)習(xí)以為常了,但是你有沒(méi)有想過(guò),如果沒(méi)有操作系統(tǒng)的話我們可以讓程序運(yùn)行起來(lái)嗎?

先說(shuō)答案,當(dāng)然是可以的,而且必須是可以的。你可以從這個(gè)角度來(lái)思考,操作系統(tǒng)本身就是一個(gè)程序,這個(gè)程序的運(yùn)行沒(méi)有依賴任何其它“操作系統(tǒng)”,注意,這不是套娃。實(shí)際上在計(jì)算機(jī)歷史早期,或者說(shuō)上古時(shí)期,計(jì)算機(jī)上根本就沒(méi)有什么操作系統(tǒng)之說(shuō),這一時(shí)期的程序的確是在沒(méi)有操作系統(tǒng)的情況下編寫(xiě)和運(yùn)行的。

要想寫(xiě)個(gè)能直接在計(jì)算機(jī)上運(yùn)行的程序可不簡(jiǎn)單,想一想這種不依賴操作系統(tǒng)系統(tǒng)的程序該怎樣運(yùn)行起來(lái)?

啟動(dòng)是個(gè)問(wèn)題

我們面臨的第一個(gè)問(wèn)題就是:此時(shí)計(jì)算機(jī)上沒(méi)有任何程序,你該怎樣讓計(jì)算機(jī)啟動(dòng)起來(lái)呢?換句話說(shuō)加電后CPU該干啥?啊哈,沒(méi)想到吧,第一個(gè)問(wèn)題就不好解決,要想讓計(jì)算機(jī)運(yùn)行你的程序至少要把計(jì)算機(jī)啟動(dòng)起來(lái)吧。

所謂的計(jì)算機(jī)啟動(dòng)起來(lái)無(wú)非就是讓CPU加電后開(kāi)始執(zhí)行一段初始化代碼,為你真正的程序運(yùn)行鋪路,這一大段代碼就是所謂的內(nèi)核,kernel,實(shí)際上你可以讓計(jì)算機(jī)加電后執(zhí)行任何代碼,也就是實(shí)現(xiàn)你自己的內(nèi)核,當(dāng)然你也可以沒(méi)有這樣的內(nèi)核,直接運(yùn)行你的程序,關(guān)于計(jì)算機(jī)的啟動(dòng)你可以參考這篇文章《操作系統(tǒng)是如何啟動(dòng)起來(lái)的?》但這依然會(huì)有問(wèn)題。

運(yùn)行時(shí)問(wèn)題

第一個(gè)要面臨的是內(nèi)存問(wèn)題,你的程序要被加載到內(nèi)存的哪個(gè)位置呢?顯然這就是涉及到內(nèi)存管理問(wèn)題。第二個(gè)問(wèn)題是你沒(méi)有辦法充分利用計(jì)算機(jī)。想一想,在這種情況下,你只有啟動(dòng)的時(shí)候才可以開(kāi)始執(zhí)行一個(gè)全新的程序,想執(zhí)行第二個(gè)程序就需要關(guān)機(jī),在存儲(chǔ)設(shè)備中刷入新的程序然后再開(kāi)機(jī),這是不是讓人抓狂。這還不算完,如果你的程序有bug,那么不好意思,你可能需要重啟計(jì)算機(jī)了,你能想象程序出點(diǎn)問(wèn)題就要重啟計(jì)算機(jī)嗎?想一邊運(yùn)行文本編輯程序一邊運(yùn)行音樂(lè)程序?門(mén)都沒(méi)有,要想實(shí)現(xiàn),自己寫(xiě)個(gè)多任務(wù)(Multitask)管理系統(tǒng)吧,你至少要把運(yùn)行的程序管理起來(lái)吧,想一想是不是就必須用到進(jìn)程這樣的抽象啦,還覺(jué)得這些概念沒(méi)有用嗎?

就算你有多任務(wù)系統(tǒng),如果一個(gè)程序有問(wèn)題把另一個(gè)程序的內(nèi)存刷掉了,這是不是就一石二鳥(niǎo)了,一個(gè)bug導(dǎo)致兩個(gè)程序崩潰,你是不是得有進(jìn)程隔離機(jī)制?此外,如果你的程序需要使用I/O設(shè)備那就更有酸爽啦,沒(méi)有驅(qū)動(dòng)你怎樣控制這些設(shè)備、怎樣使用鼠標(biāo)鍵盤(pán)顯示器,你的程序是不是要鏈接一大堆驅(qū)動(dòng),想想是不是就已經(jīng)頭痛了。而且你還要高效的利用計(jì)算機(jī)資源,當(dāng)搞定這一切后你會(huì)發(fā)現(xiàn)自己實(shí)際上已經(jīng)寫(xiě)出了一個(gè)操作系統(tǒng)。還覺(jué)得操作系統(tǒng)沒(méi)有用嗎?操作系統(tǒng)把這些臟活累活統(tǒng)統(tǒng)攬下,程序員只需要專注寫(xiě)bug就可以了。說(shuō)了這么多缺點(diǎn),但沒(méi)有操作系統(tǒng)的還是有一個(gè)有趣的優(yōu)點(diǎn)的,那就是你可以獨(dú)掌大權(quán)。

程序員也是獨(dú)裁者

說(shuō)來(lái)有趣,盡管現(xiàn)在你可以花上幾千塊錢(qián)買(mǎi)一臺(tái)計(jì)算機(jī),但是你(程序員)幾乎沒(méi)有辦法繞開(kāi)操作系統(tǒng)隨意讀寫(xiě)你的內(nèi)存、讓CPU執(zhí)行任何指令,因?yàn)槟愕腤indows/Linux/MacOS會(huì)直接將你kill掉。

有意思的是明明是你自己花錢(qián)買(mǎi)的計(jì)算機(jī)硬件、花錢(qián)買(mǎi)的操作系統(tǒng),理論上這是個(gè)人財(cái)產(chǎn),但是你花錢(qián)買(mǎi)來(lái)的操作系統(tǒng)竟然不受你控制(大神除外),反而禁止你干這干那,就好比你買(mǎi)來(lái)一頭牛,結(jié)果這頭牛不受控,自己想干啥干啥,如果真的買(mǎi)了這樣一頭牛相信你早就忍不了了,但是你花大價(jià)錢(qián)買(mǎi)來(lái)的計(jì)算機(jī)、智能手機(jī)根本不受你的掌控,大家竟然對(duì)此沒(méi)什么感覺(jué),認(rèn)為這很正常,想想也是有夠魔幻的。扯遠(yuǎn)了,在早期的計(jì)算機(jī)上普通程序員(應(yīng)用程序)可以徹底控制計(jì)算機(jī),可謂獨(dú)掌大權(quán),實(shí)際上在現(xiàn)代計(jì)算機(jī)系統(tǒng)上你也可以在沒(méi)有操作系統(tǒng)的支持下寫(xiě)程序,這就是所謂的Bare-Metal Programming,嵌入式同學(xué)對(duì)此應(yīng)該不陌生。

好啦,關(guān)于操作系統(tǒng)與程序運(yùn)行這個(gè)話題就到這里,總之操作系統(tǒng)并不是計(jì)算機(jī)執(zhí)行程序的一個(gè)必須組件,沒(méi)有操作系統(tǒng)我們一樣可以讓程序運(yùn)行起來(lái)。

責(zé)任編輯:武曉燕 來(lái)源: 碼農(nóng)的荒島求生
相關(guān)推薦

2010-05-10 17:21:26

Unix操作系統(tǒng)

2022-02-24 08:30:24

操作系統(tǒng)CPU程序

2010-04-22 13:36:15

Aix操作系統(tǒng)

2010-04-16 18:15:11

Unix操作系統(tǒng)

2013-12-20 09:44:57

操作系統(tǒng)計(jì)算機(jī)服務(wù)器

2017-11-30 10:26:32

操作系統(tǒng)運(yùn)行時(shí)間CPU

2023-03-29 23:19:27

2022-02-27 23:14:33

Windows 11安卓微軟

2021-02-27 21:45:22

程序代碼函數(shù)

2009-12-09 17:25:19

Linux操作系統(tǒng)

2013-09-16 15:15:44

Linux操作系統(tǒng)

2010-04-16 18:02:30

Unix操作系統(tǒng)

2010-05-05 17:53:39

Oracle 8i

2010-04-19 12:47:39

Unix操作系統(tǒng)

2022-11-16 09:40:18

操作系統(tǒng)

2009-11-20 09:17:20

Firefox操作系統(tǒng)計(jì)劃

2014-05-15 11:02:34

Linux操作系統(tǒng)國(guó)產(chǎn)操作系統(tǒng)

2010-04-30 23:15:26

云計(jì)算

2010-04-09 11:11:34

Unix操作系統(tǒng)

2023-02-07 00:24:24

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)