開班第一周,各位小伙伴第一份大禮來襲:本周作業(yè)(9.23-9.29)
就業(yè)班和全程班的寶寶看這里:
1、描述計算機(jī)的組成及其功能。
2、描述內(nèi)核功能以及作用
3、按系列羅列常見Linux的發(fā)行版,并描述不同發(fā)行版之間的聯(lián)系與區(qū)別。
4、描述常見的開源協(xié)議(GPL,LGPL,?BSD,Apache等)以及開源協(xié)議的區(qū)別
5、描述Linux的哲學(xué)思想,并按照自己的理解對其進(jìn)行解釋性描述。
6、描述linux目錄結(jié)構(gòu)以及目錄結(jié)構(gòu)命名規(guī)定。
架構(gòu)班寶寶看這里:
1、搭建時間服務(wù)器,日志服務(wù)器并簡述sudo安全切換。
2、詳解nginx模塊使用方法。
第一周作業(yè)-2019.9.23
一、描述計算機(jī)的組成及其功能
? ? 計算機(jī)可以分為兩部分:硬件部分和軟件部分
? ? 計算機(jī)硬件組成:運算器、控制器、存儲器、輸入設(shè)備和輸出設(shè)備
? ? ?? ?運算器:運算
? ??? ? 控制器:控制和協(xié)調(diào)各個硬件
?? ?? ? 存儲器:存取數(shù)據(jù)
?? ?? ? 輸入設(shè)備:將字符、命令等數(shù)據(jù)輸入到計算機(jī)中
?? ?? ? 輸出設(shè)備:將結(jié)果輸出
? ? 計算機(jī)的軟件:操作系統(tǒng)、編譯器、解釋器、連接器、加載器和應(yīng)用軟件
?? ?? ? 操作系統(tǒng):控制與管理硬件及軟件資源,并提供用戶操作接口,完成人機(jī)交互的軟件
?? ?? ? 編譯器:將使用匯編語言編寫的代碼,轉(zhuǎn)換成計算機(jī)可識別的及其語言(GCC)
?? ?? ? 解釋器:將高級編程語言一行一行解釋運行。它的好處是可以消除編譯整個程序的負(fù)擔(dān),缺點則是運行速度比較慢,且使用解釋器的代碼在運行過程中,不可脫離解釋器。
?? ?? ? 連接器:將匯編器或編譯器產(chǎn)生的目標(biāo)文件和外部程序庫鏈接為一個可執(zhí)行文件
?? ?? ? 加載器:負(fù)責(zé)將程序加載到內(nèi)存中,并配置內(nèi)存與此相關(guān)參數(shù),使之能夠運行
?? ?? ? 應(yīng)用軟件:為了某種特定用途而被開發(fā)的軟件。它可以是一個特定的程序,也可以是一個由眾多獨立程序組成的龐大的軟件系統(tǒng)
二、描述內(nèi)核功能以及作用
? ? 1、進(jìn)程管理
?? ??? ?內(nèi)核負(fù)責(zé)創(chuàng)建和銷毀進(jìn)程,并處理進(jìn)程與輸入和輸出設(shè)備的不同進(jìn)程間的數(shù)據(jù)處理,調(diào)度器,控制進(jìn)程如何共享CPU,是進(jìn)程管理的一部分。更通常的,內(nèi)核的進(jìn)程管理活動實現(xiàn)了多個進(jìn)程在一個單個或者幾個CPU之上的抽象。
? ? 2、內(nèi)存管理
?? ?? ? 計算機(jī)的內(nèi)存是主要資源,處理他所用的策略對系統(tǒng)性能是至關(guān)重要的。內(nèi)核為所有進(jìn)程的每一個都在有限的可用資源上建立了一個虛擬地址空間。內(nèi)核的不同部分與內(nèi)存管理子系統(tǒng)通過一套函數(shù)調(diào)用交互,從簡單的malloc/free對到更多更復(fù)雜的功能
? ? 3、文件系統(tǒng)
?? ?? ? Unix在很大程度上基于文件系統(tǒng)的概念;幾乎Unix中的任何東西都可看作一個文件。內(nèi)核在非結(jié)構(gòu)化的硬件之上建立了一個結(jié)構(gòu)化的文件系統(tǒng),結(jié)果是文件的抽象非常多的在整個系統(tǒng)中應(yīng)用。另外,Linux支持多個文件系統(tǒng)類型,就是說,物理介質(zhì)上不同的數(shù)據(jù)組織方式。例如,磁盤可被格式化成標(biāo)準(zhǔn)Linu的ext3文件系統(tǒng),普遍使用的FAT文件系統(tǒng),或者其他幾個文件系統(tǒng)。
? ? 4、設(shè)備控制
?? ?? ? 幾乎每個系統(tǒng)操作最終都映射到一個物理設(shè)備上。處理處理器,內(nèi)存和非常少的別的實體之外,全部中的任何設(shè)備控制操作都由特定于要尋址的設(shè)備相關(guān)的代碼來進(jìn)行。只寫代碼稱為設(shè)備驅(qū)動。內(nèi)核中必須嵌入系統(tǒng)中出現(xiàn)的每個外設(shè)的驅(qū)動,從硬盤驅(qū)動到鍵盤和磁帶驅(qū)動器。
? ? 5、網(wǎng)絡(luò)功能
?? ?? ? 網(wǎng)絡(luò)必須由操作系統(tǒng)來管理,因為大部分網(wǎng)絡(luò)操作不是特定于某一個進(jìn)程:進(jìn)入系統(tǒng)的報文是異步事件。報文在某一個進(jìn)程接受之前必須被收集,識別,分發(fā)。系統(tǒng)負(fù)責(zé)在程序和網(wǎng)絡(luò)接口之間遞送數(shù)據(jù)報文,它必須根據(jù)程序的網(wǎng)路活動來控制程序的執(zhí)行。另外,所有的路由和地址解析問題都在內(nèi)核中實現(xiàn)。
三、按系列羅列常見Linux的發(fā)行版,并描述不同發(fā)行版之間的聯(lián)系與區(qū)別
? ? 1、RadHat系列:RedHat,CentOS,F(xiàn)edora
? ? 2、Slackware系列:Slackware,SUSE,opensuse
? ? 3、Debian系列:Debian,Adamantix,Knoppix,Gnoppix,Ubuntu,Linux Mint,Ubuntu Kylin,BackTrack,Kali Linux
? ? 4、其他系列:Gentoo,ArchLinux,LFS(Linux From scratch)
? ? 不同的系統(tǒng)版本軟件包管理系統(tǒng)不盡相同
四、描述常見的開源協(xié)議(GPL,LGPL, BSD,Apache等)以及開源協(xié)議的區(qū)別
? ? 1、BSD開源協(xié)議是一個給于使用者很大自由的協(xié)議?;旧鲜褂谜呖梢浴睘樗麨椤?可以自由的使用,修改源代碼,也可以將修改后的代碼作為開源或者專有軟件再發(fā)布。但”為所欲為”的前提當(dāng)你發(fā)布使用了BSD協(xié)議的代碼,或則以BSD協(xié)議代碼為基礎(chǔ)做二次開發(fā)自己的產(chǎn)品時,需要滿足三個條件:
?? ?? ? (1):如果再發(fā)布的產(chǎn)品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協(xié)議。
?? ?? ? (2):如果再發(fā)布的只是二進(jìn)制類庫/軟件,則需要在類庫/軟件的文檔和版權(quán)聲明中包含原來代碼中的BSD協(xié)議。
?? ?? ? (3):不可以用開源代碼的作者/機(jī)構(gòu)名字和原來產(chǎn)品的名字做市場推廣。
?? ?BSD 代碼鼓勵代碼共享,但需要尊重代碼作者的著作權(quán)。BSD由于允許使用者修改和重新發(fā)布代碼,也允許使用或在BSD代碼上開發(fā)商業(yè)軟件發(fā)布和銷售,因此是對 商業(yè)集成很友好的協(xié)議。而很多的公司企業(yè)在選用開源產(chǎn)品的時候都首選BSD協(xié)議,因為可以完全控制這些第三方的代碼,在必要的時候可以修改或者二次開發(fā)。
? ? 2、Apache Licence是著名的非盈利開源組織Apache采用的協(xié)議。該協(xié)議和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權(quán),同樣允許代碼修改,再發(fā)布(作為開源或商業(yè)軟件)。需要滿足的條件也和BSD類似:
?? ?? ? (1):需要給代碼的用戶一份Apache Licence
?? ?? ? (2):如果你修改了代碼,需要再被修改的文件中說明。
?? ?? ? (3):在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協(xié)議,商標(biāo),專利聲明和其他原來作者規(guī)定需要包含的說明。
?? ?? ? (4):如果再發(fā)布的產(chǎn)品中包含一個Notice文件,則在Notice文件中需要帶有Apache Licence。你可以在Notice中增加自己的許可,但不可以表現(xiàn)為對Apache Licence構(gòu)成更改。
?? ?Apache Licence也是對商業(yè)應(yīng)用友好的許可。使用者也可以在需要的時候修改代碼來滿足需要并作為開源或商業(yè)產(chǎn)品發(fā)布/銷售。
? ? 3、GPL協(xié)議和BSD, Apache Licence等鼓勵代碼重用的許可很不一樣。GPL的出發(fā)點是代碼的開源/免費使用和引用/修改/衍生代碼的開源/免費使用,但不允許修改后和衍生的代碼做為閉源的商業(yè)軟件發(fā)布和銷售。這也就是為什么我們能用免費的各種linux,包括商業(yè)公司的linux和linux上各種各樣的由個人,組織,以及商 業(yè)軟件公司開發(fā)的免費軟件了。
?? ?GPL協(xié)議的主要內(nèi)容是只要在一個軟件中使用(“使用”指類庫引用,修改后的代碼或者衍生代碼)GPL 協(xié)議的產(chǎn)品,則該軟件產(chǎn)品必須也采用GPL協(xié)議,既必須也是開源和免費。這就是所謂的”傳染性”。GPL協(xié)議的產(chǎn)品作為一個單獨的產(chǎn)品使用沒有任何問題,還可以享受免費的優(yōu)勢。
? ? 4、LGPL是GPL的一個為主要為類庫使用設(shè)計的開源協(xié)議。和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須采用GPL協(xié)議不同。LGPL 允許商業(yè)軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業(yè)軟件的代碼。這使得采用LGPL協(xié)議的開源代碼可以被商業(yè)軟件作為類庫引用并 發(fā)布和銷售。
?? ?但是如果修改LGPL協(xié)議的代碼或者衍生,則所有修改的代碼,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協(xié)議。因此LGPL協(xié)議的開源 代碼很適合作為第三方類庫被商業(yè)軟件引用,但不適合希望以LGPL協(xié)議代碼為基礎(chǔ),通過修改和衍生的方式做二次開發(fā)的商業(yè)軟件采用。
五、描述Linux的哲學(xué)思想,并按照自己的理解對其進(jìn)行解釋性描述。
? ? 1、一切皆文件:不僅普通的文件,目錄、字符設(shè)備、塊設(shè)備、 套接字等在 Unix/Linux 中都是以文件被對待;它們雖然類型不同,但是對其提供的卻是同一套操作界面。
?? ??? ?把幾乎所有資源統(tǒng)統(tǒng)抽象為文件形式,包括硬件設(shè)備,甚至通信接口等 比如說:
?? ??? ?物理終端:/dev/console
?? ??? ?虛擬終端:/dev/tty#(#為1~6)
?? ??? ?串行終端:/dev/ttyS#?
?? ??? ?偽終端:/dev/pts/#?
?? ??? ?把所有資源抽象成文件,不僅便于理解,且有助于管理
? ? 2、小型,單一用途的程序:程序和可執(zhí)行文件不要太復(fù)雜,這樣才能保證了linux內(nèi)核的高效運行
?? ??? ?一個程序只做一件事
? ? 3、連接程序,共同完成復(fù)雜功能:復(fù)雜的任務(wù)可以通過連接多個簡單的程序?qū)崿F(xiàn)復(fù)雜的功能。對于復(fù)雜的功能linux通過許多簡單程序的組合等方式實現(xiàn),在保證簡單功能的高效性的同時,復(fù)雜的程序也必然是高效性的
?? ??? ?復(fù)雜的任務(wù)由多個程序組合完成
? ? 4、避免令人困惑的用戶界面:如windows那樣出了問題一般人選擇的會是重啟,實在是不行的話就是 重新 安裝系統(tǒng)了,因為對于windows那樣不是開源的,并且用戶界面比較 復(fù)雜操作系統(tǒng)出了問題,一般的人是根本沒有辦法解決的。但是linux就不一樣了,第一linux是開源的,無論什么問題都可以通過簡潔的命令行實現(xiàn) 排錯,修改系統(tǒng)的配置,一切都是簡潔明了為基礎(chǔ)。
?? ??? ?易于以編程的方式實現(xiàn)自動化任務(wù)
? ? 5、配置數(shù)據(jù)存儲在文本中:linux所有的配置文件都存放在文本配置文件當(dāng)中,無論什么配置修改都只需修改其配置文件即可,配置文件時文本形式的只需任意一款文本編輯器修改即可而不是類似于windows那樣將保存在注冊表中,并且windows的注冊表需要專門的二進(jìn)制或十六進(jìn)制的編輯器才可編輯,修改比較復(fù)雜
?? ??? ?文本是最易于實現(xiàn)的底層接口表現(xiàn)形式。通過文本保存,就可以使用文本編輯器實現(xiàn)大多數(shù)程序的管理工作
六、描述linux目錄結(jié)構(gòu)以及目錄結(jié)構(gòu)命名規(guī)定。
? ? / :處于Linux文件系統(tǒng)樹形結(jié)構(gòu)最頂端,它是Linux文件系統(tǒng)的入口
?? ?/bin:存放二進(jìn)制可執(zhí)行文件(ls,cat,mkdir等),常用命令一般都在這里。
?? ?/etc:存放系統(tǒng)管理和配置文件
?? ?/home:存放所有用戶文件的根目錄,是用戶主目錄的基點,比如用戶user的主目錄就是/home/user,可以用~user表示
?? ?/usr:用于存放系統(tǒng)應(yīng)用程序,比較重要的目錄/usr/local 本地系統(tǒng)管理員軟件安裝目錄(安裝系統(tǒng)級的應(yīng)用)。這是最龐大的目錄,要用到的應(yīng)用程序和文件幾乎都在這個目錄。
?? ??? ?/usr/x11r6 存放x window的目錄
?? ??? ?/usr/bin 眾多的應(yīng)用程序??
?? ??? ?/usr/sbin 超級用戶的一些管理程序??
?? ??? ?/usr/doc linux文檔??
?? ??? ?/usr/include linux下開發(fā)和編譯應(yīng)用程序所需要的頭文件??
?? ??? ?/usr/lib 常用的動態(tài)鏈接庫和軟件包的配置文件??
?? ??? ?/usr/man 幫助文檔??
?? ??? ?/usr/src 源代碼,linux內(nèi)核的源代碼就放在/usr/src/linux里??
?? ??? ?/usr/local/bin 本地增加的命令??
?? ??? ?/usr/local/lib 本地增加的庫
?? ?/opt:額外安裝的可選應(yīng)用程序包所放置的位置。一般情況下,我們可以把tomcat等都安裝到這里。
?? ?/proc:虛擬文件系統(tǒng)目錄,是系統(tǒng)內(nèi)存的映射。可直接訪問這個目錄來獲取系統(tǒng)信息。
?? ?/root:超級用戶(系統(tǒng)管理員)的主目錄
?? ?/sbin:存放二進(jìn)制可執(zhí)行文件,只有root才能訪問。這里存放的是系統(tǒng)管理員使用的系統(tǒng)級別的管理命令和程序。如ifconfig等。
?? ?/dev:用于存放設(shè)備文件。
?? ?/mnt:系統(tǒng)管理員安裝臨時文件系統(tǒng)的安裝點,系統(tǒng)提供這個目錄是讓用戶臨時掛載其他的文件系統(tǒng)。
?? ?/boot:存放用于系統(tǒng)引導(dǎo)時使用的各種文件
?? ?/lib:存放跟文件系統(tǒng)中的程序運行所需要的共享庫及內(nèi)核模塊。共享庫又叫動態(tài)鏈接共享庫,作用類似windows里的.dll文件,存放了根文件系統(tǒng)程序運行所需的共享文件。
?? ?/tmp:用于存放各種臨時文件,是公用的臨時文件存儲點。
?? ?/var:用于存放運行時需要改變數(shù)據(jù)的文件,也是某些大文件的溢出區(qū),比方說各種服務(wù)的日志文件(系統(tǒng)啟動日志等。)等。
?? ?/lost+found:這個目錄平時是空的,系統(tǒng)非正常關(guān)機(jī)而留下“無家可歸”的文件(windows下叫什么.chk)就在這里
?? ?文件名使用法則:
?? ?嚴(yán)格區(qū)分字符大小寫:file1 File1 FILE1 并不是一個文件
?? ?目錄也是文件,
?? ?在同一路徑下,兩個文件不能同名
?? ?支持使用除”/“以外的任意字符;
?? ?最長不得超過255個字符