Linux 計算機基礎
計算機硬件
計算機(Computer):俗稱電腦,是一種能接收和存儲信息,並按照存儲在其內部的程序對海量數據進行自動、高速地處理,然後把處理結果輸出的現代化智能電子設備
發展歷史:
第一代計算機(1946-1957)電子管時代
第二代計算機(1958-1964)晶體管時代
第三代計算機(1965-1970) 集成電路時代
第四代計算機(1971以後) 大規模集成電路時代
1946年,世界上第一臺計算機ENIAC(electronic numerical integrator and calculator)在美國賓州大學誕生,是美國奧伯丁武器試驗場為了滿足計算彈道需要而研制成的。使用了17468只電子管,占地170平方米,重達30噸,耗電174千瓦,耗資40多萬美元。每秒可進行5000次加法或減法運算
CPU
主頻:主頻是CPU的時鐘頻率(CPU Clock Speed),是CPU運算時的工作的頻率(1秒內發生的同步脈沖數)的簡稱。單位是Hz。一般說來,主頻越高,CPU的速度越快,由於內部結構不同,並非所有的時鐘頻率相同的CPU的性能都一樣
外頻:系統總線的工作頻率,CPU與外部(主板芯片組)交換數據、指令的工作時鐘頻率
倍頻:倍頻則是指CPU外頻與主頻相差的倍數
三者關系是:主頻=外頻x倍頻
高速緩存(cache):高速交換的存儲器。CPU緩存分為一級,二級,三級緩存,即L1,L2,L3
內存總線速度(Memory-Bus Speed): 一般等同於CPU的外頻,指CPU與二級(L2)高速緩存和內存之間的通信速度
地址總線寬度:決定了CPU可以訪問的物理地址空間
陣列卡
Raid卡:
用來實現RAID的建立和重建,檢測和修復多位錯誤,錯誤磁盤自動檢測等功能。RAID芯片使CPU的資源得以釋放
陣列卡(RAID卡)的作用
陣列卡把若幹硬盤驅動器按照一定要求組成一個整體、由陣列控制器管理的系統。
陣列卡用來提高磁盤子系統的性能及可靠性
陣列卡參數
支持的RAID級別
陣列卡緩存
電池保護
計算機硬件組成部分
服務器
服務器Server是計算機的一種,是網絡中為客戶端計算機提供各種服務的高性能的計算機,服務器在網絡操作系統的控制下,將與其相連的硬盤、磁帶、打印機及昂貴的專用通訊設備提供給網絡上的客戶站點共享,也能為網絡用戶提供集中計算、信息發布及數據管理等服務
服務器按應用功能可分為:
Web服務器、數據庫服務器、文件服務器、中間件應用服務器、日誌服務器、監控服務器,程序版本控制服務器、虛擬機服務器、郵件服務器、打印服務器、域控制服務器、多媒體服務器、通訊服務器、ERP服務器等
服務器按外形分類:
塔式服務器、機架式服務器、刀片式服務器
服務器分類
按照CPU體系架構來區分,服務器主要分為兩類:
非x86服務器:使用RISC(精簡指令集)或EPIC(並行指令代碼)處理器,並且主要采用UNIX和其它專用操作系統的服務器,指令系統相對簡單,它只要求硬件執行很有限且最常用的那部分執令,CPU主要有Compaq的Alpha、HP的PA-RISC、IBM的Power PC、MIPS的MIPS和SUN的Sparc、Intel研發的EPIC安騰處理器等。這種服務器價格昂貴,體系封閉,但是穩定性好,性能強,主要用在金融、電信等大型企業的核心系統
x86服務器:又稱CISC(復雜指令集)架構服務器,即通常所講的PC服務器,它是基於PC機體系結構,使用Intel或其它兼容x86指令集的處理器芯片的服務器。目前主要為intel的Xeon E3,E5,E7系列,價格相對便宜、兼容性好、穩定性較差、安全性不算太高
存儲基礎知識---存儲網絡
存儲網絡:
DAS-----直接連接存儲(Direct Attached Storage)
NAS-----網絡連接存儲(Network Attached Storage)
SAN-----存儲區域網絡(Storage Area Networks)
直接存儲(Direct Attached Storage)。
存儲設備與主機的緊密相連
?管理成本較低,實施簡單
?儲時直接依附在服務器上,因此存儲共享受到限制
?CPU必須同時完成磁盤存取和應用運行的雙重任務,所以不利於CPU的指令周期的優化,增加系統負擔
網絡連接存儲(Network Attached Storage):
通過局域網在多個文件服務器之間實現了互聯,基於文件的協議(NFS、SMB/CIFS ),實現文件共享
?集中管理數據,從而釋放帶寬、提高性能
?可提供跨平臺文件共享功能
?可靠性較差,適用於局域網或較小的網絡
存儲區域網絡(Storage Area Networks,SAN)
利用高速的光纖網絡鏈接服務器與存儲設備,基於SCSI,IP,ATM等多種高級協議,實現存儲共享
?服務器跟儲存裝置兩者各司其職
?利用光纖信道來傳輸數據﹐以達到一個服務器與儲存裝置之間多對多的高效能、高穩定度的存儲環境
?實施復雜,管理成本高
操作系統
OS: Operating System,通用目的的軟件程序
硬件驅動
進程管理
內存管理
網絡管理
安全管理
文件管理
OS分類:
服務器OS:RHEL, CentOS,WindowsServer,AIX
桌面OS:Windows 10,Windows 7,Mac OS,Fedora
移動設備OS:Andriod,IOS,YunOS
開發接口標準
ABI: Application Binary Interface
ABI描述了應用程序與OS之間的底層接口,允許編譯好的目標代碼在使用兼容ABI的系統中無需改動就能運行
API:Application Programming Interface
API定義了源代碼和庫之間的接口,因此同樣的源代碼可以在支持這個API的任何系統中編譯
POSIX: Portable Operating System Interface
IEEE在操作系統上定義的一系列API標準
POSIX兼容的程序可在其它POSIX操作系統編譯執行
運行程序格式:
Windows: EXE, .dll(dynamic link library),.lib
Linux: ELF, .so(shared object), .a
Library function和system call
用戶空間:User space
用戶程序的運行空間。為了安全,它們是隔離的,即使用戶的程序崩潰,內核也不受影響
只能執行簡單的運算,不能直接調用系統資源,必須通過系統接口(system call),才能向內核發出指令
內核空間:Kernel space
是Linux 內核的運行空間
可以執行任意命令,調用系統的一切資源
示例:
str= “www.baidu.com" // 用戶空間
x = x + 100 // 用戶空間
file.write(str) // 切換到內核空間
y = x + 200 // 切換回用戶空間
第一行和第二行都是簡單的賦值運算,在User space 執行。第三行需要寫入文件,就要切換到Kernel space,因為用戶不能直接寫文件,必須通過內核安排。第四行又是賦值運算,就切換回User space
用戶和內核空間
編程語言
低級語言
機器語言:0和1
匯編語言:和機器語言一一對應,與硬件相關的特有代碼、驅動程序開發
中級語言:C
系統級應用、驅動程序
高級語言:java,Objective-C,C#,python,php,go
應用級程序開發
兼容分時系統
兼容分時系統Multics
為了進一步強化大型主機的功能,讓主機的資源可以提供更多的使用者來利用,所以在1964年,由貝爾實驗室(Bell)、麻省理工學院(MIT)及奇異公司(GE美國通用電氣公司)共同發起了Multics(多路信息計算系統)的計劃,Multics計劃的目的是讓大型主機可以同時支持300個以上的終端機連線使用。不過,到了1969年前後,由於計劃進度緩慢,資金也短缺,所以該計劃雖然繼續在研究,但最終貝爾實驗室還是選擇了退出
GNU
?GNU(GNU is Not Unix)
?1984年由Richard Stallman發起並創建
?目標是編寫大量兼容於Unix系統的自由軟件
?官方網站:http://www.gnu.org
?GPL(GNU General Public License)
?自由軟件基金會:Free Software Foundation
?允許用戶任意復制、傳遞、修改及再發布
?基於自由軟件修改再次發布的軟件,仍需遵守GPL
?LGPL(Lesser General Public License)
?LGPL相對於GPL較為寬松,允許不公開全部源代碼
?GNU操作系統:HurdHirdof Unix-Replacing Daemons
Linux發行版
slackware:SUSE Linux Enterprise Server (SLES)
OpenSuse桌面
debian:ubuntu,mint
redhat:RHEL: RedHatEnterprise Linux
每18個月發行一個新版本
CentOS:兼容RHEL的格式
中標麒麟:中標軟件
Fedora:每6個月發行一個新版本
ArchLinux:輕量簡潔
Gentoo:極致性能,不提供傳統意義的安裝程序
LFS: Linux From scratch 自制Linux
Android: kernel+busybox(工具集)+java虛擬機
Linux分支參考網站:
http://futurist.se/gldt/
http://www.mindpin.com/d3js-demo/linux/
Linux內核
開源協議
世界上的開源許可證,大概有上百種
GPLv2, GPLv3, LGPL(lesser) :通用公共許可copyleft
Apache: apache
BSD: bsd
Mozilla
Apache
MIT
Linux哲學思想
一切都是一個文件(包括硬件)
小型,單一用途的程序
鏈接程序,共同完成復雜的任務
避免令人困惑的用戶界面
配置數據存儲在文本中
Linux 計算機基礎