1.描述計算機的組成及其功能骤星。
一般而言吃沪,計算機的組成應該分為兩部分:
第一部分指的是硬件部分跃巡。根據馮諾伊曼提出的計算機體系架構危号,一臺計算機主要分為五個部分:控制器、運算器素邪、存儲器外莲、輸入設備、輸出設備
第二部分指的是計算機軟件兔朦。包括匯編語言偷线、系統(tǒng)軟件及應用軟件,他們不像硬件一樣“有形”沽甥,但只有軟件硬件互相配合声邦,才是一臺標準的計算機組成
硬件部分
??????控制器(Control):CPU的組成部分之一。相當于計算機的中樞神經摆舟,通過控制器亥曹,可以有效的控制和協調整個計算機的如下動作
– 保障不同數率傳輸的數據可以得到緩沖
– 甄別IO設備傳送數據的正錯
– 實現數據與數據之間的交換
– 接收和識別命令
運算器(Datapath):CPU的組成部分之一。包含算數邏輯單元(ALU)恨诱、累加器媳瞪、狀態(tài)寄存器、通用寄存器組等照宝,主要作用如下
算數邏輯單元(ALU):進行二位元的算術運算蛇受,如加減乘(不包括整數除)、移位等
??累加器(accumulator):儲存計算產生的中間結果硫豆。保證ALU不用將計算結果寫入內存
??狀態(tài)寄存器:存放兩類信息
?????1)體現當前指令執(zhí)行結果的狀態(tài)信息
?????2)控制信息
???通用寄存器組:可用于傳送和暫存數據龙巨,也可以參與算術邏輯運算,保存運算結果熊响,通用寄存器組包括以下幾類:數據寄存器旨别、變址寄存器、指針寄存器汗茄、段寄存器秸弛、指令指針寄存器
???存儲器(memory):存儲程序和數據,并能在計算機運行過程中高速、自動地完成從程序或數據的存取递览,也就是俗稱的內存RAM(Random Access Memory)
???輸入設備(Input):外部設備之一叼屠。作用是將程序、原始數據绞铃、文字镜雨、字符、控制命令或現場采集的數據輸入到計算機儿捧。常見的輸入設備有:鍵盤荚坞、鼠標、磁帶機菲盾、磁盤機颓影、光盤機等
???輸出設備(Output):外部設備之一。作用是把計算機的中間結果或最后結果懒鉴、機內的各種數據及文字等信息輸出來诡挂。常見的輸出設備有:CRT、打印機临谱、繪圖儀等
軟件部分
匯編語言(assembly language):一種用于cpu的低級語言璃俗。它使用助記符代替二進制語言,方便人類的閱讀及操作吴裤。但一種匯編語言只能與相對應的計算機系統(tǒng)結構對應旧找,無法在不同平臺移植
系統(tǒng)軟件(system software):用來運行或控制硬件所開發(fā)的計算機軟件,如操作系統(tǒng)麦牺、編譯器、數據庫等等
常見的系統(tǒng)軟件包含:
操作系統(tǒng)(Operating system):控制與管理硬件及軟件資源鞭缭,并提供用戶操作接口剖膳,完成人機交互的軟件,常見的有Unix岭辣、GNU/Linux吱晒、 MAC OS X、Microsoft Windows等
編譯器(compiler):將使用匯編語言編寫的代碼沦童,轉換成計算機可識別的機器語言仑濒,常見的有GCC
解釋器(interpreter):將高級編程語言一行一行解釋運行。它的好處是可以消除編譯整個程序的負擔偷遗,缺點則是運行速度比較緩慢墩瞳,且使用解釋器的代碼在運行過程中,不可脫離解釋器氏豌。常見的使用解釋器的語言包括Perl喉酌、Python、Ruby等
連接器(linker):將由匯編器或編譯器產生的目標文件和外部程序庫鏈接為一個可執(zhí)行文件
加載器(loader):負責將程序加載到內存中,并配置內存與相關參數泪电,使之能夠運行
應用軟件(application software):為了某種特定用途而被開發(fā)的軟件般妙。它可以是一個特定的程序,也可以是一個由眾多獨立程序組成的龐大的軟件系統(tǒng)
2相速、描述內核功能以及作用
1碟渺、進程管理
?內核負責創(chuàng)建和銷毀進程, 并處理它們與外部世界的聯系(輸入和輸出). 不同進程間通訊(通過信號, 管道, 或者進程間通訊原語)對整個系統(tǒng)功能來說是基本的, 也由內核處理. 另外, 調度器, 控制進程如何共享 CPU, 是進程管理的一部分. 更通常地, 內核的進程管理活動實現了多個進程在一個單個或者幾個 CPU 之上的抽象.
2、內存管理
?計算機的內存是主要的資源, 處理它所用的策略對系統(tǒng)性能是至關重要的. 內核為所有進程的每一個都在有限的可用資源上建立了一個虛擬地址空間. 內核的不同部分與內存管理子系統(tǒng)通過一套函數調用交互, 從簡單的 malloc/free 對到更多更復雜的功能.
3突诬、文件系統(tǒng)
?Unix在很大程度上基于文件系統(tǒng)的概念; 幾乎 Unix 中的任何東西都可看作一個文件. 內核在非結構化的硬件之上建立了一個結構化的文件系統(tǒng), 結果是文件的抽象非常多地在整個系統(tǒng)中應用. 另外, Linux 支持多個文件系統(tǒng)類型, 就是說, 物理介質上不同的數據組織方式. 例如, 磁盤可被格式化成標準 Linux 的 ext3 文件系統(tǒng), 普遍使用的 FAT 文件系統(tǒng), 或者其他幾個文件系統(tǒng).
4苫拍、設備控制
?幾乎每個系統(tǒng)操作最終都映射到一個物理設備上. 除了處理器, 內存和非常少的別的實體之外, 全部中的任何設備控制操作都由特定于要尋址的設備相關的代碼來進行. 這些代碼稱為設備驅動. 內核中必須嵌入系統(tǒng)中出現的每個外設的驅動, 從硬盤驅動到鍵盤和磁帶驅動器. 內核功能的這個方面是本書中的我們主要感興趣的地方.
5、網絡
?網絡必須由操作系統(tǒng)來管理, 因為大部分網絡操作不是特定于某一個進程: 進入系統(tǒng)的報文是異步事件. 報文在某一個進程接手之前必須被收集, 識別, 分發(fā). 系統(tǒng)負責在程序和網絡接口之間遞送數據報文, 它必須根據程序的網絡活動來控制程序的執(zhí)行. 另外, 所有的路由和地址解析問題都在內核中實現.
3.按系列羅列常見Linux的發(fā)行版攒霹,并描述不同發(fā)行版之間的聯系與區(qū)別怯疤。
LINUX是一種自由和開放源代碼的類Unix操作系統(tǒng)。該操作系統(tǒng)的內核由Linus
Torvalds于1991年10月5日首次發(fā)布催束。根據其發(fā)布的內核(kernel)搭配上GNU上的應用程序集峦,成為了當今世界上運用領域最廣泛、使用人數最多的操作系統(tǒng)抠刺。通常情況下塔淤,Linux被打包成供個人計算機和服務器使用的Linux發(fā)行版。
Linux發(fā)行版包含Linux內核和支撐內核的實用程序和庫速妖,通常還帶有大量可以滿足各類需求的應用程序高蜂。個人計算機使用的Linux發(fā)行版通常包含X Window和一個相應的桌面環(huán)境,如GNOME或KDE.
?Linux發(fā)行版(Linux distribution)
是一種為一般用戶預先集成好的Linux操作系統(tǒng)及各種應用軟件罕容。一般不需要用戶重新編譯备恤,在直接安裝之后,只需要作出小幅度的更改設置即可锦秒。Linux發(fā)行版通常包含了桌面環(huán)境露泊、辦公包、媒體播放器旅择、數據庫等應用軟件惭笑。這些操作系統(tǒng)通常使用Linux、以及來自GNU計劃的軟件生真、和基于X
Window的圖形界面組成沉噩。
Linux發(fā)行版通常分為商業(yè)發(fā)行版和社區(qū)發(fā)行版。也有少部分既不屬于發(fā)行版又不屬于社區(qū)發(fā)行版柱蟀,其中最有名的是Slackware.
按照程序包管理器的不同川蒙,通常Linux的發(fā)行版也被分成了不同的派系。
Redhat系
| 名稱 | 基于| 特點|
| Red Hat Enterprise
| RPM管理包 | 紅帽的商業(yè)版本<br>提供10年服務支持高|
| CentOS |
RedHat | 根據RHEL代碼編譯的社區(qū)版<br>文檔充足|
| Fedora |
RedHat |紅帽官方的社區(qū)版<br>RH公司新技術測試平臺|
**Slackware系**
| 名稱 | 基于| 特點|
| Slackware
| SLS | UNIX風格的Linux發(fā)行版<br>KISS(簡潔)的設計理念|
| SUSE |
Slackware | 界面華麗<br>照顧歐洲人的使用習慣|
| opensuse
| SUSE |suse的社區(qū)版|
**Debian系**
| 名稱 | 基于| 特點|
| Debian |
Dpkg管理包 | 一直為社區(qū)版<br>限制較少<br>功能較多<br>要求技術較高|
| Adamantix
| Debian | 關注安全|
| Knoppix |
Debian |對硬件支持極佳<br>對中日韓環(huán)境不夠友好|
| Gnoppix |
Knoppix | Knoppix的GNOME版|
| Ubuntu |
Debian | 界面華麗
與Debian产弹、GNOME開源社區(qū)關系緊密
有資金支持
|
| Linux
Mint | Ubuntu | Ubuntu的衍生版<br>開箱即用|
| Ubuntu
Kylin | Ubuntu | 中文定制版|
| BackTrack
| Ubuntu | 專業(yè)安全檢測操作系統(tǒng)<br>已不再維護|
| Kali
Linux | BackTrack | BackTrack替代者<br>安全滲透軟件|
發(fā)行版之間的不同
??????在Linux發(fā)行版中派歌,通常均使用軟件包管理系統(tǒng)弯囊,不同的操作系統(tǒng),軟件包管理系統(tǒng)也不盡相同胶果。比較常見的軟件包管理系統(tǒng)有以下幾種
?– dpkg:一般為Debian系使用匾嘱,前端管理工具為apt-get
?– rpm(The RPM Package Manager):一般為Red Hat系使用,S.u.S.E也有使用早抠,前端工具包含多種:
?yum:作為RHEL及CentOS的前端工具
dnf:作為Fedora的前端工具
ZYpper:作為S.u.S.E及opensuse的前端工具
urpmi:作為Mandriva
Linux及Mageia的前端工具
4霎烙、描述常見的開源協議(GPL,LGPL, BSD蕊连,Apache等)以及開源協議的區(qū)別
一悬垃、GPL
GNU
General Public Licence 通用公共許可證
最常見也是最受關注的一個開源協議,如熟悉的Linux甘苍。
GPL同其它的自由軟件許可證一樣尝蠕,許可社會公眾享有:運行、復制軟件的自由载庭,發(fā)行傳播軟件的自由看彼,獲得軟件源碼的自由,改進軟件并將自己作出的改進版本向社會發(fā)行傳播的自由囚聚。
GPL還規(guī)定:只要這種修改文本在整體上或者其某個部分來源于遵循GPL的程序靖榕,該修改文本的 整體就必須按照GPL流通,不僅該修改文本的源碼必須向社會公開顽铸,而且對于這種修改文本的流通不準許附加修改者自己作出的限制茁计。因此,一項遵循GPL流通 的程序不能同非自由的軟件合并谓松。GPL所表達的這種流通規(guī)則稱為copyleft星压,表示與copyright(版權)的概念“相左”。
GPL協議最主要的幾個原則:
1鬼譬、確保軟件自始至終都以開放源代碼形式發(fā)布租幕,保護開發(fā)成果不被竊取用作商業(yè)發(fā)售。任何一套軟 件拧簸,只要其中使用了受 GPL 協議保護的第三方軟件的源程序,并向非開發(fā)人員發(fā)布時男窟,軟件本身也就自動成為受 GPL 保護并且約束的實體盆赤。也就是說,此時它必須開放源代碼歉眷。
2牺六、GPL 大致就是一個左側版權(Copyleft,或譯為“反版權”汗捡、“版權屬左”淑际、“版權所無”畏纲、“版責”等)的體現。你可以去掉所有原作的版權 信息春缕,只要你保持開源盗胀,并且隨源代碼、二進制版附上 GPL 的許可證就行锄贼,讓后人可以很明確地得知此軟件的授權信息票灰。GPL 精髓就是,只要使軟件在完整開源 的情況下宅荤,盡可能使使用者得到自由發(fā)揮的空間屑迂,使軟件得到更快更好的發(fā)展。
3冯键、無論軟件以何種形式發(fā)布惹盼,都必須同時附上源代碼。例如在 Web 上提供下載惫确,就必須在二進制版本(如果有的話)下載的同一個頁面手报,清楚地提供源代碼下載的鏈接。如果以光盤形式發(fā)布雕薪,就必須同時附上源文件的光盤昧诱。
4、開發(fā)或維護遵循 GPL 協議開發(fā)的軟件的公司或個人所袁,可以對使用者收取一定的服務費用盏档。但還是一句老話——必須無償提供軟件的完整源代碼,不得將源代碼與服務做捆綁或任何變相捆綁銷售燥爷。
二蜈亩、LGPL
GNU
Lesser General Public Licence 寬松的通用公共許可證
LGPL是GPL的一個為主要為類庫使用設計的開源協議。和GPL要求任何使用/修改/衍生之GPL類庫的的軟件必須采用GPL協議不同前翎。LGPL允許商業(yè)軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業(yè)軟件的代碼稚配。這使得采用LGPL協議的開源代碼可以被商業(yè)軟件作為類庫引用并發(fā)布和銷售。
但是如果修改LGPL協議的代碼或者衍生港华,則所有修改的代碼道川,涉及修改部分的額外代碼和衍生的代碼都必須采用LGPL協議。因此LGPL協議的開源代碼很適合作為第三方類庫被商業(yè)軟件引用立宜,但不適合希望以LGPL協議代碼為基礎冒萄,通過修改和衍生的方式做二次開發(fā)的商業(yè)軟件采用。
GPL/LGPL都保障原作者的知識產權橙数,避免有人利用開源代碼復制并開發(fā)類似的產品
三尊流、BSD
有original BSD license、FreeBSD license灯帮、Original BSD license等
BSD開源協議是一個給于使用者很大自由的協議崖技÷咦。基本上使用者可以”為所欲為”,可以自由的使用迎献,修改源代碼瞎访,也可以將修改后的代碼作為開源或者專有軟件再發(fā)布。但”為所欲為”的前提當你發(fā)布使用了BSD協議的代碼忿晕,或則以BSD協議代碼為基礎做二次開發(fā)自己的產品時装诡,需要滿足三個條件:
如果再發(fā)布的產品中包含源代碼,則在源代碼中必須帶有原來代碼中的BSD協議践盼。如果再發(fā)布的只是二進制類庫/軟件鸦采,則需要在類庫/軟件的文檔和版權聲明中包含原來代碼中的BSD協議。
不可以用開源代碼的作者/機構名字和原來產品的名字做市場推廣咕幻。
BSD代碼鼓勵代碼共享渔伯,但需要尊重代碼作者的著作權。BSD由于允許使用者修改和重新發(fā)布代碼肄程,也允許使用或在BSD代碼上開發(fā)商業(yè)軟件發(fā)布和銷售锣吼,因此是對商業(yè)集成很友好的協議。而很多的公司企業(yè)在選用開源產品的時候都首選BSD協議蓝厌,因為可以完全控制這些第三方的代碼玄叠,在必要的時候可以修改或者二次開發(fā)。
四拓提、ApacheLicence
Apache
License读恃,Version 2.0、Apache
License代态,Version 1.1寺惫、Apache
License,Version 1.0
Apache
Licence是著名的非盈利開源組織Apache采用的協議蹦疑。該協議和BSD類似西雀,同樣鼓勵代碼共享和尊重原作者的著作權,同樣允許代碼修改歉摧,再發(fā)布(作為開源或商業(yè)軟件)艇肴。需要滿足的條件也和BSD類似:
需要給代碼的用戶一份Apache Licence,如果你修改了代碼叁温,需要在被修改的文件中說明豆挽。在延伸的代碼中(修改和有源代碼衍生的代碼中)需要帶有原來代碼中的協議,商標券盅,專利聲明和其他原來作者規(guī)定需要包含的說明。
如果再發(fā)布的產品中包含一個Notice文件膛檀,則在Notice文件中需要帶有Apache Licence锰镀。你可以在Notice中增加自己的許可娘侍,但不可以表現為對Apache Licence構成更改。
Apache
Licence也是對商業(yè)應用友好的許可泳炉。使用者也可以在需要的時候修改代碼來滿足需要并作為開源或商業(yè)產品發(fā)布/銷售
5憾筏、描述Linux的哲學思想,并按照自己的理解對其進行解釋性描述花鹅。
一切皆文件氧腰,所有文件,目錄刨肃,設備等都按照文件方式對待古拴。
無論多復雜的程序都是由一個個單一目的的小程序實現的。
提供配置文件來定制運行細節(jié)真友,授之以漁黄痪。
提供多樣的腳本使用戶與機器交互更加便捷易于拓展。
6盔然、描述linux目錄結構以及目錄結構命名規(guī)定桅打。
FHS(英文:Filesystem Hierarchy Standard 中文:文件系統(tǒng)層次結構標準)
FHS 定義了兩層規(guī)范,第一層是愈案, / 下面的各個目錄應該要放什么文件數據挺尾,例如 /etc 應該要放置設置文件,/bin 與 /sbin 則應該要放置可執(zhí)行文件等等站绪。
第二層則是針對 /usr及 /var 這兩個目錄的子目錄來定義遭铺。例如/var/log 放置系統(tǒng)登錄文件、/usr/share放置共享數據等等崇众。
以下是對這些目錄的解釋:
/bin:bin是Binary的縮寫, 這個目錄存放著最經常使用的命令掂僵。
/boot:這里存放的是啟動Linux時使用的一些核心文件,包括一些連接文件以及鏡像文件顷歌。
/dev :dev是Device(設備)的縮寫, 該目錄下存放的是Linux的外部設備锰蓬,在Linux中訪問設備的方式和訪問文件的方式是相同的。
/etc:這個目錄用來存放所有的系統(tǒng)管理所需要的配置文件和子目錄眯漩。
/home:用戶的主目錄芹扭,在Linux中,每個用戶都有一個自己的目錄赦抖,一般該目錄名是以用戶的賬號命名的舱卡。
/lib:這個目錄里存放著系統(tǒng)最基本的動態(tài)連接共享庫,其作用類似于Windows里的DLL文件队萤。幾乎所有的應用程序都需要用到這些共享庫轮锥。
/lost+found:這個目錄一般情況下是空的,當系統(tǒng)非法關機后要尔,這里就存放了一些文件舍杜。
/media:linux系統(tǒng)會自動識別一些設備新娜,例如U盤、光驅等等既绩,當識別后概龄,linux會把識別的設備掛載到這個目錄下。
/mnt:系統(tǒng)提供該目錄是為了讓用戶臨時掛載別的文件系統(tǒng)的私杜,我們可以將光驅掛載在/mnt/上,然后進入該目錄就可以查看光驅里的內容了救欧。
/opt:這是給主機額外安裝軟件所擺放的目錄衰粹。比如你安裝一個ORACLE數據庫則就可以放到這個目錄下。默認是空的颜矿。
/proc:這個目錄是一個虛擬的目錄寄猩,它是系統(tǒng)內存的映射,我們可以通過直接訪問這個目錄來獲取系統(tǒng)信息骑疆。
這個目錄的內容不在硬盤上而是在內存里田篇,我們也可以直接修改里面的某些文件,比如可以通過下面的命令來屏蔽主機的ping命令箍铭,使別人無法ping你的機器:
/root:該目錄為系統(tǒng)管理員泊柬,也稱作超級權限者的用戶主目錄。
/sbin:s就是Super
User的意思诈火,這里存放的是系統(tǒng)管理員使用的系統(tǒng)管理程序兽赁。
/selinux:這個目錄是Redhat/CentOS所特有的目錄,Selinux是一個安全機制冷守,類似于windows的防火墻刀崖,但是這套機制比較復雜,這個目錄就是存放selinux相關的文件的拍摇。
/srv:該目錄存放一些服務啟動之后需要提取的數據亮钦。
/sys:這是linux2.6內核的一個很大的變化。該目錄下安裝了2.6內核中新出現的一個文件系統(tǒng)sysfs 充活。sysfs文件系統(tǒng)集成了下面3種文件系統(tǒng)的信息:針對進程信息的proc文件系統(tǒng)蜂莉、針對設備的devfs文件系統(tǒng)以及針對偽終端的devpts文件系統(tǒng)。
該文件系統(tǒng)是內核設備樹的一個直觀反映混卵。
當一個內核對象被創(chuàng)建的時候映穗,對應的文件和目錄也在內核對象子系統(tǒng)中被創(chuàng)建。
/tmp:這個目錄是用來存放一些臨時文件的幕随。
/usr:這是一個非常重要的目錄蚁滋,用戶的很多應用程序和文件都放在這個目錄下,類似于windows下的program
files目錄。
/usr/bin:系統(tǒng)用戶使用的應用程序枢赔。
/usr/sbin:超級用戶使用的比較高級的管理程序和系統(tǒng)守護程序澄阳。
/usr/src:內核源代碼默認的放置目錄。
/var:這個目錄中存放著在不斷擴充著的東西踏拜,我們習慣將那些經常被修改的目錄放在這個目錄下。包括各種日志文件低剔。
/run:是一個臨時文件系統(tǒng)速梗,存儲系統(tǒng)啟動以來的信息。當系統(tǒng)重啟時襟齿,這個目錄下的文件應該被刪掉或清除姻锁。如果你的系統(tǒng)上有 /var/run 目錄,應該讓它指向 run猜欺。
在Linux?系統(tǒng)中位隶,有幾個目錄是比較重要的,平時需要注意不要誤刪除或者隨意更改內部文件开皿。
/etc: 上邊也提到了涧黄,這個是系統(tǒng)中的配置文件,如果你更改了該目錄下的某個文件可能會導致系統(tǒng)不能啟動赋荆。
/bin, /sbin, /usr/bin,
/usr/sbin: 這是系統(tǒng)預設的執(zhí)行文件的放置目錄笋妥,比如 ls 就是在/bin/ls目錄下的。
值得提出的是窄潭,/bin,
/usr/bin 是給系統(tǒng)用戶使用的指令(除root外的通用戶)春宣,而/sbin, /usr/sbin 則是給root使用的指令。
/var: 這是一個非常重要的目錄嫉你,系統(tǒng)上跑了很多程序月帝,那么每個程序都會有相應的日志產生,而這些日志就被記錄到這個目錄下幽污,具體在/var/log 目錄下嚷辅,另外mail的預設放置也是在這里。
在linux下可以使用長文件和目錄名油挥,可以給目錄和文件取任何名字潦蝇,但必須遵守以下規(guī)則:
(1) 除了/之外,所有的字符都合法
(2) 有些字符最好不適用深寥,比如空格符攘乒、制表符、退格符和字符?? : ? ? ?
? ? , ? ? @?? ? # ? ? $ ?
? &? ? () ? ?? \? ?? |?
?? ;???? "?? ??
""???? <> ?? 等等惋鹅。
(3)避免使用+? 则酝、 -? 或 .來作為普通文件名的第一個字符
(4)大小寫敏感