作業系統與Linux

哈哈哈hh 發表於 2022-07-11
Linux

映象下載、域名解析、時間同步請點選  阿里雲開源映象站

一、作業系統

OS(Operating System)既作業系統,是一個包含通用目的或者功能的軟體程式,這些通用目的包含了以下幾項:

  • 硬體驅動
  • 記憶體管理
  • 程式管理
  • 網路管理
  • 安全管理
  • 檔案管理

OS主要有三大分類,既伺服器OS、桌面OS以及移動裝置OS,常用的如CentOS和Windows Server等都屬於伺服器OS;Windows10、Mac OS和Fedora都是屬於桌面OS;移動裝置上最常使用的Android 和 IOS則屬於移動裝置OS

file

作業系統與硬體、應用軟體與作業系統以及使用者與應用軟體的互動是通過介面來進行的,而關於開發介面有兩個標準既ABI、API以及POSIX

  • ABI:Application Binary Interface,ABI描述了應用程式與OS之間的底層介面,允許編譯好的程式碼在使用了相容ABI系統中執行
  • API:Application Programming Interface,API定義了原始碼與庫之間的介面,同樣的原始碼可以在支援API的任何系統中編譯和執行
  • POSIX:Portable Operating System Interface,可移植作業系統介面,IEEE(電氣與電子工程師協會)在作業系統上定義的一些類API標準,POSIX相容的程式可以在其他POSIX作業系統編譯執行

Windows中的程式的執行格式一般是exe,其中.dll結尾的是程式依賴的一些動態庫,.lib結尾的則是靜態庫。Linux中的程式是ELF,.so是指動態編譯,.a是指靜態編譯

file

User Space:使用者空間既使用者程式的執行空間,使用者空間是隔離的,既使用者程式的崩潰不會對作業系統和核心有任何影響,使用者空間執行的程式只能進行簡單的運算,無法直接呼叫系統資源,必須通過介面(System Call)向核心發出指令,如檔案開啟關閉以及寫入等操作

Kernel Space:核心空間既Linux核心的執行空間,可以執行任意命令,呼叫一切系統資源

Context Change:上下文切換,指的是單核CPU情況下,CPU有時在執行使用者空間的任務有時在執行核心空間的任務,這種任務或者是工作區域的切換就是上下文切換,切換時必須要儲存當前任務狀態之後,才能切換到下一個任務,上下文切換是不可避免的,但是減少上下文切換的次數可以提供效能

作業系統上執行的程式語言的分類如下:

  • 低階語言:機器語言0和1,組合語言和機器語言一一對應,與硬體相關的特有程式碼和驅動程式開發
  • 中級語言:如C語言,偏向於系統級應用和驅動程式的開發
  • 高階語言:Python、Java、Go、PHP等,偏向於應用程式開發

二、Linux

作業系統主要有三類既伺服器OS、桌面OS和移動OS,其中伺服器OS有三大作業系統級Windows、Linux和Unix,其中Linux是佔有率最高的伺服器OS

file

Unix的歷史

  • 1965年前後,起源於Multics,Multics是由貝爾實驗室、MIT以及通用電氣公司GE共同發起的多路資訊計算系統(Multics)計劃,旨在讓主機的資源可以提供更多的使用者來使用。後來貝爾實驗室退出了該計劃
  • 1969年Unix的雛形UNICS出現
  • 1973年正式命名為Unix
  • 1977年釋出了Berkeley Software Distribution,是Unix的衍生系統,由加州大學伯克利分校釋出
  • 1979年釋出了System V架構版權宣告,HP-UNIX IBM AIX 收回版權,不對學生提供原始碼
  • 1984年Minix作業系統,由阿姆斯特丹自由大學計算機教授Andrew S.Tanenbaum釋出

由於Unix版權收回,1984年Richard Stallman發起並建立了GNU,目標是變了大量基於Unix的自由軟體,後釋出了為GPL許可證,允許使用者任意複製、傳遞、修改以及在釋出,再後來釋出了LGPL協議,LGPL協議更為寬鬆,允許不公開全部原始碼

Linux釋出

