久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

什么是程序,?

 今年看煙花 2021-06-01

操作系統(tǒng)基礎(chǔ)篇:什么是程序?

圖片

本節(jié)是操作系統(tǒng)系列教程的第一篇文章,,屬于操作系統(tǒng)第一章即基礎(chǔ)篇,,在真正開始操作系統(tǒng)相關(guān)章節(jié)前在這一部分回顧一些重要的主題,算是溫故知新吧,,以下是正文,。

雖然在這里我們主要關(guān)注的是操作系統(tǒng),但畢竟操作系統(tǒng)的目的就是能更好的運(yùn)行用戶程序,,而且該教程主要是站在程序員的角度來講解操作系統(tǒng),,作為程序員是繞不開程序這個(gè)話題的,因此在深入理解操作系統(tǒng)之前還是有必要來聊一聊程序是怎么一回事,。

究竟什么是程序,?

我們引用Wikipedia對(duì)計(jì)算機(jī)程序的定義:

A computer program is a collection of instructions that performs a specific task when executed by a computer.

翻譯成大白話就是,能指揮計(jì)算機(jī)干活的一堆指令就叫計(jì)算機(jī)程序。那怎樣才能寫出指揮計(jì)算機(jī)干活的指令呢,?這就涉及到程序是怎么來的,。

程序是怎么來的呢?

程序是我們廣大程序員們用編程語言一個(gè)字符一個(gè)字符寫出來的文本字符串,,只不過這些文本字符串是人類可以認(rèn)識(shí)的,。無論用的什么程序語言,C/C++,、Java,、Python、JavaScript,、C#,、Perl、Lua,、Shell,、匯編語言等等等等,只要是你寫出來的文本字符串能指揮計(jì)算機(jī)干活,,這都叫程序,。這些程序員認(rèn)識(shí)的文本字符串就是可以指揮計(jì)算機(jī)完成特定任務(wù)的指令。你可能有點(diǎn)糊涂了,,這些文本字符串真的就是計(jì)算機(jī)能用來完成特定任務(wù)的指令嗎,?計(jì)算機(jī)不是只認(rèn)識(shí)0和1這兩個(gè)數(shù)字嗎?

天才的榆木疙瘩

計(jì)算機(jī)其實(shí)是一個(gè)數(shù)學(xué)學(xué)得非常差的家伙,,以至于差到只能認(rèn)識(shí)兩個(gè)數(shù),0和1,,其它的就都不能認(rèn)識(shí)了,,我們要面對(duì)的就是這樣一個(gè)榆木疙瘩。

雖然這個(gè)榆木疙瘩數(shù)學(xué)不好識(shí)數(shù)不多,,但是這家伙有一個(gè)我們?nèi)祟愲y以望其項(xiàng)背的能力,,不,對(duì)于人類來說簡(jiǎn)直就是超能力,,那就是這個(gè)榆木疙瘩算數(shù)非??欤瑢?duì)于簡(jiǎn)單的加法我們?nèi)祟惪赡芤话阋幻肽芩悴怀^10個(gè),,但是計(jì)算機(jī)一秒可以完成數(shù)十億次的計(jì)算,,簡(jiǎn)直是天才!雖然計(jì)算機(jī)能認(rèn)識(shí)的數(shù)就只有0和1這么簡(jiǎn)單,,但是其計(jì)算速度體現(xiàn)出了簡(jiǎn)單的威力,。

從文本字符串到機(jī)器指令

至此,我們知道程序員(人類)和計(jì)算機(jī)是兩個(gè)完全不同的物種,,不同的物種能理解的語言是完全不同的,,就好比普通的人不會(huì)明白一群鳥語在說什么一樣,,我們?nèi)祟愐膊荒艽蜷_vim或者宇宙無敵IDE——Visual Studio直接寫0和1吧(雖然這是可以的,早期的程序員確實(shí)就是這么干的,,牛不牛),。

因此,我們需要某種魔法把人類認(rèn)識(shí)的C/C++,、Java,、Python之類的翻譯出計(jì)算機(jī)可以認(rèn)識(shí)二進(jìn)制01指令。這樣的魔法就來自兩個(gè)東西,,編譯器和解釋器,。

翻譯官編譯器和解釋器

編譯器大家應(yīng)該都比較熟悉,我們寫好C/C++程序后第一步就是編譯,,這里編譯工作就是編譯器來完成的,。你可以簡(jiǎn)單的理解為編譯器把C/C++程序直接翻譯成計(jì)算機(jī)可以認(rèn)識(shí)的01二進(jìn)制機(jī)器指令。

對(duì)于解釋器有的同學(xué)可能就不是那么熟悉了,,寫Java,、Python、C#程序的時(shí)候你從沒有聽說過要“編譯一下Java,,編譯一下Python,,編譯一下C#”吧。你可能會(huì)說C/C++程序我能理解了,,編譯器把C/C++程序直接翻譯成了01二進(jìn)制機(jī)器指令,,那Java、Python一類的程序是怎么運(yùn)行的呢,?

