1. Linux:僅僅是一個內核,不包含其他應用程序。
GNU/Linux:通常以源碼方式提供,包含提供的開源應用程序,這樣給使用者使用方式的更多的選擇,區別於windows,我們將windows系統安裝在裸機上,幾乎所有功能接口都是被鎖定的,但是Linux與之相反。
2. Linux發行版本:
- Debian:
衍生版:Ubuntu,Knopix - Slackware:
衍生版:S.u.S.E - RedHat:
衍生版:Fedora,CentOS
常見CPU架構:
- X86:見得最多的intel體系
- X64:一般指AMD64,當然intel也有
- m68000,m68k
- arm:主要用於移動設備
- ultrasparc
- power
- MIPS
- alpha:惠普,hp-unix
3. Posix 標準:
原因:由於存在不同的CPU體系架構,而且不同的CPU提供不同的彙編器,不同彙編器翻譯出來的二進制碼存在差異,A CPU可能編譯翻譯出來的指令不能運行在B CPU,跨CPU、移植太過於難,因爲沒有統一的標準。
Posix標準就是將操作系統的API統一起來。
舉個反例:對於常見進程linux下是fork函數,windows下是creatprocess函數。在linux下寫一個程序,用到fork函數,那麼這個程序該怎麼往windows上移植?需要把源代碼裏的fork通通改成creatprocess,然後重新編譯…
編譯完成後生成的指令只能在某一種平臺編譯,編譯完成以後肯定就不能在其他平臺運行,交叉編譯指A平臺編譯生成B平臺可以執行指令,但是一般不能在A平臺執行;
4. ABI:程序運行時的二進制接口名,當然是二進制的,二進制時的接口名稱。所以判斷一個程序能不能跨平臺跑,可以先判斷編譯以後ABI是否一樣。
API:程序接口,可以簡單理解爲函數名稱;
Unix類的系統:
需要澄清的是Unix和Linux是兩個不同的系統,可以理解爲都遵循Posix標準的兩個操作系統。
編譯後的ABI和編譯前源碼API的接口都可以兼容,也就是說在Unix編譯的程序在Linux上也可以運行,跨操作系統運行。
5.開源協定:
- GPL->LGPL->GPLv2->GPLv3
- BSD
- Apache
- 雙線授權:免費開源版本(社區版),商業授權版本(企業版,提供服務,功能強大)
6.程序管理:
-
程序的組成部分:
1.二進制程序
2.配置文件
3.庫文件:程序中調用到的庫
4.幫助文件:使用說明 -
程序包管理器及作用:
將程序的組成文件打包成一個或者有限的幾個文件,安裝,卸載,查詢方便;
常見管理程序:
Debian:dpkg apt apt-get
RedHat:rpm yum dnf(yum升級版)
S.u.S.E:rpm zypper
LFS:Linux From Scratch
7.操作系統虛擬技術:將有限的計算機資源切割開成多個分配出來(如CPU,內存等),每個被分配的是獨立的,讓使用者感覺到自己是獨佔計算機資源的。
常見的虛擬機軟件:
VMware Workstation ,virtualbox