一、完整的OS
所謂完整的OS無非指的就是Kernel
+Application
這兩項的結合,而狹義上的OS僅僅指的是Kernel
,Linux其實就是個內核,它的功能就是將硬件的復雜性和差異性給隱藏起來,通過內核輸出為一個簡潔而又統一的接口,我們稱之為系統調用,但內核又太過于底層,使得程序開發周期會很長,所以在系統調用的接口上面又封裝了一個庫函數,離人又更近了一步,使得程序可以快速的開發而且易于維護。
開發的程序的門派有那么一下兩類:一種是大教堂式,我個人理解為集中式開發,另一種是集市,個人理解就是有著不同的應用程序,可以任意的定制或修改,而前者是已經定制完成且不可修改,我們開發程序時,必然會用到與計算機所聯系的程序接口,這種與計算機交互的接口我們叫做Shell接口,它分為兩大類:一個GUI
,另一個是CLI
。
OS的兩類接口:
GUI: Graphic User Interface
GNome: c, qtk
KDE: C++, Qt
CLI: Command Line Interface
bash
zsh
sh
csh
tcsh
ksh
二、操作系統的功能
操作系統是一個通用的軟件,對硬件進行一個資源的整合與利用同時對硬件進行監控,對于程序的運行提供了一個可靠的平臺,使得開發不用面向復雜的硬件,對統一而又簡潔的接口進行開發,那么操作系統的功能大致分為以下幾種:
驅動程序
進程管理
安全相關
網絡功能
文件系統
內存管理
... ...
之前我們講過系統調用和庫調用,那么操作系統是一個通用的軟件,即使我在Linux寫的程序源碼在Windows上也是可以兼容編譯之后是可以運行的,這個我們就叫做API
接口,它是程序員面對的編程接口,程序接口兼容的話,在Linux上寫的源碼程序可以在Windows進行編譯,遵從POSIX(可移植操作系統)
? 系統調用:(System Call)將底層的復雜差異化硬件接口封裝起來,向上提供一個簡潔而又統一的接口。
庫調用:(Libraies)是將系統調用的簡潔接口在此之上封裝為更復雜的接口,離人又更近了一步。
那么我們程序編譯完成之后就會生成二進制可執行文件,它是程序應用者所面對運行的接口,我們稱之為ABI接口,這種接口是在不同的操作系統之間是不能運行的,因為Windows的可執行格式為.exe
,Linux的可執行格式為.elf
,我們可以用file命令查看某個命令的可執行格式。
# file /usr/bin/ls
/usr/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d705971a4c4544545cb78fd890d27bf792af6d4, stripped
三、Linux與發行版之間的關系
我們現在都知道Linux本身就一個內核,除此之外,其它的應用程序都是GNU協議所開源的應用程序運行在該內核之上,這些應用程序提供的都是源代碼,我們都知道要想在電腦上用應用程序,必須要編譯成為二進制格式才能運行,好處就是靈活性和自由性很強,舉個例子:我給你個面粉,你可以做任何面食都行,但缺點就是不易用,所以對于很多人來說,但凡編譯中出錯,解決這些問題需要很長的時間,為了解決這些問題,這些發行版就提供了已經編譯好的,能夠直接在電腦上安裝的發行版安裝程序供你使用,而且發行版有數百種之多,有的發行版曇花一現,有的經久不衰一直進行著。
主要的三大版本有:Debian、Slackware、RedHat
,這三個發行版是主要的支點,在它們的支點上有很多我們所熟悉的分支,比如說Debian發行版上的分支有:Ubuntu
和mint
等,這個操作系統對于入門級別來說上手很難,但上手了會覺得很好用,是黑客最喜歡的一個操作系統,它是社區級別,任意免費下載,Slackware這個支點是有點特殊,它的前身是sls,不過sls也是曇花一現,但Slackware保留了下來,并且有許多的分支,最熟知的是S.u.S.E
和OpenSUSE
等,RedHat是一個商業公司,提供的系統是免費的,不過后續的服務是要收費的,比如打補丁或者升級軟件等,不過雖然收費,但是源代碼根據開源協議是要開放的,所以有個社區組織就把RedHat的源代碼進行二次編譯,也將把收費的服務變的免費起來,這個分支就是CentOS
,不過,CentOS
也被RedHat收購了。另一個分支就是Fedora
,用的是最新的技術,每6個月更新一次,專注于做圖形化設計等,是RedHat 9
之后的技術轉讓,在此之后,RedHat就開發企業版,也就是我們稱之為RHEL,通常是18個月更新一次,甚至更久。
軟件的程序發布也是有格式的,比如:2.6-568.el6
? major.minor.release
2.6-568
主版本號.詞版本號-修正的版本號.發行平臺
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/87648