完整的linux OS的由來?
* linus創建了Linux的kernel,GNU提供了N多的應用程序Application;?
* 俠義上的OS指的就是kernel;
軟件開發的模式?
* 大教堂式?
* 集市?
Linux就是由無數個黑客共同開發來的,屬于集式式的
評判操作系統的快慢監測網站:www.top500.org
Linux在服務器領域占有了絕對領域
OS的接口
有兩類:
- GUI:Graphic User Interface
- CLI:Command Line Interface
GUI下流行的圖形界面:
- GNome: C語言研發的,研發環境是gtk
- KDE:C++研發的,研發環境是qt
CLI 下流行的文本界面:
- bash
- zsh
- sh
- csh
- tcsh
- ksh
API和ABI
操作系統的功能:?
驅動程序?
進程管理?
安全?
網絡功能?
內存管理?
文件系統
用戶通過接口程序,來啟動管理這些功能。
API:Application Program Interface
- 操作系統把底層復雜接口隱藏起來,然后提供更為簡捷的接口,叫做系統調用(system call),程序員在寫程序就不用面對硬件了;
- 庫(libraries),把底層簡潔的接口再次封裝;
- 程序員在寫程序時,可以調用系統調用,也可以調用庫調用(lib call);
- 庫調用比系統調用快;
ABI:Application Binary Interface
POSIX: Portable Operating System 可移植操作系統
- 遵循POSIX 的API,能在多個系統上使用,編程接口兼容,同時并不意味著二進制編程接口兼容;?
遵循POSIX的API程序,經過windows編譯器編譯成二進制的ABI適合于windows使用;同樣Linux同理;
API: 程序員開發視角看,程序員面對的編程接口?
ABI:程序運行視角看,程序應用著面對運行程序的接口
OS的接口實際上就是一種應用程序;?
是在內核外提供的接口;?
占用接口的叫前臺程序,不占用前臺接口的叫后臺程序(如: 開機自動啟動);?
對服務器來講接口未必是必要的;
Linux的發行版
GNU 提供的各種程序都是源碼,要編譯成二進制格式的。?
發行商把GNU的這些源碼程序編譯成二進制,然后打包對外提供,這就是發行版。
著名發行版:
- RedHat
- RedHat Enterprise Linux (簡稱為RHEL)?
- Centos
- Oracle Enterprise
- Fedora Core (桌面版)
- RedHat Enterprise Linux (簡稱為RHEL)?
- Debian (以社區方式運行)
- Ubuntu?
* mint - knopix(安全著稱)
- Ubuntu?
- slackware
- S.u.S.E(界面美)?
- SLES(企業版)
- OpenSUSE
- S.u.S.E(界面美)?
- Gentoo
- ArchLinux
Linux版本號?
三部分組成: major(主版本號),minor(次版本號),release(修正號,修復bug)
- 內核版本,版本號:0.99,2.2,2.4,2.6,3.0,4.0
- 發行版本,版本號:?
- RHEL: 5.x, 6.x, 7.x
- Debian: 8.x
- OpenSuSE: 13.x
Linux網站:www.kernel.org?
最新內核版本4.3
不必追求最新版本,求穩定!
Linux基礎
GNU/Linux 通常以源碼方式提供:自由、靈活
源代碼—是文本格式的?
二進制—由 0 1 組成
計算機僅僅能夠處理二進制指令
要把應用程序的的源代碼用編譯器翻譯成對應機器能夠運行的機器語言(二進制格式數據)
CPU架構
- 32位 x86 系列
- 64位 x64 系列 ,它兼容x86
- m68000
- arm系列cpu?
它只設計?
移動終端cpu,功耗非常低 - ultrasparc?
sun公司生產的?
運行系統是solaris - power?
IBM的cpu?
cpu主頻超過4GHZ,性能強大?
運行系統是 AIX?
個人電腦不能使用power cpu - powerpc(簡稱ppc)?
簡裝power?
能夠運行在個人電腦上?
早些年,蘋果系統 - MIPS
- alpha?
惠普生產的?
收購康柏的安藤?
運行系統是 hp-ux
編譯和匯編:
- 微碼編程的接口(匯編接口)我們稱為匯編語言;
- 面對機器一層的叫做機器語言;
- 匯編語言不能直接在機器上運行,需要匯編器翻譯成機器語言,然后才能運行;
- 匯編語言的移植性非常差,不能做到各種在各種cpu上兼容運行;
- 高級語言(C,C++,JAVA)和你底層的cpu沒有關系,都可以運行。不過這種程序寫完以后得需要用編譯器編譯成匯編語言(和cpu系列就有關系了,綁定行強,不能在多種cpu上運行);
- 交叉編譯(cross compil)–編譯器支持交叉編譯的,即在inter的x64編譯成能做arm系列上運行的程序;?
高級語言所編寫的代碼就能有較好的移植性;
POSIX 規范–是可移植性操作系統。?
API 應用程序調用接口?
ABI 應用程序二進制調用接口。windows的二進制格式是exe或者msi;Linux的二進制格式是elf
Linux,BSD,AIX,… 稱為 Unix-like?
Unix類的系統,它們的API和ABI都兼容
pc機指的就是x86或者x64系列?
小機指的是某些硬件廠商生產的工作站,像ibm的power指令集:?
分為精簡指令集和復雜指令集。指的是支持指令的數量?
power屬于精簡指令集?
inter系列的cpu屬于復雜指令集高級語言–編譯器–編譯后–匯編語言(對應cpu支持的源代碼)?
匯編語言–匯編器–匯編后–翻譯成機器語言(二進制)底層硬件設計的比較丑陋,各廠家的規格不一樣,所用的驅動也不同;?
在底層硬件之上,編寫了kernel,能隱藏底層復雜性。kernel研發也就是開發操作系統;?
現在Linux的kernel源代碼編譯成對應機器的二進制就能在各種的cpu架構上運行;?
系統調用(system call),調用kernel中的功能;?
在kernel之上創造了庫(libraies),庫是統一而規范;
開源協定
- GPL
- BSD
- Apache
GPL協議(GNU組織的):General Public License?
任何程序只要內置了GPL代碼,就遵守GPL協定;?
LGPL: (寬松的GPL協定):Lesser GPL?
調用我的庫接口,不用開源
- Apache:
雙線授權:?
Community (社區版): 遵循開源協定?
Enterprise(商業):提供很多商業服務
Apache 組織會:?
ASF: Apache Software Foudation ,風頭正盛,旗下的 hadoop、spark?
GNU組織會:?
FSF: Free Software Foudation
開源和閉源區別
- 閉源:?
windows 在公司內部開發出來的源代碼就直接編譯成二進制格式(防止反編譯采用了加密)再對外提供。 - 開源:?
提供源代碼,編譯后使用;?
各種企業捐贈支持開源程序;?
商業版提供服務賺錢;
程序管理
程序的組成部分:
- 二進制程序
- 配置文件(文本或半結構化文件)
- 庫文件(應用程序自己的庫,完成二次開發)
- 幫助文件(文本文件)
程序包管理器?
程序的組成文件打包一個或有限幾個文件;?
安裝;?
卸載;?
查詢;
不同發行版所用到的程序包管理器是不一樣的,它們的安裝、使用、卸載方式是不一樣的
- Debian:?
所用的包管理器: dpkg(deb)?
前端管理工具:apt-get - RedHat:?
所用的包管理器: rpm?
前端管理工具:yum, 以后就不用了,改為用dnf了。centos7 還是用的yum - S.u.S.E:?
所用的包管理器: rpm?
前端管理工具:zypper - ArchLinux:?
所用的包管理器: port?
前端管理工具: - Gentoo:?
安裝難度高,安裝時需要編譯
LFS: Linux From Scratch
rpm包管理器 是現在Linux的工業標準
安裝Linux
- 計算機組成:cpu、內存、硬盤、I/O;
- 將這些資源切割出來(cpu時序復用,內存和硬盤空間復用、I/O時序復用)把這些資源分配給多個程序,所以操縱系統本身就是虛擬出來的一個計算機;
- 虛擬機就是在原有的計算機上創建出多個虛擬的計算機,靠軟件實現;
虛擬化軟件程序:?
vmware workstation?
virtualbox
本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/95726