一、計算機的組成及其功能
硬件
運算器的功能:實現算術運算和邏輯運算(與控制器組成CPU)。
存儲器的功能:將輸入設備接收到的信息以二進制的數據形式存到存儲器中。
控制器的功能:將指令逐條從存儲器中取出,經譯碼分析後向全機發出相應的操作控 制信號作用於其他部件,使各部件有條不紊地協調工作(與運算器組成CPU)。
輸入設備的功能 :將數據、程序、文字符號、圖象、聲音等信息輸送到計算機中。
輸出設備的功能 :將計算機的運算結果或者中間結果打印或顯示出來。
軟件
操作系統
應用系統
二、內核功能以及作用
一種開源的類Unix操作系統宏內核。
基本系結構
- 系統調用接口:提供了某些機制執行從用戶空間到內核的函數調用。
- 進程管理:重點是進程的執行,還包括處理活動進程之間共享 CPU 的需求。
- 內存管理:管理可用內存的方式,以及物理和虛擬映射所使用的硬件機制。
- 虛擬文件系統:爲文件系統提供了一個通用的接口抽象。VFS 在 SCI 和內核所支持的文件系統之間提供了一個交換層。
- 網絡堆棧:IP)是傳輸協議(通常稱爲傳輸控制協議或 TCP)下面的核心網絡層協議。TCP 上面是 socket 層,它是通過 SCI 進行調用的。
- 設備驅動程序:能夠運轉特定的硬件設備。
- 依賴體系結構的代碼:包含了各種特定於體系結構的子目錄(共同組成了 BSP)
三、常見Linux的發行版,不同發行版之間的聯繫與區別
- Redhat系列:RHEL、Fedora CentOS
- Debian系列:Debian和Ubuntu
- Gentoo
- SuSE
- Android
四、常見的開源協議(GPL,LGPL, BSD,Apache等)以及開源協議的區別
GPL(GNU General Public License):
GPL協議的主要內容是只要在一個軟件中使用("使用"指類庫引用,修改後的代碼或者衍生代碼)GPL 協議的產品,則該軟件產品必須也採用GPL協議,既必須也是開源和免費。這就是所謂的"傳染性"。GPL協議的產品作爲一個單獨的產品使用沒有任何問題,還可以享受免費的優勢。
由於GPL嚴格要求使用了GPL類庫的軟件產品必須使用GPL協議,對於使用GPL協議的開源代碼,商業軟件或者對代碼有保密要求的部門就不適合集成/採用作爲類庫和二次開發的基礎。其它細節如再發布的時候需要伴隨GPL協議等和BSD/Apache等類似。
LGPL(GNU Lesser General Public License):
LGPL 是GPL的一個爲主要爲類庫使用設計的開源協議。和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須採用GPL協議不同。LGPL允許商業軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟件的代碼。這使得采用LGPL協議的開源代碼可以被商業軟件作爲類庫引用併發布和銷售。
但是如果修改LGPL協議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須採用LGPL協議。因此LGPL協議的開源代碼很適合作爲第三方類庫被商業軟件引用,但不適合希望以LGPL協議代碼爲基礎,通過修改和衍生的方式做二次開發的商業軟件採用。
GPL/LGPL都保障原作者的知識產權,避免有人利用開源代碼複製並開發類似的產品
BSD(Berkeley Software Distribution)協議:
1、如果二次發佈的產品中包含源代碼,則在源代碼中必須帶有原來的代碼中的BSD協定;
2、如果二次發佈產品是二進制格式的庫或程序,則需要在發佈的文檔或版權聲明中說明包含原來的代碼中的BSD協定;
3、不可以用開源代碼的作者或組織,以及原來的產品的名字做市場推廣;
Apache Licence:
Apache Licence是著名的非盈利開源組織Apache採用的協議。該協議和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權,同樣允許代碼修改,再發布(作爲開源或商業軟件)。需要滿足的條件也和BSD類似:
1、需要給代碼的用戶一份Apache Licence
2、如果你修改了代碼,需要在被修改的文件中說明。
3、在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協議,商標,專利聲明和其他原來作者規定需要包含的說明。
4、如果再發布的產品中包含一個Notice文件,則在Notice文件中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現爲對Apache Licence構成更改。
五、Linux的哲學思想
- 一切皆文件
- 單一小程序
- 避免與用戶交互
- 提供機制,而非策略
六、linux目錄結構以及目錄結構命名規定
Linux目錄結構(倒置樹狀結構):
文件系統的層次結構標準FHS(Filesystem Hierarchy Standard)
/bin:所有用戶可用的基本命令程序文件;
/sbin:供系統管理使用的工具程序;
/boot:引導加載器必須用到的各靜態文件:kernel, initramfs(initrd), grub等;
/dev:存儲特殊文件或設備文件;
設備有兩種類型:字符設備(線性設備)、塊設備(隨機設備);
/etc:系統程序的配置文件,只能爲靜態;
/home:普通的家目錄的集中位置;一般每個普通用戶的家目錄默認爲此目錄下與用戶名同名的子目錄,/home/USERNAME;
/root:管理員的家目錄;可選;
/lib:爲系統啓動或根文件系統上的應用程序(/bin, /sbin等)提供共享庫,以及爲內核提供內核模塊
libc.so.*:動態鏈接的C庫;
ld*:運行時鏈接器/加載器;
modules:用於存儲內核模塊的目錄;
/lib64:64位系統特有的存放64位共享庫的路徑;
/media:便攜式設備掛載點,cdrom, floppy等;
/mnt:其它文件系統的臨時掛載點;
/opt:附加應用程序的安裝位置;可選路徑;
/srv:當前主機爲服務提供的數據;
/tmp:爲那些會產生臨時文件的程序提供的用於存儲臨時文件的目錄;可供所用戶執行寫入操作;有特殊權限;
/usr:usr Hierarchy,全局共享的只讀數據路徑;
bin, sbin
lib, lib64
include:C程序頭文件;
share:命令手冊頁和自帶文檔等架構特有的文件的存儲位置
local:另一個層級目錄;
X11R6:X-Window程序的安裝位置
src:程序源碼文件的存儲位置
/usr/local:Local hierarchy,讓系統管理員安裝本地應用程序;也通常用於安裝第三方程序;
/var:/var Hierarchy,存儲常發生變化的數據的目錄;
cache Application cache data
lib Variable state information
local Variable data for /usr/local
lock Lock files
log Log files and directories
opt Variable data for /opt
run Data relevant to running processes
spool Application spool data
tmp Temporary files preserved between system reboots
/proc:基於內存的虛擬文件系統,用於爲內核及進程存儲其相關信息;它們多爲內核參數,例如net.ipv4.ip_forward, 虛擬爲net/ipv4/ip_forward, 存儲於/proc/sys/, 因此其完整路徑爲/proc/sys/net/ipv4/ip_forward;
/sys:sysfs虛擬文件系統提供了一種比proc更爲理想的訪問內核數據的途徑;其主要作用在於爲管理Linux設備提供一種統一模型的的接口;
Linux目錄命令規定:
嚴格區分字符大小寫:file1, File1, FILE1
目錄也是文件,在同一路徑下,兩個文件不能同名;
支持使用除/以外的任意字符;
最長不能超過255個字符;