天天看點

Linux作業系統基礎

大綱

一、計算機概念簡介

二、計算機體系結構

三、計算機常見術語

四、作業系統相關

五、擷取指令的使用幫助

六、Man文檔章節

七、根檔案系統

一、計算機概念簡介(來源于MBA智庫)

計算機的全稱為電子計算機,俗稱電腦,是一種能夠按照程式運作,自動、高速處理海量資料的現代化智能電子裝置。由硬體和軟體所組成,沒有安裝任何軟體的計算機稱為裸機。常見的型号有台式計算機、筆記型電腦,較先進的計算機有生物計算機、光子計算機、量子計算機等。

  電腦的學名為電子計算機,是由早期的電動電腦發展而來的。1946年,世界上出現了第一台電子數字計算機“ENIAC”,用于計算彈道。是由美國賓夕法尼亞大學莫爾電工學院制造的。1956年,半導體電子計算機誕生了,這是第二代電子計算機。隻要幾個大一點的櫃子就可将它容下,運算速度也大大地提高了。1959年出現的是第三代內建電路計算機。最初的計算機由約翰·馮·諾依曼發明(那時電腦的計算能力相當于現在的電腦),有三間庫房那麼大,後逐漸發展。   

  1946年面世的“ENIAC”,它主要是用于計算彈道。是由美國賓夕法尼亞大學莫爾電氣工程學院制造的,它的體積龐大,占地面積170多平方米,重量約30噸,消耗近150千瓦的電力。顯然,這樣的計算機成本很高,使用不便。這個說法被計算機基礎教科書上普遍采用,事實上在1973年根據美國最高法院的裁定,最早的電子數字計算機,應該是美國愛荷華州立大學的實體系副教授約翰·阿坦那索夫和其研究所學生助手克利夫·貝瑞(Clifford E. Berry ,1918-1963)于1939年10月制造的"ABC"(Atanasoff- Berry-Computer)。之是以會有這樣的誤會,是因為“ENIAC”的研究小組中的一個叫莫克利的人于1941年剽竊了約翰·阿坦那索夫的研究成果,并在1946年時,申請了專利。由于種種原因直到1973年這個錯誤才被扭轉過來。後來為了表彰和紀念約翰·阿坦那索夫在計算機領域内作出的偉大貢獻,1990年美國前總統布什授予約翰·阿坦那索夫全美最高科技獎項----“國家科技獎”。

如果有興趣可以看下wiki中對于計算機硬體曆史的介紹:傳送門

  • 運算器
  • 控制器
  • 存儲器
  • 輸入裝置
  • 輸出裝置

總結:

  • 中央存儲器:Central Processing Unit,簡寫CPU
  • 運算器:負責數學運算和邏輯運算
  • 控制器:負責運算器去存儲器讀取資料
  • 存儲器:這裡的存儲器其實指的就是記憶體,記憶體是平面編址的
  • 輸入計算機最主要的部件是運算器,控制器和存儲器,輸入輸出裝置隻是輔助計算機運作,友善使用者與計算機更好的互動

1. API(Application Programming Interface)

應用程式設計接口:為‘電腦作業系統(Operating system)’或‘程式庫’提供給應用程式調用使用的代碼,其主要目的是讓應用程式開發人員得以調用一組例程功能,而無須考慮其底層的源代碼為何、或了解其内部工作機制的細節。API本身是抽象的,它僅定義了一個接口,而不涉及應用程式在實際實作過程中的具體操作,簡單的說就是将一個或多個系統調用的功能封裝起來提供一個更進階的并且能完成特定功能的子產品。

2. ABI(Application Binary Interface)

應用程式二進制接口描述了應用程式(或者其他類型)和作業系統之間或其他應用程式的低級接口,即程式的運作接口或者格式

3. 系統調用(System Call)

