在當今社會計算機(computer)俗稱電腦,已經成爲我們日常生活中無法取代的必需品,那麼什麼是計算機?讓我們來了解一下吧~
一、計算機的組成及其功能
計算機是什麼
計算機(computer)俗稱電腦,是現代一種用於高速計算的電子計算機器,可以進行數值計算,又可以進行邏輯計算,還具有存儲記憶功能。是能夠按照程序運行,自動、高速處理海量數據的現代化智能電子設備。
由硬件系統和軟件系統所組成,沒有安裝任何軟件的計算機稱爲裸機。可分爲超級計算機、工業控制計算機、網絡計算機、個人計算機、嵌入式計算機五類,較先進的計算機有生物計算機、光子計算機、量子計算機等。
計算機發明者約翰·馮·諾依曼。計算機是20世紀最先進的科學技術發明之一,對人類的生產活動和社會活動產生了極其重要的影響,並以強大的生命力飛速發展。它的應用領域從最初的軍事科研應用擴展到社會的各個領域,已形成了規模巨大的計算機產業,帶動了全球範圍的技術進步,由此引發了深刻的社會變革,計算機已遍及一般學校、企事業單位,進入尋常百姓家,成爲信息社會中必不可少的工具。
計算機的組成:
一般而言,計算機的組成應該分爲兩部分:
一、硬件部分
控制器(Control):CPU的組成部分之一。相當於計算機的中樞神經,通過控制器,可以有效的控制和協調整個計算機的如下動作
– 保障不同數率傳輸的數據可以得到緩衝
– 甄別IO設備傳送數據的正錯
– 實現數據與數據之間的交換
– 接收和識別命令
運算器(Datapath):CPU的組成部分之一。包含算數邏輯單元(ALU)、累加器、狀態寄存器、通用寄存器組等,主要作用如下
算數邏輯單元(ALU):進行二位元的算術運算,如加減乘(不包括整數除)、移位等
累加器(accumulator):儲存計算產生的中間結果。保證ALU不用將計算結果寫入內存
狀態寄存器:存放兩類信息
1)體現當前指令執行結果的狀態信息
2)控制信息
通用寄存器組:可用於傳送和暫存數據,也可以參與算術邏輯運算,保存運算結果,通用寄存器組包括以下幾類:數據寄存器、變址寄存器、指針寄存器、段寄存器、指令指針寄存器
存儲器(memory):存儲程序和數據,並能在計算機運行過程中高速、自動地完成從程序或數據的存取,也就是俗稱的內存RAM(Random Access Memory)
輸入設備(Input):外部設備之一。作用是將程序、原始數據、文字、字符、控制命令或現場採集的數據輸入到計算機。常見的輸入設備有:鍵盤、鼠標、磁帶機、磁盤機、光盤機等
輸出設備(Output):外部設備之一。作用是把計算機的中間結果或最後結果、機內的各種數據及文字等信息輸出來。常見的輸出設備有:CRT、打印機、繪圖儀等
根據馮諾伊曼提出的計算機體系架構,一臺計算機主要分爲五個部分:控制器、運算器、存儲器、輸入設備、輸出設備
二、軟件部分
包括彙編語言、系統軟件及應用軟件,他們不像硬件一樣“有形”,但只有軟件硬件互相配合,纔是一臺標準的計算機組成
各組成的功能。
彙編語言(assembly language):一種用於cpu的低級語言。它使用助記符代替二進制語言,方便人類的閱讀及操作。但一種彙編語言只能與相對應的計算機系統結構對應,無法在不同平臺移植
系統軟件(system software):用來運行或控制硬件所開發的計算機軟件,如操作系統、編譯器、數據庫等等
常見的系統軟件包含:
操作系統(Operating system):控制與管理硬件及軟件資源,並提供用戶操作接口,完成人機交互的軟件,常見的有Unix、GNU/Linux、 MAC OS X、Microsoft Windows等
編譯器(compiler):將使用匯編語言編寫的代碼,轉換成計算機可識別的機器語言,常見的有GCC
解釋器(interpreter):將高級編程語言一行一行解釋運行。它的好處是可以消除編譯整個程序的負擔,缺點則是運行速度比較緩慢,且使用解釋器的代碼在運行過程中,不可脫離解釋器。常見的使用解釋器的語言包括Perl、Python、Ruby等
連接器(linker):將由彙編器或編譯器產生的目標文件和外部程序庫鏈接爲一個可執行文件
加載器(loader):負責將程序加載到內存中,並配置內存與相關參數,使之能夠運行
應用軟件(application software):爲了某種特定用途而被開發的軟件。它可以是一個特定的程序,也可以是一個由衆多獨立程序組成的龐大的軟件系統
二、內核功能以及作用
內核是操作系統最基本的部分。它是爲衆多應用程序提供對計算機硬件的安全訪問的一部分軟件,這種訪問是有限的,並且內核決定一個程序在什麼時候對某部分硬件操作多長時間。內核的分類可分爲單內核和雙內核以及微內核。嚴格地說,內核並不是計算機系統中必要的組成部分。
Linux的第一個公開版本是1991年10月的0.02版本,兩個月以後,在1991年12月,Linux發佈了0.11版本,這是第一個可以不依賴於Minix就可以使用的獨立內核。
內核結構:
操作系統是一個用來和硬件打交道併爲用戶程序提供一個有限服務集的低級支撐軟件。一個計算機系統是一個硬件和軟件的共生體,它們互相依賴,不可分割。計算機的硬件,含有外圍設備、處理器、內存、硬盤和其他的電子設備組成計算機的發動機。但是沒有軟件來操作和控制它,自身是不能工作的。完成這個控制工作的軟件就稱爲操作系統,在Linux的術語中被稱爲"內核",也可以稱爲"核心"。Linux內核的主要模塊(或組件)分以下幾個部分:存儲管理、CPU和進程管理、文件系統、設備管理和驅動、網絡通信,以及系統的初始化(引導)、系統調用等。
1、進程管理:
內核負責創建和銷燬進程, 並處理進程與輸入和輸出設備的不同進程間的數據處理, 調度器,控制進程如何共享 CPU, 是進程管理的一部分. 更通常地, 內核的進程管理活動實現了多個進程在一個單個或者幾個 CPU 之上的抽象.
2、內存管理:
計算機的內存是主要的資源, 處理它所用的策略對系統性能是至關重要的. 內核爲所有進程的每一個都在有限的可用資源上建立了一個虛擬地址空間. 內核的不同部分與內存管理子系統通過一套函數調用交互, 從簡單的 malloc/free 對到更多更復雜的功能.
3、文件系統:
Unix 在很大程度上基於文件系統的概念; 幾乎 Unix 中的任何東西都可看作一個文件. 內核在非結構化的硬件之上建立了一個結構化的文件系統, 結果是文件的抽象非常多地在整個系統中應用. 另外, Linux 支持多個文件系統類型, 就是說, 物理介質上不同的數據組織方式. 例如, 磁盤可被格式化成標準 Linux 的 ext3 文件系統, 普遍使用的 FAT 文件系統, 或者其他幾個文件系統.
4、網絡功能:
網絡必須由操作系統來管理, 因爲大部分網絡操作不是特定於某一個進程: 進入系統的報文是異步事件. 報文在某一個進程接手之前必須被收集, 識別, 分發. 系統負責在程序和網絡接口之間遞送數據報文, 它必須根據程序的網絡活動來控制程序的執行. 另外, 所有的路由和地址解析問題都在內核中實現.
5、硬件驅動:
幾乎每個系統操作最終都映射到一個物理設備上. 除了處理器, 內存和非常少的別的實體之外, 全部中的任何設備控制操作都由特定於要尋址的設備相關的代碼來進行. 這些代碼稱爲設備驅動. 內核中必須嵌入系統中出現的每個外設的驅動, 從硬盤驅動到鍵盤和磁帶驅動器. 內核功能的這個方面是本書中的我們主要感興趣的地方.
三、常見Linux的發行版
什麼是Linux
Linux是一種自由和開放源代碼的類Unix操作系統。該操作系統的內核由Linus Torvalds於1991年10月5日首次發佈。根據其發佈的內核(kernel)搭配上GNU上的應用程序,成爲了當今世界上運用領域最廣泛、使用人數最多的操作系統。通常情況下,Linux被打包成供個人計算機和服務器使用的Linux發行版。
什麼是Linux發行版
Linux發行版包含Linux內核和支撐內核的實用程序和庫,通常還帶有大量可以滿足各類需求的應用程序。個人計算機使用的Linux發行版通常包含X Window和一個相應的桌面環境,如GNOME或KDE.
Linux發行版(Linux distribution)是一種爲一般用戶預先集成好的Linux操作系統及各種應用軟件。一般不需要用戶重新編譯,在直接安裝之後,只需要作出小幅度的更改設置即可。Linux發行版通常包含了桌面環境、辦公包、媒體播放器、數據庫等應用軟件。這些操作系統通常使用Linux、以及來自GNU計劃的軟件、和基於X Window的圖形界面組成。
Linux發行版通常分爲商業發行版和社區發行版。也有少部分既不屬於發行版又不屬於社區發行版,其中最有名的是Slackware.
著名的Linux發行版
按照程序包管理器的不同,通常Linux的發行版也被分成了不同的派系。
首先說一下什麼是程序包管理器
程序本身是由二進制程序、配置文件、庫文件以及幫助文件組成的。有時候我們發現,可能一個程序會有很多文件,非常不利於安裝卸載管理,於是,又產生了程序包管理器。
程序包管理器的作用:
– 1)程序的組成文件打包成一個或有限幾個文件;
– 2) 安裝;
– 3) 卸載;
– 4) 查詢;
因此,我們可以劃分出如下的譜系
Redhat系
| 名稱 | 基於 | 特點 |
| Red Hat Enterprise | RPM管理包 | 紅帽的商業版本提供10年服務支持高|
| CentOS | RedHat | 根據RHEL代碼編譯的社區版文檔充足 |
| Fedora | RedHat |紅帽官方的社區版RH公司新技術測試平臺 |
**Slackware系**
| 名稱 | 基於 | 特點 |
| Slackware | SLS | UNIX風格的Linux發行版 KISS(簡潔)的設計理念|
| SUSE | Slackware | 界面華麗 照顧歐洲人的使用習慣 |
| opensuse | SUSE |suse的社區版 |
**Debian系**
| 名稱 | 基於 | 特點 |
| Debian | Dpkg管理包 | 一直爲社區版限制較少功能較多要求技術較高 |
| Adamantix | Debian | 關注安全 |
| Knoppix | Debian |對硬件支持極佳對中日韓環境不夠友好 |
| Gnoppix | Knoppix | Knoppix的GNOME版 |
| Ubuntu | Debian | 界面華麗<br>與Debian、GNOME開源社區關係緊密有資金支持 |
| Linux Mint | Ubuntu | Ubuntu的衍生版開箱即用 |
| Ubuntu Kylin | Ubuntu | 中文定製版 |
| BackTrack | Ubuntu | 專業安全檢測操作系統已不再維護 |
| Kali Linux | BackTrack | BackTrack替代者安全滲透軟件 |
其他
| 名稱 | 基於 | 特點 |
| Gentoo | Portage管理包 | 大量程序開放源代碼對硬件要求較高|
| ArchLinux | pacman管理包 | 軟件更新速度快包管理簡易高效 |
| LFS(Linux From scratch) | |高端玩法DIY系統 |
發行版之間的不同
在Linux發行版中,通常均使用軟件包管理系統,不同的操作系統,軟件包管理系統也不盡相同。比較常見的軟件包管理系統有以下幾種
– 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的前端工具
四、常見的開源協議(GPL,LGPL, BSD,Apache等)
開源軟件的許可證都是基於開源許可協議,世界上有關開源許可證,大概有上百種,最爲常見的有(LGPL, Mozilla, GPL, BSD, MIT, Apache等)
GPL:
GNU General Public License的縮寫,它和其他的開源協議不一樣,在獲取源碼修改後不允許閉源,新增代碼重新發布時要採用GPL開源協議
LGPL:
GNU Lesser General Public License (GNU 寬通用公共許可證)的縮寫形式,在GPL協議的基礎上發佈的更寬鬆的協議,獲取源碼修改後可以選擇公開一部分源碼,來獲取開發軟件的擁有權
MPL:
The Mozilla Public License的簡寫,Mozilla小組爲其開源軟件項目設計的軟件許可證。它在獲取開源源碼中,修改裏面的一部分代碼後選擇提供說明文檔,來描述改動的功能。
BSD:
原先是用在加州大學伯克利分校發表的各個版本的許可證(BSD是Berkly Software Distribution的簡寫)。相較於GPL許可證和MPL許可證的嚴格性,BSD許可證就寬鬆許多了,一樣是隻需要附上許可證的原文,它還要求所有進一步開發者將自己的版權資料放上去,所以拿到以BSD許可證發行的軟件可能會遇到一個小狀況,就是這些版權資料許可證佔的空間比程序還大。
MIT:
許可證之名源自麻省理工學院(Massachusetts Institute of Technology, MIT),是許多軟件授權條款中,被廣泛使用的其中一種。與其他常見的軟件授權條款(如GPL、LGPL、BSD)相比,MIT是相對寬鬆的軟件授權條款,但是賦予軟件被授權人更大的權利與更少的限制。
Apache:
Apache License,是一個在Apache軟件基金會發布的自由軟件許可證,Apache許可證要求被授權者在每一個文件中寫入版權申明,以維護開發者的勞動成果。
五、Linux的哲學思想:一切皆文件
把幾乎所有資源統統抽象爲文件形式,包括硬件設備,甚至通信接口等 比如說:
物理終端:/dev/console
虛擬終端:/dev/tty#(#爲1~6)
串行終端:/dev/ttyS#
僞終端:/dev/pts/#
把所有資源抽象成文件,不僅便於理解,且有助於管理。單一目的的小程序,一個程序只做一件事,組合小程序完成複雜任務,複雜的任務由多個程序組合完成,儘量避免跟用戶交互,易於以編程的方式實現自動化任務使用文本文件保存配置信息, 文本是最易於實現的底層接口表現形式。通過文本保存,就可以使用文本編輯器實現大多數程序的管理工作提供機制,而非策略 機制,是實現某個功能需要的原語操作和結構策略,是某功能的具體實現提供機制,而非策略,指的就是要給用戶充分的自主可調配性。
六、linux目錄結構以及目錄結構命名規定
在早期的 UNIX 系統中,各個廠家各自定義了自己的 UNIX 系統文件目錄,比較混亂。Linux 面世不久後,對文件目錄進行了標準化,於1994年對根文件目錄做了統一的規範,推出 FHS ( Filesystem Hierarchy Standard ) 的 Linux 文件系統層次結構標準。FHS 標準規定了 Linux 根目錄各文件夾的名稱及作用,統一了Linux界命名混亂的局面。無論何種版本的 Linux 發行版,桌面、應用是 Linux 的外衣,文件組織、目錄結構纔是Linux的核心。
FHS:
Filesystem Hierarchy Standard(文件系統層次化標準)的縮寫,多數Linux版本採用這種文件組織形式,類似於Windows操作系統中c盤的文件目錄,FHS採用樹形結構組織文件。FHS定義了系統中每個區域的用途、所需要的最小構成的文件和目錄,同時還給出了例外處理與矛盾處理。
中文名 文件系統層次化標準 外文名 Filesystem Hierarchy Standard
結構類型 樹形結構組織文件 兩層規範 文件數據放置以及子目錄定義
查看系統版本號及根目錄:
常見目錄說明
/ 根目錄一切源於此
/etc 存儲系統服務程序的靜態配置文件
/bin -> usr/bin 所有用戶可以使用的系統基本命令,/usr/bin目錄的軟連接
/sbin -> usr/sbin 存儲系統管理命令,/usr/sbin目錄的軟連接
/home 普通用戶的默認家目錄路徑
/root 系統管理員ROOT的家目錄
/boot 存儲系統引導分區需要使用的靜態文件
/dev 存儲特殊文件或設備文件,包括塊設備,字符設備,套接字文件等
/lib -> usr/lib 爲系統啓動或根文件系統上的應用程序(/bin,/sbin)提供共享庫,以及爲內核提供內核模塊
/lib64 -> usr/lib64 64位系統特有的存放64位共享庫的路徑
/media 便攜式設備的臨時掛在點,U盤,cdrom
/mnt 其他文件系統的臨時掛載點
/opt 附加應用程序的安裝位置,可選路徑
/srv 當前主機爲服務提供的數據
/tmp 存儲系統運行時產生的各類臨時文件
/usr 全局共享的只讀數據路徑
/var 存儲常發生變化的數據的目錄,log
/proc 虛擬的鏈接內核參數目錄,存在於內存中
/sys 虛擬的鏈接內核參數,統一系統設備模塊目錄,存在於內存中
/run 存放系統運行時產生的各種各樣的數據