<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          沒有操作系統(tǒng),程序還能運行嗎?

          共 1801字,需瀏覽 4分鐘

           ·

          2022-06-26 18:51

          大家好,我是魚皮。程序員朋友們都知道,操作系統(tǒng)是計算機中非常重要的概念,也是大家購買電腦時討論的熱門話題。但是你有沒有想過,如果沒有操作系統(tǒng)的話我們可以讓程序運行起來嗎?

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

          要想寫個能直接在計算機上運行的程序可不簡單,想一想這種不依賴操作系統(tǒng)系統(tǒng)的程序該怎樣運行起來?

          啟動是個問題

          我們面臨的第一個問題就是:此時計算機上沒有任何程序,你該怎樣讓計算機啟動起來呢?換句話說加電后CPU該干啥?
          啊哈,沒想到吧,第一個問題就不好解決,要想讓計算機運行你的程序至少要把計算機啟動起來吧。

          所謂的計算機啟動起來無非就是讓CPU加電后開始執(zhí)行一段初始化代碼,為你真正的程序運行鋪路,這一大段代碼就是所謂的內(nèi)核,kernel,實際上你可以讓計算機加電后執(zhí)行任何代碼,也就是實現(xiàn)你自己的內(nèi)核,當(dāng)然你也可以沒有這樣的內(nèi)核,直接運行你的程序。
          但這依然會有問題。

          運行時問題

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

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

          程序員也是獨裁者

          說來有趣,盡管現(xiàn)在你可以花上幾千塊錢買一臺計算機,但是你(程序員)幾乎沒有辦法繞開操作系統(tǒng)隨意讀寫你的內(nèi)存、讓CPU執(zhí)行任何指令,因為你的Windows/Linux/MacOS會直接將你kill掉。

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

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

          以上就是本期分享了。

          最后,歡迎加入 魚皮的編程知識星球(點擊了解詳情),和 8500 多名小伙伴們一起交流學(xué)習(xí),向魚皮和大廠同學(xué) 1 對 1 提問、幫你制定學(xué)習(xí)計劃不迷茫、跟著魚皮直播做項目(往期項目可無限回看)領(lǐng)取魚皮原創(chuàng)編程學(xué)習(xí)/求職資料等。


          往期推薦

          校招拿了幾十個offer,說說我的感受

          程序員的八榮八恥,太贊同了!

          中專學(xué)歷自學(xué)前端找工作?也太真實了。。。

          這個17k star 的拖拽庫有點料~

          看了這篇文章,再也不怕并查集了!

          瀏覽 43
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲免费精品在线 | 91九色蝌蚪91POR成人 | 香蕉国产视频2024 | 亚洲综合色吧 | 色猫咪AV在线 |