系統調用,又稱為系統呼叫,指運作在使用者空間的程式向作業系統核心請求需要更高權限運作的服務。系統調用提供了使用者程式與作業系統之間的接口。大多數系統互動式操作需求在核心态執行。如裝置IO操作或者程序間通信。簡單的說就是将底層硬體的計算能力抽取出來并且向上為使用者提供一個統一的接口,稱之為系統調用。

4. 中斷(Interrupt)

中斷是指處理器接收到來自硬體或軟體的信号,提示發生了某個事件,應該被注意,這種情況就稱為中斷,中斷是用以提高計算機工作效率、增強計算機功能的一項重要技術。

5. 中斷向量(Interrupt vector)

早期的微機系統中将由硬體産生的中斷辨別碼(中斷源的識别标志,可用來形成相應的中斷服務程式的入口位址或存放中斷服務程式的首位址)稱為中斷向量。

6. 局部性原理(Locality of Reference)

局部性原理表現為:

  • 時間局部性:如果程式中的某條指令一旦執行,則不久之後該指令可能再次被執行;如果某資料被通路,則不久之後該資料可能再次被通路
  • 空間局部性:一旦程式通路了某個存儲單元,則不久之後。其附近的存儲單元也将被通路。

7. SDN(Software Defined Network)

軟體定義網絡,是Emulex網絡一種新型網絡創新架構,是網絡虛拟化的一種實作方式,其核心技術OpenFlow通過将網絡裝置控制面與資料面分離開來,進而實作了網絡流量的靈活控制,使網絡作為管道變得更加智能。

8. 任務結構(task_struct)

task_struct結構是程序實體的核心,Linux核心通過該結構來控制程序:首先通過其中的排程資訊決定該程序是否運作;當該程序運作時,根據其中儲存的處理機狀态資訊來恢複程序運作現場,然後根據虛拟記憶體資訊,找到程式的正文和資料;通過其中的通信資訊和其他程序實作同步、通信等合作。幾乎所有的操作都要依賴該結構,是以,task_struct結構是一個程序存在的唯一标志。

1. 作業系統(英語:operating system,縮寫:OS)是管理計算機硬體與軟體資源的計算機程式,同時也是計算機系統的核心與基石。作業系統需要處理如管理與配置記憶體、決定系統資源供需的優先次序、控制輸入與輸出裝置、操作網絡與管理檔案系統等基本事務。作業系統也提供一個讓使用者與系統互動的操作界面

2. 作業系統核心功能:

  • 程序管理(Processing management)
  • 記憶體管理(Memory management)
  • 檔案系統(File system)
  • 網絡通信(Networking)
  • 安全機制(Security)
  • 使用者界面(User interface)
  • 驅動程式(Device drivers)

3. 作業系統組成

Linux作業系統基礎

4. Linux系統架構圖:

Linux作業系統基礎
Linux作業系統基礎

計算機體系結構微觀圖

Linux作業系統基礎

5. 硬體架構

  • ARM -->隻生産知識産權,不生産具體的硬體
  • x86 -->Intel
  • x64 -->Intel
  • 安騰 -->原先屬于HP,後賣給Intel
  • alpha -->HP
  • UltraSparc -->SUN公司,性能蠻好
  • Power -->IBM公司,性能超強
  • M68000, M68K -->摩托羅拉生産
  • PowerPC -->IBM,APPLE,MOTO三家聯合生産用于PC機

6. Linux的哲學思想

  • 由目的單一的小程式組成;組合小程式完成複雜任務
  • 一切皆檔案
  • 盡量避免捕獲使用者接口
  • 配置檔案儲存為純文字格式
  • 提供機制,而非政策

7. 計算機史兩個重要的實驗室

  • Xerox PARC:個人電腦、雷射列印機、滑鼠、以太網,圖形使用者界面、Smalltalk、頁面描述語言Interpress(PostScript的先驅)、圖示和下拉菜單、所見即所得文本編輯器、語音壓縮技術
  • AT&T Bell:半導體,雷射,光通信,資料網絡,數字傳輸與交換,蜂窩電話技術,通信衛星,數字信号處理(DSP),按鍵電話,Unix作業系統,C語言

