天天看點

鳥哥的Linux私房菜之基礎學習篇

鳥哥的Linux私房菜之基礎學習篇

後面的一些内容都将會介紹我在鳥哥這本書上看到的對Linux作業系統學習的内容

目錄

  1. 計算機概論
  2. 軟體程式的運作
  1. 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、一本好的指導書(要親自看過内容并且知道可以接受)