1991年10月5日,Torvalds釋出了自行編寫的完全自由免費的核心FREAX,基於GPL協議,一個完成的類Unix系統如CentOS、Ubuntu等就是Linux核心+GNU自由軟體組成

Linux的核心版本由以下幾部分組成:

  • 主版本號
  • 次版本號
  • 末版本號
  • 編譯版本號
  • 廠商版本號

file

當前Linux核心的最新穩定版是5.18

file

Linux有眾多發行版,如REDHAT、Debian、Android等,Linux發行版的名稱和版本號由發行版的維護者決定

Linux的哲學思想

  • 一切皆檔案(包括硬體)
  • 小型、單一用途的程式
  • 連結程式,既共同完成複雜的任務
  • 避免令人困惑的使用者介面
  • 配置資料儲存在文字中

開源協議

開源既OpenSource,將軟體和原始碼提供給所有人,可以修改和建立衍生軟體

開源許可協議大概共有上百種,其中MIT是最寬鬆的開源協議

file

Linux的目錄

file

目錄名 作用
/bin 存放常用的命令的目錄
/boot Linux 啟動時的一些核心檔案、連線檔案以及映象檔案
/dev 存放 Linux 的外部裝置,在 Linux 中訪問裝置的方式和訪問檔案的方式是相同的
/etc 存放所有的系統管理所需要的配置檔案和子目錄
/home 使用者主目錄,Linux 中每個使用者都有一個自己的目錄,目錄名是以使用者的賬號命名的
/lib 存放系統最基本的動態連線共享庫,其作用類似於 Windows 裡的 DLL 檔案。幾乎所有的應用程式都需要用到這些共享庫
/lost+found 這個目錄一般情況下是空的,當系統非法關機後,這裡就存放了一些檔案
/media Linux 系統會自動識別一些裝置,如U盤、光碟機等等,識別後 Linux 會把識別的裝置掛載到這個目錄下
/mnt 該目錄是為了讓使用者臨時掛載別的檔案系統的,可以將光碟機掛載在 /mnt/ 上,進入該目錄後就可以檢視光碟機裡的內容
/opt 主機額外安裝軟體所擺放的目錄,預設為空
/proc /proc 是一種偽檔案系統(也即虛擬檔案系統),儲存的是當前核心執行狀態的一系列特殊檔案,這個目錄是一個虛擬的目錄,它是系統記憶體的對映,我們可以通過直接訪問這個目錄來獲取系統資訊
/root 該目錄為系統管理員,也稱作超級許可權者的使用者主目錄
/sbin 存放系統管理員使用的系統管理程式
/selinux Redhat/CentOS 特有的目錄,Selinux 是一個安全機制,類似於 windows 的防火牆,這個目錄就是存放selinux相關的檔案的
/srv 存放一些服務啟動之後需要提取的資料
/sys 該目錄下安裝了 2.6 核心中新出現的一個檔案系統 sysfs
/tmp 存放一些臨時檔案
/usr 使用者很多應用程式和檔案都放在這個目錄下,類似於 windows 下的 program files 目錄
/var var 是 variable(變數) 的縮寫,這個目錄中存放著在不斷擴充著的東西,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日誌檔案
/run 是一個臨時檔案系統,儲存系統啟動以來的資訊。當系統重啟時,這個目錄下的檔案應該被刪掉或清除。如果你的系統上有 /var/run 目錄,應該讓它指向 run
/usr/bin 系統使用者使用的應用程式
/usr/sbin 超級使用者使用的比較高階的管理程式和系統守護程式
/usr/src 核心原始碼預設的放置目錄

sys 目錄下安裝的 sysfs 檔案系統整合了下面3種檔案系統的資訊:針對程式資訊的 proc 檔案系統、針對裝置的 devfs 檔案系統以及針對偽終端的 devpts 檔案系統,該檔案系統是核心裝置樹的一個直觀反映。

當一個核心物件被建立的時候,對應的檔案和目錄也在核心物件子系統中被建立。

原文連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70003733/viewspace-2905110/,如需轉載,請註明出處,否則將追究法律責任。