計算機由硬體和軟體組成
硬體由5部分組成,分别是運算器、存儲器、控制器、輸入裝置、輸出裝置。而控制器和運算器就組成了我們所說的CPU。
(1) 控制器(Control):是整個計算機的中樞神經,其功能是對程式規定的控制資訊進行解釋,根據其要求進行控制,排程程式、資料、位址,協調計算機各部分工作及記憶體與外設的通路等。
(2) 運算器(Datapath):運算器的功能是對資料進行各種算術運算和邏輯運算,即對資料進行加工處理。
(3) 存儲器(Memory):存儲器的功能是存儲程式、資料和各種信号、指令等資訊,并在需要時提供這些資訊。
(4) 輸入(Input system):輸入裝置是計算機的重要組成部分,輸入裝置與輸出裝置合稱為外部裝置,簡稱外設,輸入裝置的作用是将程式、原始資料、文字、字元、控制指令或現場采集的資料等資訊輸入到計算機。常見的輸入裝置有鍵盤、滑鼠器、光電輸入機、錄音帶機、磁盤機、CD光牒機等。
(5) 輸出(Output system):輸出裝置與輸入裝置同樣是計算機的重要組成部分,它把外算機的中間結果或最後結果、機内的各種資料符号及文字或各種控制信号等資訊輸出出來。微機常用的輸出裝置有顯示終端CRT、列印機、雷射印字機、繪圖儀及錄音帶、CD光牒機等。