8. Shell種類

  • GUI:Graphical User Interface ,Linux常見三種:Gnome,KDE,Xfce
  • CLI:Command-Line Interface,Linux常見的有sh,bash,csh,ksh,zsh,tcsh

9. 指令的使用格式

# Command  [Options] Arguments

Options:定義指令的執行特性或執行方式

Arguments:定義指令的作用對象

Examples:

[root@soysauce ~]# ls -lh /root/
total 8.0K
-rw-r--r-- 1 root root 208 Jul  6 13:41 id_rsa_1024.pub
-rwxr-xr-x 1 root root 518 Oct 26 21:33 iptables.sh
[root@soysauce ~]#      

10. AAA協定概念

  • Authentication:認證是對使用者的身份進行驗證,判斷其是否為合法使用者
  • Authorization:授權是對通過認證的使用者,授權其可以使用哪些服務 
  • Accounting:審計是記錄使用者使用網絡服務的資源情況,這些資訊将作為計費的依據

11. 密碼複雜性規則

  • 使用四種(大寫,小寫,數字,特殊字元)類别字元中的至少三種
  • 足夠長,大于7位
  • 使用随機字元串
  • 定期更換
  • 循環周期足夠大

12. 魔數(Magic Number)

很多類型的檔案,其起始的幾個位元組的内容是固定的(或是有意填充,或是本就如此)。根據這幾個位元組的内容就可以确定檔案類型,是以這幾個位元組的内容被稱為魔數 (magic number)。此外在一些程式代碼中,程式員常常将在代碼中出現但沒有解釋的數字常量或字元串稱為魔數 (magic number)或魔字元串。

13.稀疏磁盤映像

普通的磁盤映像檔案 (.dmg)的大小與其代表的實際磁盤是一樣的(盡管其中尚有空間未使用),而稀疏磁盤映像檔案 (.sparsep_w_picpath) 的大小僅為實際使用資料的磁盤空間。

14.自由軟體

  • 自由使用:不論目的為何,有使用該軟體的自由
  • 自由學習和修改:有研究該軟體如何運作的自由,并且得以修改該軟體來符合使用者自身的需求。擷取該軟體之源碼為達成此目的之前提
  • 自由分發:有重新散布該軟體的自由,是以每個人都可以借由散布自由軟體來敦親睦鄰
  • 自由建立衍生版:有改善再利用該軟體的自由,并且可以發表修訂後的版本供公衆使用,如此一來,整個社群都可以受惠。如前項,擷取該軟體之源碼為達成此目的之前提

15. Linux終端類型

  • 串行終端:/dev/ttyS#
  • 實體終端:/dev/console,計算機剛啟動時候的是實體終端,後面出現登陸提示符就是虛拟終端
  • 虛拟終端:/dev/tty# Ctrl+Alt+F[1-6],圖形界面:Ctrl+Alt+F7 startx &  
  • 僞終端(模拟終端):/dev/pts/#,①遠端連接配接 ②圖形界面下打開的指令行界面 

16.Linux路徑類型

  • 絕對路徑:從頂層開始的路徑
  • 相對路徑:從目前位置開始的路徑

17.Linux檔案系統的特性

  • 檔案名可以使用除/以外的任意字元;但總長度不能超過255個
  • 嚴格區分大小寫;abc, Abc

18.加密方法

  • 對稱加密:加密和解密使用同一個密碼,DES, 3DES, AES
  • 公鑰加密:每個密碼都成對兒出現,一個為私鑰(secret key),一個為公鑰(public key),DSA,RSA
  • 單向加密,散列加密:提取資料特征碼,常用于資料完整性校驗,特點:①雪崩效應 ②定長輸出 ③不可逆

    MD5:Message Digest, 資訊摘要算法,128位定長輸出

    SHA1:Secure Hash Algorithm, 安全的hash算法,160位定長輸出

