計算機基礎(chǔ)
計算機基礎(chǔ)課程枯燥乏味,無聊至極狱从,覺得過于理論膨蛮,沒有用途。上課都睡一大片季研。就算在聽課的大部分也是右耳進左耳出敞葛。但是!但是与涡!計算機基礎(chǔ)在未來工作中是必不可少的惹谐,只要是做計算機編程工作的都必須打好計算機基礎(chǔ)知識的根基。所以驼卖!所以氨肌!所以逃不掉,那就直面風(fēng)暴吧酌畜。我在B站里發(fā)現(xiàn)一位up主叫@不禿頭的程序員_怎囚,感覺內(nèi)容還不錯,然后就總結(jié)出來的這篇干貨桥胞,希望對你有受益恳守。卷起來!卷起來贩虾!
操作系統(tǒng)篇
1.什么是操作系統(tǒng)
現(xiàn)代計算機系統(tǒng)由一個或多個處理器催烘、主存、打印機整胃、鍵盤颗圣、鼠標、顯示器屁使、網(wǎng)絡(luò)接口以及各種輸入輸出設(shè)備構(gòu)成在岂。然而,程序員不會直接和這些硬件打交道蛮寂,在硬件的基礎(chǔ)之上蔽午,計算機安裝了一層軟件,這層軟件能夠通過響應(yīng)用戶輸入的指令達到控制硬件的效果酬蹋,從而滿足用戶需求及老,這種軟件稱之為操作系統(tǒng)抽莱,它的任務(wù)就是為用戶程序提供一個更好、更簡單骄恶、更清晰的計算機模型食铐。(說白了就是能直接與硬件打交道而讓用戶能方便使用電腦的一種軟件?)
我們一般常見的操作系統(tǒng)主要有Windows、Linux僧鲁、FreeBSD或OsX,這種帶有圖形界面的操作系統(tǒng)被稱為圖形用戶界面(Graphical User Interface,GUI),而基于文本虐呻、命令行的通常稱為Shel1。
操作系統(tǒng)簡化圖如上寞秃,最下面的是硬件斟叼,在硬件之上是軟件。驅(qū)動是從操作系統(tǒng)中細化出來的春寿,操作系統(tǒng)通過驅(qū)動和硬件進行交互朗涩。大部分計算機有兩種運行模式:
內(nèi)核態(tài)(也稱為管態(tài)和核心態(tài))和用戶態(tài),操作系統(tǒng)運行在內(nèi)核態(tài)中绑改,具有硬件的訪問權(quán)谢床,可以執(zhí)行機器能夠運行的任何指令。軟件的其余部分運行在用戶態(tài)下厘线。
2.操作系統(tǒng)結(jié)構(gòu)
Windows和Linux可以說是我們比較常見的兩款操作系統(tǒng)的萤悴。Windows基本占領(lǐng)了電腦時代的市場,商業(yè)上取得了很大成功皆的,但是它并不開源,所以要想接觸源碼得加入Windows的開發(fā)團隊中蹋盆。對于服務(wù)器使用的操作系統(tǒng)基本上都是Linux,而且內(nèi)核源碼也是開源的费薄,任何人都可以下載,并增加自己的改動或功能栖雾,Linux最大的魅力在于楞抡,全世界有非常多的技術(shù)大佬為它貢獻代碼。這兩個操作系統(tǒng)各有千秋析藕,不分伯仲召廷。操作系統(tǒng)核心的東西就是內(nèi)核
內(nèi)核
計算機是由各種外部硬件設(shè)備組成的,比如內(nèi)存账胧、CPU竞慢、硬盤等,如果每個應(yīng)用都要和這些硬件設(shè)備對接通信協(xié)議治泥,那這樣太累了筹煮。所以,這個中間人就由內(nèi)核來負責(zé)居夹,讓內(nèi)核作為應(yīng)用連接硬件設(shè)備的橋梁败潦,應(yīng)用程序只需關(guān)心與內(nèi)核交互本冲,不用關(guān)心硬件的細節(jié)。
內(nèi)核能力:
現(xiàn)代操作系統(tǒng)劫扒,內(nèi)核一般會提供4個基本能力:
●管理進程檬洞、線程,決定哪個進程沟饥、線程使用CPU,也就是進程調(diào)度的能力添怔;
(PS:進程一般指各個打開的應(yīng)用,而線程是指打開應(yīng)用里面的各個頁面闷板,如Google瀏覽器運行是一個進程澎灸,而Google瀏覽器里的各個頁面則是線程)
●管理內(nèi)存,決定內(nèi)存的分配和回收遮晚,也就是內(nèi)存管理的能力性昭;
●管理硬件設(shè)備,為進程與硬件設(shè)備之間提供通信能力县遣,也就是硬件通信能力糜颠;
●提供系統(tǒng)調(diào)用唾糯,如果應(yīng)用程序要運行更高權(quán)限運行的服務(wù)熬苍,那么就需要有系統(tǒng)調(diào)用运翼,它是用戶程序與操作系統(tǒng)之間的接口奢赂。
內(nèi)核具有很高的權(quán)限次伶,可以控制CPU练慕、內(nèi)存煎楣、硬盤等硬件既峡,而應(yīng)用程序具有的權(quán)限很小守问,因此大多數(shù)操作系統(tǒng)匀归,把內(nèi)存分成了兩個區(qū)域:
●內(nèi)核空間,這個內(nèi)存空間只有內(nèi)核程序可以訪問耗帕;
●用戶空間穆端,這個內(nèi)存空間專門給應(yīng)用程序使用;
用戶空間的代碼只能訪問一個局部的內(nèi)存空間仿便,而內(nèi)核空間的代碼可以訪問所有內(nèi)存空間体啰。
因此,當(dāng)程序使用用戶空間時嗽仪,我們常說該程序在用戶態(tài)執(zhí)行荒勇,而當(dāng)程序使用內(nèi)核空間時,程序則在內(nèi)核態(tài)執(zhí)行钦幔。
應(yīng)用程序如果需要進入內(nèi)核空間枕屉,就需要通過「系統(tǒng)調(diào)用」,下面來看看系統(tǒng)調(diào)用的過程:
內(nèi)核程序執(zhí)行在內(nèi)核態(tài)鲤氢,用戶程序執(zhí)行在用戶態(tài)搀擂。當(dāng)應(yīng)用程序使用系統(tǒng)調(diào)用時西潘,會產(chǎn)生一個中斷。發(fā)生中斷后哨颂,CPU會中斷當(dāng)前在執(zhí)行的用戶程序喷市,轉(zhuǎn)而跳轉(zhuǎn)到中斷
處理程序,也就是開始執(zhí)行內(nèi)核程序威恼。內(nèi)核處理完后品姓,主動觸發(fā)中斷,把CPU執(zhí)行權(quán)限交回給用戶程序箫措,回到用戶態(tài)繼續(xù)工作腹备。
Liux內(nèi)核由如下幾部分組成:內(nèi)存管理、進程管理斤蔓、設(shè)備驅(qū)動程序植酥、文件系統(tǒng)和網(wǎng)絡(luò)管理等。
當(dāng)今Windows7弦牡、Windows10使用的內(nèi)核叫Nindows NT,NT全稱叫New Technology友驮。
(PS:這里大家需要知道一點就是Liux和window的執(zhí)行文件不一樣,因為他們的內(nèi)核驾锰、機制不一樣卸留。)
加油ヾ(?°?°?)??? ?加油ヾ(?°?°?)??
3.計算機的啟動
主板一般為矩形電路板,上面安裝了組成計算機的主要電路系統(tǒng)椭豫,一般有BIOS芯片耻瑟、I/O控制芯片。在主板上,有一個東西叫ROM (Read Only Memory,只讀存儲器)赏酥。這和咱們平常說的內(nèi)存RAM (Random Access Memory,隨機存取存儲器)不同匆赃。
咱們平時買的內(nèi)存條是可讀可寫的,這樣才能保存計算結(jié)果今缚。而ROM是只讀的,上面早就固化了一-些初始化的程序, 也就是BIOS(Basic Input and Output System,基本輸入輸出系統(tǒng))低淡。
如果你自己安裝過操作系統(tǒng)姓言,剛啟動的時候,按某個組合鍵蔗蹋,顯示器會彈出一個藍色的界面何荚。能夠調(diào)整啟動順序的系統(tǒng),就是我說的BIOS,然后我們就可以先執(zhí)行它猪杭。
然后操作系統(tǒng)會詢問BIOS獲取配置信息餐塘。對于每個設(shè)備來說,會檢查是否有設(shè)備驅(qū)動程序皂吮。如果沒有戒傻,則會向用戶詢問是否需要插入CD-ROM 驅(qū)動(由設(shè)備制造
商提供)或者從Internet上下載税手。一旦有了設(shè)備驅(qū)動程序,操作系統(tǒng)會把它們加載到內(nèi)核中,然后初始化表,創(chuàng)建所需的后臺進程,并啟動登錄程序或GUI需纳。
4.系統(tǒng)調(diào)用
你會發(fā)現(xiàn)芦倒,一個項目要想順暢進行,需要用到公司的各種資源不翩,比如說蓋個公章兵扬、開個證明、申請個會議室.打印個材料等等口蝠。這里有個兩難的權(quán)衡器钟,一方面,資源畢竟是有限的妙蔗,甚至是涉及機密的傲霸,不能由項目組濫職濫用:另方面,就是效率,咱是一個私營企業(yè)灭必,保證項目申請資源的時候只跑一次,這樣才能比較高效狞谱。
為了平衡這一點, 一方面涉及核心權(quán)限的資源,還是應(yīng)該被公司嚴格把控禁漓,審批了才能用;另外一方面跟衅,為了提高效率,最好有個統(tǒng)一的辦事大廳, 明文列出提供哪些服務(wù),誰需要可以來申請播歼,然后就會有回應(yīng)伶跷。在操作系統(tǒng)中,也有同樣的問題秘狞,例如多個進程都要往打印機上打印文件,如果隨便亂打印進程叭莫,就會出現(xiàn)同樣一張紙, 第一行是A進程輸出的文字,第二行是B進程輸出的文字烁试,亂套了雇初。所以,打印機的直接操作是放在操作系統(tǒng)內(nèi)核里面的,進程不能隨便操作减响。但是操作系統(tǒng)也提供一個辦事大廳, 也就是系統(tǒng)調(diào)用(System Cl).系統(tǒng)調(diào)用也能列出來提供哪些接口可以調(diào)用靖诗,進程有需要的時候就可以去調(diào)用。這其中支示,立項是辦事大廳提供的關(guān)鍵服務(wù)之一刊橘。同樣,任何一個程序要想運行起來,就需要調(diào)用系統(tǒng)調(diào)用颂鸿,創(chuàng)建進程促绵。如果一個進程在用戶態(tài)下運行用戶程序,例如從文件中讀取數(shù)據(jù)。那么如果想要把控制權(quán)交給操作系統(tǒng)控制败晴,那么必須執(zhí)行一個異常指令或者 系統(tǒng)調(diào)用指令浓冒。操作系統(tǒng)緊接著需要參數(shù)檢查找出所需要的調(diào)用進程。
感謝您的閱讀位衩,希望您能攝取到知識裆蒸!加油!沖沖沖L锹俊(發(fā)現(xiàn)光僚祷,追隨光,成為光贮缕,散發(fā)光U廾铡)我是程序員耶耶!有緣再見感昼。