大家可以想一想,,你在寫Python、Java,、C#程序之前是不是要安裝一堆東西,,稱之為“運(yùn)行時(shí)環(huán)境”?

如果你想不起來,,趕緊重新搭一套環(huán)境試試是不是這么回事,。

這里的運(yùn)行時(shí)環(huán)境其實(shí)就是解釋器。你可以把這個(gè)解釋器簡(jiǎn)單的理解為就是一個(gè)程序,,只不過,。。,。注意注意?。。∏胺礁吣埽,。,。?,只不過是解釋器這個(gè)程序可以運(yùn)行你寫的Java,、Python、C#的程序,,解釋器是一個(gè)可以運(yùn)行程序的程序?。?!那解釋器這個(gè)程序又是怎么來的呢,?一般情況下這些解釋器其實(shí)是用C/C++寫出來的。只不過用C/C++寫的這個(gè)程序?qū)iT用來執(zhí)行你寫的Java,、Python之類的程序,,高能完畢。

偉大的C語言

希望到目前為止你還沒有暈,,到這里我們知道了,,不管我們用的是Java、Python,、JavaScript什么的也好最終都逃不出C/C++(Go等語言除外),,CPU不直接執(zhí)行Java、Python,、JavaScript之類的解釋型語言程序,,CPU可以直接執(zhí)行的是解釋器代碼,解釋器最終來執(zhí)行Java等程序,,這就是解釋型語言效率不如編譯型語言效率高的原因,。因?yàn)镃/C++程序最終被編譯器翻譯成了01機(jī)器指令,CPU可以直接運(yùn)行運(yùn)行機(jī)器指令,,而對(duì)于解釋型語言來說CPU首先執(zhí)行的是解釋器的程序,,然后解釋器再執(zhí)行你寫的程序,,性能上當(dāng)然不及編譯型語言,。

而C++程序其實(shí)在編譯過程中也會(huì)轉(zhuǎn)化為C程序然后再轉(zhuǎn)為01二進(jìn)制機(jī)器指令,并且們使用的Windows,、Linux,、MacOS等操作系統(tǒng)同樣是用C語言來編寫的,從最底層的操作系統(tǒng)到上層的應(yīng)用程序?qū)嶋H上都逃脫不了C語言,。

從這個(gè)角度看,,C語言真是一門偉大的語言。

回到操作系統(tǒng)

饒了一大圈我們回到操作系統(tǒng),接下來關(guān)于操作系統(tǒng)的講解中涉及到示例程序沒有明確說明的話指的是C語言程序,。請(qǐng)注意,,如果你對(duì)C語言不熟悉也沒有關(guān)系,我們示例都非常簡(jiǎn)單不會(huì)涉及到復(fù)雜的C語言相關(guān)概念與用法,,有任何語言的使用經(jīng)驗(yàn)都可輕松應(yīng)對(duì),。

C語言程序編譯好后生成的可執(zhí)行程序在Windows中就是我們熟悉的exe程序,在Linux下是elf程序,,這些可執(zhí)行程序編譯好后和普通文件一樣存放在磁盤當(dāng)中,。

在接下來關(guān)于操作系統(tǒng)的討論當(dāng)中,沒有明確說明的話,,以下幾個(gè)詞匯,,'程序','用戶程序',,'應(yīng)用程序'指的都是編譯好后放在磁盤上的可執(zhí)行程序,。

操作系統(tǒng)也是程序

一定要認(rèn)識(shí)到,操作系統(tǒng)也是程序,,只不過這個(gè)程序不是簡(jiǎn)單的往屏幕上打印helloworld,,不能用來文字語音視頻聊天,不能用來上網(wǎng),,不能用來看電影,,不能用來玩游戲。那么這個(gè)貌似什么娛樂設(shè)施都提供不了的程序有什么用呢,?這個(gè)程序的作用無比重要,,該程序的作用是為以上用戶程序提供一個(gè)良好的運(yùn)行環(huán)境,管理計(jì)算機(jī)硬件資源包括:CPU,、內(nèi)存,、磁盤、網(wǎng)卡,、外設(shè)等等等等,,這個(gè)程序就是該教程重點(diǎn)關(guān)注的操作系統(tǒng)。

總結(jié)

這是該教程的第一節(jié),,在這一節(jié)中我們從各個(gè)方面講解了程序這一話題,。

程序分為編譯型程序,,比如C/C++,,以及解釋型程序比如Java,、Python,、JavaScript等,。編譯型程序被編譯器直接翻譯成CPU可以直接運(yùn)行的機(jī)器指令,,而解釋型程序無需編譯,,其運(yùn)行依靠的是解釋器,,解釋器是一個(gè)可以執(zhí)行程序的程序,解釋器這個(gè)程序一般是由C/C++程序編寫的,。

需要我們注意的是操作系統(tǒng)也是一個(gè)程序,,只不過這個(gè)程序的作用比較特殊,這個(gè)程序是用來管理計(jì)算機(jī)系統(tǒng)中各種軟硬件資源的,,比如提供進(jìn)程,、線程機(jī)制,管理CPU等等,,這個(gè)程序也是接下來該教程的主角,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多