Linux操作系統(tǒng)概述

Unix把硬件虛擬成了軟件。

kernel

operating system/kernel【內(nèi)核】:
1、驅(qū)動(dòng)底層硬件
2、將硬件抽象成簡(jiǎn)單的資源
3、管理各程序的運(yùn)行,彼此之間相安無事

完整的OS : kernel + application

狹義上的OS:kernel
GNU/Linux 才是完整意義上的OS

OS的接口有兩大類:

GUI:Graphic User Interface
GNome c,gtk語言編寫,KDE c++

CLI:Command Line Interface
bash,zsh,sh,csh,tcsh
TUI:Text User Interface

能夠通過操作系統(tǒng)自動(dòng)起來的服務(wù),不需要接口。

操作系統(tǒng)的功能:
驅(qū)動(dòng)程序
進(jìn)程管理
安全
網(wǎng)絡(luò)功能
內(nèi)存管理
文件系統(tǒng)

系統(tǒng)調(diào)用與庫調(diào)用

API:Application Programming Interface
程序員面對(duì)的編程接口
POSIX:Portable Operating System
可移植的程序
ABI:Application Binary Interface
程序應(yīng)用者面對(duì)運(yùn)行程序的接口

GNU:
發(fā)布的都是源代碼,文本格式提供。
但是源碼編譯成為二進(jìn)制格式才能運(yùn)行

gcc,glibc,vi,linux都是源碼,使用起來得編譯。

不過編譯起來的門檻太高。

將源程序編譯成二進(jìn)制格式就是Linux發(fā)行版,版本有數(shù)百種之多。

發(fā)行:一個(gè)從互聯(lián)網(wǎng)上把免費(fèi)的源碼組合起來進(jìn)行編譯,不同發(fā)行商理解起來有差異。

最主流的發(fā)行版
Debian

【社區(qū),無商業(yè)Ubuntu和knopix(安全著稱),mint】;

slackware

【出名的分支s.u.s.e,opensuse(界面華麗著稱)】;

Redhat

Redhat 9.0之后分裂為兩個(gè)版本:
1、Redhat Enterprise Linux:RHEL
【centos(Community Enterprise OS)是基于redhat的二次發(fā)行,即RHEL山寨版】

2、Fedora Core,每六個(gè)月發(fā)行一次。

還有Gentoo
和ArchLinux【從頭構(gòu)建的】

軟件程序,版本號(hào)
major.minor.release

例如:
Linux 0.99,2.2,2.4,2.6,3.0,4.0

發(fā)行版本也有自己的版本號(hào):
RHEL:5.x,6.x,7.x
Fedora:23
Debian:8.x
OpenSuSE:13.x

Linux基礎(chǔ):

CPU架構(gòu):
x86
x64(amd64因?yàn)樽钤缡莂md研發(fā)出64位cpu)
m68000(摩托羅拉生產(chǎn))
arm(目前移動(dòng)終端最常用的芯片,不過arm是個(gè)定制規(guī)則的,不自己生產(chǎn)芯片)
ultrasparc
power(IBM生產(chǎn),十分強(qiáng)大)
powerpc,ppc(簡(jiǎn)版的power)
MIPS

CPU在生產(chǎn)時(shí),有硬件規(guī)格。

不同的公司開發(fā)了不同的芯片,各種的指令集有差異,主流的是x86系列和arm,arm屬于精簡(jiǎn)指令集,目前的移動(dòng)端的芯片都是arm系列的。

用戶不需要面對(duì)硬件,因此需要讓kernel
來面對(duì),kernel隱藏底層復(fù)雜性。

編譯轉(zhuǎn)換為匯編,轉(zhuǎn)換為指定CPU的匯編語言。

cross compile交叉編譯,即不同平臺(tái)的編譯,例如PC編譯arm框架的。

編譯完成之后沒法回頭了。

Linux既能編譯在x86的CPU上也能編譯在arm的CPU上運(yùn)行,這樣就避免了對(duì)不同的CPU再制作一套操作系統(tǒng)了,Linux統(tǒng)一了不同CPU指令集的操作系統(tǒng)。但是直接調(diào)用Linux的指令也會(huì)較繁瑣,因此就有了一些庫把一些功能打包起來更易于程序調(diào)用。因此大部分的程序會(huì)調(diào)用庫來實(shí)現(xiàn)操作硬件的功能。

POS:POSIX
API:Application Program Interface

ABI:Application Binary Interface

Unix-like:
Linux,BSD,AIX,...
所有的Unix-like的API和ABI都是通用的。

源代碼的作者一般收入是提供服務(wù)和接受捐贈(zèng)。

GPL

只要有一行代碼是從遵循了GPL的人那里copy過來的,那么就必須遵循GPL,即無條件開源。

因此,后來有了LGPL,即Lesser GPL,即調(diào)用了庫接口可以不遵循GPL。

但是GPL阻礙了發(fā)展。因此,有了的BSD和Apache。
Apache的基金會(huì):ASF(Apache Software Foundation)

雙線授權(quán):社區(qū)版(Community,遵循開源協(xié)定)和商業(yè)授權(quán)(Enterprise,為了獲取更多收入)

程序管理
程序的組成部分:

二進(jìn)制文件
配置文件
庫文件
幫助文件
二進(jìn)制、庫文件是可執(zhí)行文件,但是庫文件不能獨(dú)立執(zhí)行,只能被調(diào)用實(shí)質(zhì)性

程序包管理器

程序的組成文件打包成一個(gè)或有限幾個(gè)文件
安裝
卸載
查詢

不同發(fā)行版,程序包管理器可能不同。
例如
Debian:
dpkg,apt-get
RedHat:
rpm,yum[將要被dnf替換]
S.uS.E:
rpm,zypper[很強(qiáng)大dnf參考了它]
ArchLinux:
port
Gentoo[骨灰級(jí)玩家]:
LFS[Linux From Scratch超級(jí)專家,正常安裝至少需要48小時(shí)]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容