作業系統是一種由引導程式(bootloader)啟動並管理計算機中所有程式生命週期的系統程式。所以,在定義的範圍上作業系統也屬於一種程式。當它啟動後就是計算機的主宰,可以掌控其他程式的生殺大權。然而,在計算機開始啟動時它並沒有啟動,更值得注意的是,它是由其他程式(bootloader)進行引導啟動的。這個啟動過程之後會有乙個專門的篇幅進行講解,這其中涉及很多知識點,比如 bootloader 是如何啟動作業系統,bios 和 uefi 的區別等。
在概括作業系統的作用前,先看一下在作業系統出現前計算機是如何工作的。在計算機的遠古時期,計算機靠人工輸入指令工作,乙個很經典的場景就是:程式設計師先設計好程式,然後製作成打孔條帶,將打孔條帶放入專門的機器把指令翻譯出來並交由計算機執行。很久以前,有個蟲子破壞了紙帶上的指令導致程式執行出錯,之後人們習慣將程式出錯稱呼為 bug (蟲子),除錯程式稱呼為 debug(乾掉蟲子)。但是在這個時期的計算機同一時刻只能有乙個任務在執行,那時沒有併發或並行的概念。雖然當時的計算機造價非常昂貴,但是它的利用率不高,在現在的我們看來它是不需要程序排程管理的。
現代的作業系統已經進化成為了功能完善且非常複雜的系統軟體,它可以幫我們管理計算機的各種資源,協助我們完成各種複雜繁瑣的任務。乙個現代的作業系統應該具備如下幾個功能特性:
使用者介面(gui)
普通使用者操作電腦是需要使用者介面的,沒有使用者介面的電腦對於普通使用者來說就是災難。你能想象家裡的老人或者上了年紀的人用電腦卻沒有滑鼠的場景嗎?你能想象使用黑框框來做 ppt 嗎?你能想象使用黑框框來瀏覽網頁嗎?
專業的 it 工作者有時候會使用黑框框純粹是工作需要,在有些場景下,黑框框比使用者介面更有效率一些。而類似於伺服器場景的開發工作基本上是沒有使用者介面的,當然一直強調的是專業場景,這個世界上能流暢使用黑框框的人佔總人口的比例太少太少。
使用者介面這項偉大的發明誕生於施樂公司,經賈伯斯和比爾蓋茨商業化運作後得以讓世人發現它的偉大之處。使用者介面的發明就相當於簡體漢字的出現一般,簡體漢字的推行讓中國的文盲率大幅降低,而使用者介面的發明則大幅降低了計算機的使用難度,所以你很難想象現代的作業系統沒有使用者介面。
程序管理
記憶體管理
記憶體是計算機很重要的乙個資源,因為程式只有被載入到記憶體中才可以執行,此外 cpu 所需要的指令與資料也都是來自記憶體的。記憶體的並不是無限制的,它受限於硬體和定址位數。但是現代作業系統會讓每乙個程序都覺得自己在獨佔整個記憶體,這就是虛擬記憶體技術。值得注意的是,這裡的虛擬記憶體與 swap 這種虛擬記憶體是不一樣的,雖然兩個都是成為虛擬記憶體,但是完全是兩個不同方向的技術。
程序的執行需要分配記憶體,記憶體分配的快慢都與記憶體管理方式有著巨大的影響。兩個不同程序對應的記憶體區域是不能相互訪問的,作業系統必須得提供這樣的保證,否則很容易出問題,比如:執行著的 dota 遊戲如果可以被另外乙個程序訪問它的記憶體區域的話,那就可以直接將記憶體區域中的某個數值進行修改,比如將遊戲中的玩家生命值變為無限,這樣對手怎麼打都打不死自己的英雄。例如前段時間火熱的吃雞遊戲,外掛程式軟體可以讓角色在決賽圈外進行鎖血,這個就是遊戲記憶體被修改的最好示例。當然這是通過比較專業的手段來繞過作業系統的限制,這也從另外乙個方面來說明,其實現在的作業系統安全性也是有很大提公升空間的。
程序退出銷毀時,記憶體的**也是很重要的,否則很容易就會產生記憶體溢位,佔著茅坑不拉屎,導致其他的程序都憋死。
檔案系統
檔案系統與使用者的距離很近,每個人平常在使用計算機的時候或多或少都會留下一些資料,而這些資料通常會保留在磁碟裡面。磁碟如果不進行格式化的話,普通人是沒法使用的。磁碟裡面其實就是一些布滿磁性物質的碟片,在計算機的世界裡資料是 0 和 1 組成的,那對應的在磁碟裡面就是磁性的正負極,也就是說計算機的乙個文字資料要儲存到磁碟中,那就需要將文字資料的電氣化訊號 0 和 1 通過磁碟翻譯為磁性正負極並儲存起來。
磁碟格式化的過程就是將檔案系統架設到磁碟上,這樣可以更好的管理磁碟的資料。你可以將磁碟未格式化之前的資料看做是一堆雜亂無章散落在地上的書,而檔案系統就是乙個有編排順序的書架,格式化的過程就是將這堆書一本本按編排順序放到書架上。這個比喻不太恰當,因為格化式操作通常來說會清掉資料,就相當於將書裡面的字都清掉了,放到書架上的書裡面都是空白頁,所以格式化的時候請謹慎。
網路通訊
裝置管理
計算機上有很多裝置,比如cpu、記憶體、網絡卡、音效卡、顯示卡、硬碟等。那什麼是裝置管理?
在計算機中除了 cpu 和記憶體,對於其他一切輸入輸出裝置的管理統稱為裝置管理。
計算機中的裝置分為輸入和輸出裝置。以 cpu 為中心,凡是向 cpu 輸送資料的裝置統稱為輸入裝置,例如滑鼠、鍵盤、攝像頭等;同樣以 cpu 為中心,凡是從 cpu 獲取資料的裝置統稱為輸出裝置,如顯示器等。有些裝置既是輸入裝置也是輸入裝置,比如網絡卡等。
乙個比較常見的場景是當我們將 u盤插進電腦的 usb 插孔時,電腦能實時識別出 u 盤裝置,那計算機為啥能實時識別出這些裝置呢?之後會有章節討論一下這個話題。
作業系統可以根據不同的方面進行分類,它分類的依據並不是唯一的。根據核心結構的不同,可以分為單核心作業系統、微核心作業系統。常見的 linux 系統為典型的單核心作業系統,windows 系統據說是微核心作業系統。單核心作業系統的效能比微核心系統略微佔優。根據用途可以將作業系統分為通用作業系統、嵌入式作業系統、專用作業系統。普通群眾所用的計算機中所裝的基本上都是通用作業系統,可以勝任比較常見的任務。嵌入式作業系統常見於物聯網裝置上,比如共享充電寶,共享單車等。專用作業系統一般用於軍事、工業、醫療等行業。根據訊號處理的實時性可以分為實時作業系統和非實時作業系統。實時指的是當向計算機傳送指令後可在乙個規定的時間內獲取反饋。我們常用的計算機並不是實時作業系統,很多情況下都會有卡頓的情況。
維基百科(
識別作業系統
p0f是一款被動探測工具,通過分析網路資料報來判斷作業系統型別。目前最新版本為3.06b。同時p0f在網路分析方面功能強大,可以用它來分析nat 負載均衡 應用 等。p0f的命令引數很簡單,基本說明如下 l f fname指定指紋資料庫 p0f.fp 路徑,不指定則使用預設資料庫。l i iface...
作業系統概念系類 作業系統特徵
作業系統有什麼特徵呢?1.併發 2.共享 3.虛擬 4.非同步 併發併發 指兩個或多個事件在同一時間間隔內發生。這些事件巨集觀上是同時發生的,但是微觀上是交替發生的。這時候就是有人蒙了?舉個例子。巨集觀上 比如說有10件事情,我同時開始做,10分鐘後他們全部完成了。微觀上是什麼呢?做這些事情的時候,...
作業系統 2 作業系統介面
介面是什麼?使用者用很熟悉的東西進入系統 連線兩個東西 訊號轉換 遮蔽細節.第一部分 作業系統介面 首先從命令列和圖形介面來引入我們作業系統介面的介紹 命令列是一段程式,系統初始化完之後便進入這段程式,這個程式是乙個死迴圈,不斷等待著使用者敲入命令。圖形介面是包括畫圖的c程式 c語言邏輯 重要函式 ...