1. Linux指令基本分為兩類

  • 内部指令,檢視幫助文檔辦法:help Command
  • 外部指令:檢視幫助文檔方法:①Command --help ②man Command ③info Command

2. 檢視指令為内部指令還是外部指令的方法:type

[root@soysauce ~]# type cd
cd is a shell builtin            # 說明此指令為内部指令
[root@soysauce ~]# type find
find is /usr/bin/find            # 說明此指令為外部指令      

1. Man文檔各章節

  • 1:使用者指令(/bin, /usr/bin, /usr/local/bin)
  • 2:系統調用
  • 3:庫使用者
  • 4:特殊檔案(裝置檔案)
  • 5:檔案格式(配置檔案的文法)
  • 6:遊戲
  • 7:雜項(Miscellaneous)
  • 8: 管理指令(/sbin, /usr/sbin, /usr/local/sbin)

2. 指令使用格式中的符号含義

  • <>:必選
  • []:可選
  • ...:可以出現多次
  • |:多選一
  • {}:分組

3. Man文檔使用幫助各字段含義:

  • NAME:指令名稱及功能簡要說明
  • SYNOPSIS:用法說明,包括可用的選項
  • DESCRIPTION:指令功能的詳盡說明,可能包括每一個選項的意義
  • OPTIONS:說明每一個選項的意義
  • FILES:此指令相關的配置檔案
  • BUGS:
  • EXAMPLES:使用示例
  • SEE ALSO:另外參照

4. 翻屏方法:

  • 向後翻一屏:SPACE
  • 向前翻一屏:b
  • 向後翻一行:ENTER
  • 向前翻一行:k
  • Ctrl+d: 向檔案尾部翻半屏
  • Ctrl+u: 向檔案首部翻半屏

5. 查找方法:

  • /keyword: 向檔案尾部搜尋
  • ?keyword:向檔案首部搜尋
  • n:跟搜尋指令相同的方向(下一個)
  • N:路搜尋指令相反的方向(上一個)

6. 退出Man文檔方法: q退出

7.檢視某關鍵字在那些段落有使用幫助

(1). whatis Keyword 精确查找

[root@soysauce ~]# whatis passwd
passwd               (1)  - update user's authentication tokens
passwd               (5)  - password file
passwd              (rpm) - The passwd utility for setting/changing passwords using PAM
passwd [sslpasswd]   (1ssl)  - compute password hashes      

 ps:如果whatis的資料庫尚未生成,可以使用makewhatis手動進行

(2). man -k Keyword 模糊查找

[root@soysauce ~]# man -k lvre
lvreduce             (8)  - reduce the size of a logical volume
lvremove             (8)  - remove a logical volume
lvrename             (8)  - rename a logical volume
lvresize             (8)  - resize a logical volume      

(3). man -M /path/to/mandocument command

