鳥哥的Linux私房菜基礎學習篇 第0章與第1章的重點探索
目錄
- 鳥哥的Linux私房菜基礎學習篇 第0章與第1章的重點探索
- 前言
- 一、計算機概論
- 1.知識基礎
- 2.知識初階
- 3.知識進階
- 二、Linux是什么與如何學習
- 1.需要開始了解linux的一些概念
- 2.所謂Linux的版本
- 3.Linux當前角色
- 4.Linux的學習
- 總結與學習路上可能需要的網站
前言
筆者個人正在進行Linux的學習,以下是幫助閱讀鳥哥私房菜的各位摘錄的一些重點,以免遺忘哈哈,其實每一章最后鳥哥也都會列出相關重點,這里可能也是站在筆者個人角度選出的一些比較重要的部分進行的整理,(當然少不了從最基礎的部分開始)
一、計算機概論
1.知識基礎
計算機是:接受用戶輸入的命令與資料,經由中央處理器的算數與邏輯單元運算處理后,產生或存盤成有用的資訊,
電腦硬體的五大單元:輸入單元、輸出單元、CPU內部的控制單元(協調各周邊組件與各單元間的作業)、算術邏輯單元(負責程式運算與邏輯判斷)與記憶體,
CPU讀取資料都從記憶體而來,記憶體中的資料則是從輸入單元而來,CPU處理完后的資料要先寫回記憶體,最后資料才從記憶體傳到輸出單元,
兩種CPU架構:精簡指令集(RISC)(代表則為ARM CPU系列,目前世界上適用范圍最廣的CPU可能就是ARM架構)和復雜指令集(CISC)(被大量用于個人電腦)
位(bit):指的是CPU一次讀取資料的最大量(64位CPU代表CPU一次可以讀寫64位資料)
字長:CPU每次能夠處理的資料量,現在電腦所說的32位64位就是這個概念
主板:主機機箱內連接其他重要設備的,宛如人的神經系統
要由過去的經驗來判斷事情時,也要講硬碟挪到目前的記憶體當中再交由CPU判斷,比如是將經驗放入當前的記憶中,再交由大腦判斷,
電腦的算力出來CPU指令集設計的優劣之外,主要還是由速度決定,
二進制與十進制:資料容量采用二進制記錄,速度單位則是常用十進制
2.知識初階
北橋與南橋:早期芯片采用的兩個網橋用來控制各組件的通信,北橋連接速度較快的CPU、記憶體、顯卡等組件,南橋負責連接速度較慢的設備介面,包括硬碟、USB設備、網卡等,目前北村控制器整合到CPU了,CPU與記憶體之間的通信直接可以交流,不會消耗更多帶寬,現在也沒有所謂的北橋了,都整合到了CPU中,
CPU的頻率:CPU每秒進行作業的次數,可以用來比較CPU性能,外頻*倍頻=CPU的頻率,外頻值CPU與外部組件進行資料傳輸時的速度,倍頻值CPU內部用來加速作業性能的一個倍數,調高外頻想要達到超頻時可能會造成宕機,現在Intel的CPU會主動幫你超頻,
超執行緒:在每一個CPU中將重要的暫存器分成兩組,而讓程式分別使用這兩組暫存器
動態隨機存取記憶體(DRAM):個人電腦的記憶體主要組件,揮發性記憶體,只有在通電時才能記錄和使用,
二級高速快取(L2 Cache):CPU內對于某些常用的程式或資料的放置,以免到記憶體中重新讀取,需要用到靜態隨機存取記憶體(SRAM)幫忙,DRAM達不到與CPU頻率相同的速度
只讀存盤器(ROM):存盤芯片再沒有通電時也能記錄資料,非易失性存盤,儲存了BIOS這個程式,系統啟動時最先會去讀取它,
韌體:固定在硬體上的控制軟體,像軟體一樣一個被電腦所執行的程式,然而對硬體內部更加重要
顯卡與GPU:對于影像影像的顯示重點在于解析度與顏色深度,顯卡中集成了顯存來儲存這部分資訊,GPU是來源于所謂嵌入在顯卡上的一個3D加速芯片,幫助提升顯卡的算力
顯卡與電腦螢屏的連接介面:特別注意的是HDMI,常見好用,可以同時傳輸影像與聲音,
扇區、磁道與柱面:是傳統硬碟讀寫資料的相關概念,驅動馬達轉動碟片后通常資料從硬碟外圈開始往內寫,
固態硬碟(SSD):通過閃存直接讀寫,不會造成嚴重的磁盤讀取延遲,壽命不長只有幾年,但是非常快,
緩沖存盤器:硬碟上用于將硬碟內常用的資料快取起來的一個記憶體,
擴展卡與介面:特別注意的是主板上針對擴展卡的插槽可能有的不帶金手指,是偽裝成x16的x8或x4等,這便無法發揮擴展卡的全部能力,另外擴展卡性能在按抽到左上方與CPU直連的那幾個插槽性能最佳,
I/O與IRQ中斷請求:I/O是各設備的門牌號,IRQ是各門牌連接到郵件中心的專門路徑,用來告知CPU各設備的作業情況,一邊CPU分配任務,
主板的BIOS與CMOS:CMOS主要記錄主板上面的重要引數,包括系統時間、CPU電壓與頻率、各項設備的I/O與IRQ,需要用電記錄,也因此主板上有電池,BIOS是計算機啟動時會去加載這些引數的一個主板上某一塊flash或EEPROM的程式,
主機電源:挑選高轉換率的電源,以免電源自身玩掉太多電力
最終選購時注意速度的快慢與整體系統最慢的那個設備有關,
3.知識進階
作業系統:作業系統其實也是一組程式,其重點在于管理電腦的所以活動以及啟動系統中的所有硬體,它的出現是為了解決硬體方面老是需要重復撰寫句柄的問題,應用程式作為殼程式,而硬體位于核心的話,為了聯系二者便需要作業系統,作業系統中的系統呼叫服務于應用程式,而內核(kernel)則與硬體緊密聯系,做管理硬體的操作(內核層直接參考硬體規格寫成,同一個作業系統程式不能在不一樣的硬體架構下運行)
系統呼叫(System Call):作業系統通常會提供一套應用程式編程介面(API)給程式員來開發軟體,內核只會進行電腦系統的資源分配,需要在上面有應用程式的提供,用戶才能夠使用系統,為了保護內核,有為了程式員開發軟體更容易,就有了這樣一套API,即系統呼叫層,
內核的功能:系統呼叫介面,行程管理,記憶體管理,檔案系統管理,設備驅動(看到后面的章節應該會有詳細介紹)
作業系統通常會提供一個API給硬體開發商,讓他們可以根據這個介面,設計可以驅動硬體的驅動程式,這樣作業系統與新出來的硬體就可以對應起來了,
二、Linux是什么與如何學習
1.需要開始了解linux的一些概念
軟體移植:經過改版后的作業系統能夠在另一個硬體平臺上運行,linux是開源的作業系統,這意味著它的程式代碼可以被修改成適合在各種硬體架構師運行,具有“可移植性”,
UNIX到linux:UNIX是linux的老大哥,在真正進展到linux之前,經歷了Minix,GNU計劃,Internet,POSIX(用于規范內核與應用程式間的介面)及虛擬團隊的多方貢獻,不斷演變進步最終產生了linux,期間GPL(General Public License)是解決了授權問題的重要宣告,linux內核使用GPLv2的宣告
多任務的實作:具有多任務功能的CPU在同一個時間點會在不同的程式間切換(CPU的作業頻率大小某種程度上可以反映這種能力的強弱),除了硬體(主要是CPU)需要能夠具有多任務的特性外,作業系統也需要支持這個功能在一個CPU上同時啟動兩個以上的作業,要比一個個執行更耗時,也因此開發商要整合多個CPU核心于一個芯片中,
小型單板機(樹莓派/香蕉派)與移動設備(智能手機、平板電腦)的ARM架構,大多也是使用Linux的內核,
2.所謂Linux的版本
Linux的內核版本:奇偶數命名版本在3.0版后不再使用,特別注意判斷你的Linux是否位長期支持版本,這意味著是否一直會有內核維護者進行程式代碼的更新維護(可以使用“uname-r”來查看內核版本)
鏈接: link.內核的版本參見這里
Linux的發行版本:內核版本與發行版本并不相同,你常用的Linux應該說明位發行版,以CentOS這個發行版來說,應該說“我用的Linux是CentOS這個發行版,版本為7.x”,單說Linux,其實就是一個作業系統最底層的內核及其提供的內核工具,為了讓用戶能夠接觸到Linux,于是很多商業公司或非營利團體,就將Linux內核(及其工具)與可運行的軟體整合起來,加上自己具有創意的工具程式,這個工具程式可以讓用戶以CD/DVD或通過網路直接安裝/管理Linux系統,這個“內核+軟體+工具+可完全安裝程式”的東西,稱之為Linux發行版(Linux Distribution),而他們選擇的軟體重復性相當高且非常知名,
下面是幾個主要的Linux發行版官方網址:
Red Hat:鏈接: link.
SUSE:鏈接: link.
Fedora:鏈接: link.
CentOS:鏈接: link.
Debian:鏈接: link.
Ubuntu:鏈接: link.
Gentoo:鏈接: link.
個人計算機建議社區版,服務器建議商業版,
Linux在中國:(好像是臺灣地區的老師幫忙漢化整理后的網站)B2D:鏈接: link.
鳥哥建議我們先學習以RPM軟體管理為主的RHEL、Fedoras、SUSE、CentOS等用戶較多的版本,其中CentOS還號稱完全兼容商業版
3.Linux當前角色
手持系統與嵌入式系統:手持系統中自然要提Android作業系統,它其實是Linux內核的分支,只是專門用來針對手機或平板這類的ARM機器所設計的,嵌入式系統則是針對像家電產品、數碼相機這類,理論上人應該不會修改到這個作業系統,所以稱嵌入式系統
云程式:許多大型互聯網服務提供商(ISP)提供了所謂的共有云讓企業用戶或飛人用戶來使用ISP的虛擬化產品,云程式的底層是Linux,而云程式搭建出來的虛擬機,大多也是Linux作業系統
虛擬化:在一臺物理主機上面模擬出多個邏輯上完全獨立的硬體,這個假的虛擬出來的硬體主機,可以用來安裝一臺邏輯上完全獨立的作業系統,
像樹莓派、香蕉派這樣的終端設備其實就是一臺小型的計算機,加上USB鍵盤、滑鼠與HDMI的螢屏,立刻就是可以讓小朋友學習程式語言的環境,再加上通過網路去取得具有更強大運算資源的云端虛擬機,可就不得了了,
4.Linux的學習
1.計算機概論與硬體相關知識
2.先從Linux的安裝與命令學起
3.Linux作業系統的基礎技能
4.務必學會vi文本編輯器
5.Shell(所謂命令列模式就是一個名為“Shell”的軟體)與Shell腳本的學習
6.一定要學會軟體管理
7.網路基礎的建立
8.網站的搭建
總結與學習路上可能需要的網站
這里放的其實是Netman大大給的建議:
1.有系統的設計檔案目錄
2.養成一個做記錄的習慣,把錯誤資訊和引發狀況以及解決方法記錄清楚,同時最后歸類及定期整理
3.備份網路上看到的任何好文章,同時定好題目,歸類存盤
4.作為一個開發者,要機器遷就人
……
最后放出遇到問題可能需要的網站:
The LinuxDocumentation Project:鏈接: link.幾乎列出了所有Linux上可以看到的文獻資料,各種HowTo的做法,是英文的
鳥哥網站:鏈接: link.
酷學園討論區:鏈接: link.
鳥哥的私房菜館討論區:鏈接: link.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/255896.html
標籤:其他