軟體指計算機系統中的程式及其文檔,程式是計算任務的處理對象和處理規則的描述;文檔是為了便于了解程式所需的闡明性資料。程式必須裝入機器内部才能工作,文檔一般是給人看的,不一定裝入機器。
計算機軟體總體分為系統軟體和應用軟體兩大類:
(1).系統軟體是各類作業系統,如windows、Linux、UNIX等,還包括作業系統的更新檔程式及硬體驅動程式,都是系統軟體類。
(2).應用軟體可以細分的種類就更多了,如工具軟體、遊戲軟體、管理軟體等都屬于應用軟體類。
系統原件
系統軟體是負責管理計算機系統中各種獨立的硬體,使得它們可以協調工作。系統軟體使得計算機使用者和其他軟體将計算機當作一個整體而不需要顧及到底層每個硬體是如何工作的。
一般來講,系統軟體包括作業系統和一系列基本的工具(比如編譯器,資料庫管理,存儲器格式化,檔案系統管理,使用者身份驗證,驅動管理,網絡連接配接等方面的工具)。
應用軟體
應用軟體是為了某種特定的用途而被開發的軟體。它可以是一個特定的程式,比如一個圖像浏覽器。也可以是一組功能聯系緊密,可以互相協作的程式的集合,比如微軟的Office軟體。也可以是一個由衆多獨立程式組成的龐大的軟體系統,比如資料庫管理系統。
(1)程序管理
核心負責建立和銷毀程序, 并處理它們與外部世界的聯系(輸入和輸出).不同程序間通訊(通過信号, 管道, 或者程序間通訊原語)對整個系統功能來說是基本的, 也由核心處理. 另外, 排程器, 控制程序如何共享 CPU, 是程序管理的一部分. 更通常地, 核心的程序管理活動實作了多個程序在一個單個或者幾個 CPU 之上的抽象.
(2)記憶體管理
計算機的記憶體是主要的資源, 處理它所用的政策對系統性能是至關重要的. 核心為所有程序的每一個都在有限的可用資源上建立了一個虛拟位址空間. 核心的不同部分與記憶體管理子系統通過一套函數調用互動, 從簡單的 malloc/free 對到更多更複雜的功能.
(3)檔案系統
Unix 在很大程度上基于檔案系統的概念; 幾乎 Unix 中的任何東西都可看作一個檔案. 核心在非結構化的硬體之上建立了一個結構化的檔案系統, 結果是檔案的抽象非常多地在整個系統中應用. 另外, Linux 支援多個檔案系統類型, 就是說, 實體媒體上不同的資料組織方式. 例如, 磁盤可被格式化成标準 Linux 的 ext3 檔案系統, 普遍使用的 FAT 檔案系統, 或者其他幾個檔案系統.
(4)裝置控制
幾乎每個系統操作最終都映射到一個實體裝置上. 除了處理器, 記憶體和非常少的别的實體之外, 全部中的任何裝置控制操作都由特定于要尋址的裝置相關的代碼來進行. 這些代碼稱為裝置驅動. 核心中必須嵌入系統中出現的每個外設的驅動, 從硬碟驅動到鍵盤和錄音帶驅動器. 核心功能的這個方面是本書中的我們主要感興趣的地方.
(5)網絡
網絡必須由作業系統來管理, 因為大部分網絡操作不是特定于某一個程序: 進入系統的封包是異步事件. 封包在某一個程序接手之前必須被收集, 識别, 分發. 系統負責在程式和網絡接口之間遞送資料封包, 它必須根據程式的網絡活動來控制程式的執行. 另外, 所有的路由和位址解析問題都在核心中實作.
Linux發行版主要有三個分支:Debian、Slackware、Redhat。
(1)Debian:(以社群的方式運作)
Ubuntu:基于Debian開發的開源Linux作業系統,主要針對桌面和伺服器;
Linux Mint:基于Debian和Ubuntu的Linux發行版,緻力于桌面系統對個人使用者每天的工作更易用,更高效,且目标是提供一種更完整的即刻可用體驗。
(2)slackware
suse:基于Slackware二次開發的一款Linux,主要用于商業桌面、伺服器。
SLES(SUSE Linux Enterprise Server(SLES):企業伺服器作業系統,是唯一與微軟系統相容的Linux作業系統。
OpenSUSE:由suse發展而來,旨在推進linux的廣泛使用,主要用于桌面環境,使用者界面非常華麗,而且性能良好。
(3)Redhat
rhel(red hat enterprise Linux):Red Hat公司釋出的面向企業使用者的Linux作業系統。早起版本主要用于桌面環境,免費:
Fedora:基于Red Hat Linux終止發行後,紅帽公司計劃以Fedora來取代Red Hat Linux在個人領域的應用,而另外發行的Red Hat Enterprise Linux取代Red Hat Linux在商業應用的領域。Fedora的功能對于使用者而言,它是一套功能完備、更新快速的免費作業系統,而對贊助者Red Hat公司而言,它是許多新技術的測試平台,被認為可用的技術最終會加入到Red Hat Enterprise Linux中。Fedora大約每六個月釋出新版本。
Centos:基于Red hat Linux提供的可自由使用源代碼的企業級Linux發行版本。每個版本的Centos都會獲得十年的支援(通過安全更新的方式)。新版本的Centos大約每兩年發行一次,而每個版本的Centos會定期(大概6個月)更新一次,以支援新的硬體。這樣,建立一個安全、低維護、穩定、高預測性、高重複性的Linux環境。
(4)其他發行版本:
Gentoo:基于linux的自由作業系統,基于Linux的自由作業系統,它能為幾乎任何應用程式或需求自動地作出優化和定制。追求極限的配置、性能,以及頂尖的使用者和開發者社群,都是Gentoo體驗的标志特點, Gentoo的哲學是自由和選擇。得益于一種稱為Portage的技術,Gentoo能成為理想的安全伺服器、開發工作站、專業桌面、遊戲系統、嵌入式解決方案或者别的東西--你想讓它成為什麼,它就可以成為什麼。由于它近乎無限的适應性,可把Gentoo稱作元發行版。
Aech Linux(或稱Arch):以輕量簡潔為設計理念的Linux發行版。其開發團隊秉承簡潔、優雅和代碼最小化的設計宗旨。
不同發行版之間的聯系和差別:
聯系:所有發行版都是使用Linux核心;都需要遵循GNU的GPL協定;所有的發行版都有自己的版本号,版本格式約定基本一樣(主版本号.次版本号.發行号.修正号)。
差別:發行版的本質差別,在于繼承不同版本的核心,庫、程式的組成。不同發行版幾乎采用了不同包管理器(SLES、Fedora、openSUSE、centos、RHEL使用rmp包管理系統,封包件以RPM為擴充名;Ubuntu系列,Debian系列使用基于DPKG包管理系統,封包件以deb為擴充名。
GPL:
GPL的出發點是代碼的開源/免費使用和引用/修改/衍生代碼的開源/免費使用,但不允許修改後和衍生的代碼做為閉源的商業軟體釋出和銷售。也就是說在一個軟體中使用了庫引用,修改後的代碼或者衍生代碼等GPL協定中的産品,就必須開源和免費。
LGPL:
LGPL允許商業軟體通過類庫引用(link)方式使用LGPL類庫進而不需要開源商業軟體的代碼。
Apache:
該協定和BSD類似,同樣鼓勵代碼共享和尊重原作者的著作權,同樣允許代碼修改,但需要對修改或延伸的内容作聲明
BSD:
基本上使用者可以”為所欲為”,可以自由的使用,修改源代碼,也可以将修改後的代碼作為開源或者專有軟體再釋出。但使用了協定的碼源,需要聲明作者,且不得用作者姓名進行推廣。
MIT:
和BSD一樣,隻需在發行版利包含原協定聲明。
(1)一切皆檔案,Linux把幾乎所有的資源通通抽象為檔案形式。
(2)由衆多功能單一的程式共同完成複雜任務,Linux傾向于讓一個程式隻做一件事,并且做好;讓這樣的程式能夠基于統一的标準開放接口,再由多個這種功能單一的程式組合起來,共同完成更為複雜的任務。
(3)盡量避免跟使用者互動,正是由于面向的對象不同,Linux系統管理多使用指令行接口,通過指令對系統進行操作和管理,這與Windows的設計理念有着迥然的差別。
(4)使用文本檔案儲存配置資訊,所有的配置檔案都采用文本檔案的方式儲存,管理人員可以通過vi或vim文本編輯工具對其進行修改
在 Linux 中,所有的檔案和目錄都被組織成以一個根節點開始的倒置的樹狀結構。檔案系統的最頂層是由根目錄開始的,系統使用 / 來表示根目錄。在根目錄之下的既可以是目錄,也可以是檔案,而每一個目錄中又可以包含子目錄檔案。如此反複就可以構成一個龐大的檔案系統。
FHS:Filesystem Hierarchy Standard 檔案系統層級标準http://www.pathname.com/fhs/pub/fhs-2.3.html
/bin:所有使用者可用的基本指令程式檔案
/sbin:供系統管理使用的工具指令
/boot:引導加載器必須用到的各靜态檔案:kernel,initramfs(initrd),grub等
/dev:存儲特殊檔案或裝置檔案:
裝置有兩種類型:字元裝置(線性裝置)、塊裝置(随機裝置)
/etc:系統程式的配置檔案,隻能為靜态
/home:普通的家目錄的集中位置:一般每個普通使用者的家目錄預設此目錄下與使用者名同名的子目錄,/hone/USERNAME
/root:管理者的家目錄,可選
/lib:為系統啟動或跟檔案系統上的應用程式(/bin,/sbin等)提供共享庫,以及為核心提供核心子產品
libc.so.:動态連結的C庫
ld:運作時連結器/加載器
modules:用于存儲核心子產品的目錄
/lib64:64位系統特有的存放64位共享庫的路徑
/media:便攜式裝置挂載點,cdrom,floppy等
/mnt:其它檔案系統的臨時挂載點
/opt:附加應用程式的安裝位置,可選路徑
/srv:目前主機為服務提供的資料
/tmp:為那些會産生臨時檔案的程式提供的用于存儲臨時檔案的目錄,可供使用者執行寫入操作,有特殊權限
/usr:usr Hierarchy,全局共享的隻讀資料路徑
include:c程式頭檔案
share:指令手冊頁和自帶文檔等架構特有的檔案的存儲位置
local:另一個層級目錄
X11R6:X-Window程式的安裝位置
sre:程式源碼檔案的存儲位置
/usr/local:local hierarchy,讓系統管理者安裝本地應用程式,也通常用于安裝第三方程式
/var:/var hierarchy,存儲常發生變化的資料目錄
/proc:基于記憶體的虛拟檔案系統,用于為核心及程序存儲其相關資訊,它們多為核心參數,例如net.ipv4.ip_forward,虛拟為net/ipv4/ip_forward,存儲于/proc/sys/,是以其完整路徑為/proc/sys/net/ipv4/ip_forward
/sys:sysfs虛拟檔案系統提供了一種比proc更為理想的通路核心資料的途徑,其隻要作用在于管理linux裝置提供一種統一模型的接口
參考:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/