[root@soysauce ~]# man -M /usr/share/man/   passwd      
  • /bin: 存放可執行的二進制程式,管理者和普通使用者都可以使用
  • /sbin:管理者才能執行的指令
  • /boot:存放系統引導檔案:核心、ramfs檔案、bootloader(grub)
  • /dev:裝置檔案存放目錄
  • /etc:配置檔案的集中存放目錄

      /etc/sysconfig:系統級别的應用

      /etc/init.d:系統服務腳本

  • /home :普通使用者,預設在/home下有一個與其名稱同名目錄,作為使用者的家目錄
  • /root:管理者的家目錄
  • /lib,/lib64:庫檔案
  • /media:專用挂載位置,通常用來挂載便攜式裝置,例如CD光牒,u盤
  • /mnt:專用挂載位置,挂載額外的儲存設備,例如另外的硬碟
  • /misc:雜項,備用目錄
  • /opt:可選目錄,但通常用來安裝第三方軟體
  • /proc:所顯示的檔案都不是檔案,僞檔案系統,運作中的核心參數的映射
  • /sys:僞檔案系統,系統級别的用于配置硬體裝置相關的參數
  • /srv:為服務提供資料存放位置的
  • /tmp:臨時檔案系統:預設存放30天
  • /usr:universal shared read-only 所有遵循協定的系統都可以使用,readonly 隻讀

      /usr/include:頭檔案存放位置

  • /var:經常發生變化的檔案
  • 作業系統自身運作使用的

      /bin: 存放可執行的二進制程式,管理者和普通使用者都可以使用

      /sbin:管理者才能執行的指令

  • 運作正常功能的程式存放位置

      /usr/bin

      /usr/sbin

  • 用來存放第三方軟體的程式

       /usr/local/bin

      /usr/local/sbin

  • 系統調用和普通庫函數調用非常相似,隻是系統調用由作業系統核心提供,運作于核心核心态,而普通的庫函數調用由函數庫或使用者自己提供,運作于使用者态,庫可能并不包含系統調用,也可能包含多個系統調用
  • CPU捕獲io事件方法: 輪詢(poll),中斷(interrupt)
  • 庫沒有程式的執行入口,不能獨立執行,隻能被調用執行,可以提供一個統一的調用接口
  • 普通應用程式是不能直接與硬體互動,要想使用硬體的功能,必須先得像核心發起系統調用,由核心負責與硬體互動,再将結果傳回給應用程式
  • 建立一個虛拟機其實就是給一個虛拟機配置設定虛拟的硬體資源的過程
  • 把問題空間中的問題映射為解空間中解決辦法的過程就叫做程式設計
  • 進階語言程式編譯過程:預處理,編譯,彙編,連結
  • 程序:由父程序fork自身而來的,fork過程是由父程序申請,核心負責生成task_struct
  • 有些程式可以不調用庫,直接在核心上運作
  • 1block=2^n個扇區
  • 檔案名和檔案類型都存放于目錄中
  • 驅動程式是讓核心能夠更好的結合硬體裝置的特性讓硬體裝置工作起來的程式
  • 核心運作在cpu的兩種情況:1.程序間切換時  2.程序執行了特權指令
  • 作業系統依賴硬體架構,應用程式依賴系統架構
  • cpu能尋址記憶體範圍取決于其字長
  • 存儲器由兩段組成:ROM,RAM  (實體視角)
  • Cache Is the king
  • init是所有使用者空間程序的父程序
  • 變量實際上是一段命名的記憶體空間,變量名是這個記憶體空間的引用名稱,指派就是存資料的過程
  • 資料類型定義了資料的存儲格式與占據的空間大小
  • 程式=資料+指令,資料和指令隻有被加載到記憶體中才能被cpu所通路
  • Linux下換行符為$,windows下換行符為\n$(回車+換行符)
  • cpu的保護模式:4個環,最裡面的環0為特權環,隻允許核心運作操作硬體等特權指令,環3隻允許普通程式運作普通指令 加減乘除等
  • 指令查找順序:事先通過一個變量(PATH)設定好了多個路徑,當使用者輸入指令時,shell會自動到這些路徑(由左向右)下檢視與指令名稱相同的可執行檔案查找到并執行過的指令會被儲存至一個hash查找表中,可以使用hash指令檢視此表
  • 将底層的細節隐藏起來,并提供一個統一的規範的,簡介的接口提供出來,這就是作業系統的用途
  • 将底層硬體的計算能力抽取出來,向上提供一個統一的接口,這就叫做系統調用
  • 在啟動的時候需要使用檔案,需要載入記憶體,有一個分區作為起始分區,這個分區被稱為根分區
  • ①Windows回車換行:\r\n也即^M$ ②Linux/Unix換行:\n也即$③Mac回車:\r也即^M
  • 工作頻率:cpu>寄存器>一級緩存>二級緩存>三級緩存>記憶體
  • 堆(heap):存放非變量的記憶體資料空間 棧(stack):存放本地變量和靜态變量

作業系統曆史(英文版):http://www.osdata.com/kind/history.htm

繼續閱讀