程序員需要了解硬核知識之操作系統(tǒng)入門

      網(wǎng)友投稿 864 2022-05-28

      對于程序員來說,最莫大的榮耀莫過于自己的軟件被大多數(shù)人使用了吧。

      歷史文章請戳

      程序員需要了解的硬核知識之內(nèi)存

      程序員需要了解的硬核知識之CPU

      程序員需要了解的硬核知識之二進制

      程序員需要了解的硬核知識之磁盤

      程序員需要了解的硬核知識之壓縮算法

      本篇文章作為操作系統(tǒng)的入門文章,可能入門都算不上吧,畢竟操作系統(tǒng)太龐大和復雜了。本篇文章主要帶你了解一下我們常用的操作系統(tǒng)環(huán)境。

      操作系統(tǒng)環(huán)境

      程序中包含著運行環(huán)境這一內(nèi)容,可以說 運行環(huán)境 = 操作系統(tǒng) + 硬件 ,操作系統(tǒng)又可以被稱為軟件,它是由一系列的指令組成的。我們不介紹操作系統(tǒng),我們主要來介紹一下硬件的識別。

      我們肯定都玩兒過游戲,你玩兒游戲前需要干什么?是不是需要先看一下自己的筆記本或者電腦是不是能肝的起游戲?下面是一個游戲的配置(懷念一下 wow)

      圖中的主要配置如下

      操作系統(tǒng)版本:說的就是應用程序運行在何種系統(tǒng)環(huán)境,現(xiàn)在市面上主要有三種操作系統(tǒng)環(huán)境,Windows 、Linux 和 Unix ,一般我們玩兒的大型游戲幾乎都是在 Windows 上運行,可以說 Windows 是游戲的天堂。Windows 操作系統(tǒng)也會有區(qū)分,分為32位操作系統(tǒng)和64位操作系統(tǒng),互不兼容。

      處理器:處理器指的就是 CPU,你的電腦的計算能力,通俗來講就是每秒鐘能處理的指令數(shù),如果你的電腦覺得卡帶不起來的話,很可能就是 CPU 的計算能力不足導致的。想要加深理解,請閱讀博主的另一篇文章:程序員需要了解的硬核知識之CPU

      顯卡:顯卡承擔圖形的輸出任務,因此又被稱為圖形處理器(Graphic Processing Unit,GPU),顯卡也非常重要,比如我之前玩兒的劍靈開五檔(其實就是圖像變得更清晰)會卡,其實就是顯卡顯示不出來的原因。

      內(nèi)存:內(nèi)存即主存,就是你的應用程序在運行時能夠動態(tài)分析指令的這部分存儲空間,它的大小也能決定你電腦的運行速度,想要加深理解,請閱讀博主的另一篇文章 程序員需要了解的硬核知識之內(nèi)存

      存儲空間:存儲空間指的就是應用程序安裝所占用的磁盤空間,由圖中可知,此游戲的最低存儲空間必須要大于 5GB,其實我們都會遺留很大一部分用來安裝游戲。

      從程序的運行環(huán)境這一角度來考量的話,CPU 的種類是特別重要的參數(shù),為了使程序能夠正常運行,必須滿足 CPU 所需的最低配置。

      CPU 只能解釋其自身固有的語言。不同的 CPU 能解釋的機器語言的種類也是不同的。機器語言的程序稱為 本地代碼(native code),程序員用 C 等高級語言編寫的程序,僅僅是文本文件。文本文件(排除文字編碼的問題)在任何環(huán)境下都能顯示和編輯。我們稱之為源代碼。通過對源代碼進行編譯,就可以得到本地代碼。下圖反映了這個過程。

      Windows 操作系統(tǒng)克服了CPU以外的硬件差異

      計算機的硬件并不僅僅是由 CPU 組成的,還包括用于存儲程序指令的數(shù)據(jù)和內(nèi)存,以及通過 I/O 連接的鍵盤、顯示器、硬盤、打印機等外圍設備。

      在 WIndows 軟件中,鍵盤輸入、顯示器輸出等并不是直接向硬件發(fā)送指令。而是通過向 Windows 發(fā)送指令實現(xiàn)的。因此,程序員就不用注意內(nèi)存和 I/O 地址的不同構成了。Windows 操作的是硬件而不是軟件,軟件通過操作 Windows 系統(tǒng)可以達到控制硬件的目的。

      不同操作系統(tǒng)的 API 差異性

      接下來我們看一下操作系統(tǒng)的種類。同樣機型的計算機,可安裝的操作系統(tǒng)類型也會有多種選擇。例如:AT 兼容機除了可以安裝 Windows 之外,還可以采用 Unix 系列的 Linux 以及 FreeBSD (也是一種Unix操作系統(tǒng))等多個操作系統(tǒng)。當然,應用軟件則必須根據(jù)不同的操作系統(tǒng)類型來專門開發(fā)。CPU 的類型不同,所對應機器的語言也不同,同樣的道理,操作系統(tǒng)的類型不同,應用程序向操作系統(tǒng)傳遞指令的途徑也不同。

      應用程序向系統(tǒng)傳遞指令的途徑稱為 API(Application Programming Interface)。Windows 以及 Linux 操作系統(tǒng)的 API,提供了任何應用程序都可以利用的函數(shù)組合。因為不同操作系統(tǒng)的 API 是有差異的。所以,如何要將同樣的應用程序移植到另外的操作系統(tǒng),就必須要覆蓋應用所用到的 API 部分。

      鍵盤輸入、鼠標輸入、顯示器輸出、文件輸入和輸出等同外圍設備進行交互的功能,都是通過 API 提供的。

      這也就是為什么 Windows 應用程序不能直接移植到 Linux 操作系統(tǒng)上的原因,API 差異太大了。

      在同類型的操作系統(tǒng)下,不論硬件如何,API 幾乎相同。但是,由于不同種類 CPU 的機器語言不同,因此本地代碼也不盡相同。

      程序員需要了解的硬核知識之操作系統(tǒng)入門

      FreeBSD Port 幫你輕松使用源代碼

      不知道你有沒有這個想法:“既然 CPU 不同會導致本地代碼不同,那為何不將源代碼直接發(fā)送給程序呢?”這確實是一種解決辦法,Unix 系列的 FreeBSD 操作系統(tǒng)就使用了這種方式。

      Unix 系列操作系統(tǒng) FreeBSD 中,存在一種名為 Ports 的機制。該機制能夠結合當前運行環(huán)境的硬件環(huán)境來編譯應用的源代碼,進而得到可以運行的本地代碼。如果目標應用的源代碼在硬件上找不到,Ports 就會自動使用 FTP 連接到相應站點下載代碼。

      全球有很多站點都提供適用于 FreeBSD 的應用源代碼。通過使用 Ports 可以利用的程序源代碼,大約有 16000 種。根據(jù)不同的領域進行分類,可以隨時使用。

      FreeBSD 上應用的源代碼,大部分是用 C 語言來標注的,C 編譯器可以結合 FreeBSD 的運行環(huán)境來生成合適的本地代碼。

      FTP( File Transfer Protocol) 是連接到互聯(lián)網(wǎng)上的計算機之間的傳送文件的協(xié)議。

      可以使用虛擬機獲取其他環(huán)境

      即使不通過應用程序的移植,在同一個操作系統(tǒng)上仍然可以使用其他的操作系統(tǒng),那就是使用 虛擬機軟件。虛擬機(Virtual Machine)指通過軟件的具有完整硬件系統(tǒng)功能的、運行在一個完全隔離環(huán)境中的完整計算機系統(tǒng)。在實體計算機中能夠完成的工作在虛擬機中都能夠?qū)崿F(xiàn)。

      提供相同運行環(huán)境的 Java 虛擬機

      總算是提到大 Java 了, Java 大法好,除了虛擬機的方法之外,還有一種方法能夠提供不依賴于特定硬件和操作系統(tǒng)的程序運行環(huán)境,那就是 Java。

      大家說的 Java 其實有兩層意思,一種是作為編程語言的 Java;一種是作為程序運行環(huán)境的 Java。Java 與其他語言相同,都是通過源代碼編譯后運行的。不過,編譯后生成的不是特定 CPU 使用的本地代碼,而是名為字節(jié)代碼 的程序。直接代碼的運行環(huán)境就稱為 Java 虛擬機(Java Virtual Machine)。Java 虛擬機是一邊把 Java 字節(jié)代碼逐一轉換為本地代碼一邊在運行著。

      程序運行時,將編譯后的字節(jié)代碼轉換為本地代碼,這樣的操作看上去有些迂回,但由此可以實現(xiàn)相同的字節(jié)碼可以在不同的操作系統(tǒng)環(huán)境下運行。

      想象一下,你開發(fā)完成的應用部署到 Linux 環(huán)境下,是不是什么都不用管?

      Windows 有專門的 Windows 虛擬機,Macintosh 有 Macintosh 專門的虛擬機。從操作系統(tǒng)來看,Java虛擬機就是一個應用,從運行環(huán)境上來看,Java 虛擬機就是運行環(huán)境。

      BIOS 和引導

      最后對一些比較基礎的部分做一些補充說明。程序的運行環(huán)境,存在著名為 BIOS(Basic Input/Output System)的系統(tǒng)。BIOS 存儲在 ROM 中,是預先內(nèi)置在計算機主機內(nèi)部的程序。BIOS 除了鍵盤、磁盤和顯卡等基本控制外,還有引導程序的功能。引導程序是存儲在啟動驅(qū)動器啟示區(qū)域的小程序。操作系統(tǒng)的啟動驅(qū)動器一般硬盤。不過有時也可能是 CD-ROM 或軟盤。

      電腦開機后,BIOS 會確認硬件是否正常運行,沒有異常的話會直接啟動引導程序。引導程序的功能是把在硬盤等記錄的 OS 加載到內(nèi)存中運行。雖然啟動應用是 OS 的功能,但 OS 不能啟動自己,是通過引導程序來啟動的。

      文章參考:

      《程序是怎樣跑起來的》第七章

      關注公眾號后臺回復 191106 即可獲得《程序是怎樣跑起來的》電子書

      Windows 開發(fā)者

      版權聲明:本文內(nèi)容由網(wǎng)絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實后本網(wǎng)站將在24小時內(nèi)刪除侵權內(nèi)容。

      上一篇:C語言-字符串處理
      下一篇:基于神經(jīng)網(wǎng)絡的智能RC小車(Python+OpenCV)
      相關文章
      亚洲AV日韩AV高潮无码专区| 亚洲一区在线免费观看| 久久久亚洲AV波多野结衣| 亚洲福利精品电影在线观看| 亚洲色偷偷色噜噜狠狠99网| 亚洲国产综合精品| 亚洲沟沟美女亚洲沟沟| 久久亚洲国产精品| 亚洲精品无码不卡| 亚洲AV成人一区二区三区AV| 亚洲av无码乱码国产精品fc2| 国产亚洲免费的视频看| 国产精品国产亚洲精品看不卡| 亚洲一区无码精品色| 国产性爱在线观看亚洲黄色一级片| 亚洲不卡中文字幕无码| 亚洲av永久无码精品网站| 亚洲国产成人片在线观看无码| 国产∨亚洲V天堂无码久久久| 中文字幕亚洲图片| 亚洲综合色自拍一区| 亚洲精品无码久久久久去q| 亚洲精品无码永久在线观看你懂的| 不卡精品国产_亚洲人成在线| 国产成人亚洲精品影院| 亚洲色欲色欲www在线丝| 国产亚洲精品自在久久| 久久久久久久久亚洲| 亚洲精品免费在线观看| 亚洲欧洲久久精品| 亚洲最大的黄色网| 色婷婷六月亚洲综合香蕉| 亚洲v国产v天堂a无码久久| 自拍偷自拍亚洲精品情侣| 亚洲国产精品福利片在线观看 | 亚洲另类激情综合偷自拍图| 亚洲va无码va在线va天堂| 67pao强力打造67194在线午夜亚洲| 亚洲天堂一区在线| 亚洲中文字幕AV每天更新| 国产精品亚洲综合天堂夜夜|