鳥哥的Linux私房菜之基礎學習篇
後面的一些内容都将會介紹我在鳥哥這本書上看到的對Linux作業系統學習的内容
目錄
- 計算機概論
- 軟體程式的運作
- Linux是什麼?如何學習?
計算機概論
(本章節主要介紹七個知識)
1.1-1:CPU(Central Processing Unit)
在介紹CPU之前呢首先要說的是馮 諾依曼體系。(在之前的内容中有涉及到)
CPU的架
兩大類:
(1)精簡指令集(Reduced Instruction Set Computer,RISC):
特點:
執行性能較佳。代表公司:ARM公司,代表CPU:ARM架構CPU。
目前世界上使用範圍最廣的CPU可能就是ARM架構的CPU
(2)複雜指令集(Complex Instruction Set Computer,CISC)
特點:
指令數目多而且複雜。代表公司:AMD,代表CPU:AMD架構的CPU(64位)
"64位"中的位是什麼意思?
指的是:CPU一次讀取資料的最大量。CPU一次可以讀寫64位資料。
1.1-2:記憶體(Main Memory)
特點:
軟體程式或檔案資料都要讀入内容後CPU才能利用。個人電腦記憶體主要元件為動态随機存取記憶體(Dynamic Random Access Memory,DRAM)
DRAM特點:
斷電之後資料消失。(這就是為什麼以前電腦卡就重新開機的原因)
ROM(Read Only Memory,ROM)
定義:
一個存儲晶片,沒有通電時也能夠記錄資料。BIOS界面的存儲場所。
BIOS界面(Basic Input Output System):
一個程式,寫死在主機闆上面的一個存儲晶片中
1.1-3 主機闆
作用:
負責各個電腦元件之間的通信,上面有裝置的I/O位址以及有發出IRQ中斷的作用。
什麼是I/O位址?
類似每個裝置的門牌号碼,每個裝置都有它自己的位址,不能有兩個裝置使用同一個I/O位址。
什麼是IRQ中斷(Interrupt)?
IRQ中斷請求來告知CPU該裝置的工作情況,友善關閉不用接口打開要是用的接口。(資源管理更高效)
主機闆上的另一個重要程式:CMOS
功能:
記錄用電、系統時間、CPU電壓、頻率、各項裝置的I/O位址與IRQ...
BIOS與CMOS的關聯:
BIOS是寫入主機闆上某一塊flash或者EEPROM的程式,可以在計算機啟動時調用CMOS當中的參數,并嘗試調用儲存設備中的引導程式,進一步進入作業系統當中
(BIOS程式可以修改CMOS當中的資料)
1.1-4 字元編碼系統:
計算機自能識别0和1,編碼系統相當于一個字碼對照表。
當我們輸入字元資料,該文字資料由編碼對照表将該字元轉換成數字後存入檔案。
常用英文編碼表:ASCII系統
萬國碼編碼表(非英語系國家編碼表):Unicode編碼系統(UTF-8)
軟體程式運作
沒插電的電腦是一堆廢鐵
插了電沒有軟體的運作的電腦是一堆會電人的廢鐵
由以上兩句話可以得出:軟體是電腦的靈魂。
電腦系統的分類:
1、系統軟體
2、應用程式
系統在計算機上運作的過程:
我們知道電腦的運算與邏輯判斷在CPU内部。CPU具有指令集
我們需要電腦幫忙工作就要參考指令集的内容,然後編寫讓CPU讀得懂的腳本給CPU執行
理論上講,要寫出這樣的腳本要學習機器語言(由0和1組成)
由于每台計算機CPU幾乎不一樣,程式不一樣,參考的指令集不一樣。理論上講腳本不具備可移植性。
是以計算機科學家創造了程式語言和編譯器。 人類通過編寫程式語言經過編譯器轉譯成計算機看得懂的機器碼
(目前常見的編譯器:C、C++、Java、Fortran等)
有了這些語言以後僅僅隻是解決了計算機能讀懂的問題。要講寫好的内容放到記憶體當中給CPU計算還需要自行配置設定一個記憶體區讓自己寫的資料填上去,這時候就需要了解内容的位址是如何定位的等知識。複制且龐大的知識量讓很多人望而卻步
為了解決硬體方面需要重複編寫的問題,就誕生了作業系統(Operating System,OS)(非常重要)
作業系統的本質:
一組程式
作業系統的作用:
1、驅動系統中所有硬體。(作業系統的核心(Kernel))
2、系統調用(System Call)(管理電腦的所有活動)
(核心程式放置到記憶體當當中的區塊是受保護的,并且啟動後就一直常駐在記憶體中)
核心的功能:
(1)系統調用接口(System call interface)
(2)程序管理(Process control)
(3)記憶體管理(Memory management)
(4)檔案系統管理(Filesystem management)
(5)裝置驅動(Device drivers)
由于硬體由核心管理,要開發軟體就要去了解核心相關功能,這樣等價于從去了解硬體函數轉變成了參考核心功能,性質沒變。
為了解決這個問題,作業系統會提供一套應用程式程式設計接口(Application Programming Interface,API)給程式員開發軟體。隻要工程師遵守該API即可開發軟體。
例子:
學C語言隻需要參考C語言函數即可,不必考慮核心相關功能,因為核心系統調用接口會主動地将C語言的相關文法轉換成核心可以了解的人物函數,核心就能順利運作該程式了。
到這裡可以看到計算機的一個完整架構(由内而外):
硬體(最裡層)
核心(調用硬體驅動,系統的調用。)
系統調用層(API接口所存在的層級,遵循公認的系統調用參數即可開發軟體)
應用程式(開發出的軟體,殼程式)
作業系統其實就是核心及其提供的接口工具
應用程式
定義:
參考作業系統提供的API所開發出來的軟體
Linux是什麼?
定義:
Linux就是一組軟體,是一個作業系統(包含核心以及系統調用層)
特點:
開放源代碼,這裡的開源不等于免費。免費是免費,開源是開源。
開源的定義:
1、取得軟體與源代碼:根據自己的需求來使用這個自由軟體
2、複制:自由地複制該軟體
3、修改:可以将源代碼進行修改,使之适合自己
4、再發行:可以将修改過後的軟體再度自由發行
5、回饋:将修改過的程式代碼回饋于社群
6、修改授權:不能将一個GPL授權的自由軟體,在修改後而将他取消GPL授權
7、單純銷售:不能單純銷售自由軟體
應用場景:
1、企業
2、個人
3、雲應用
如何學習Linux?
鳥叔的建議:
1、基于指令行,不要基于X-windows學習
2、計算機概論與硬體相關知識(了解)
3、從Linux的安裝與指令學起
4、Linux作業系統的基礎技能
5、學會vi文本編輯器(重點)
6、Shell與Shell腳本的學習(重點)
7、會軟體管理
8、網絡基礎的建立
9、一本好的指導書(要親自看過内容并且知道可以接受)