一.計算機系統
1.馮諾依曼體系結構
(1)二進制和十進制單位
2^0=1=1b
2^1=2=10b
2^3=8=1000b
2^4=16=10000b
2^5=32=100000b
2^6=64=1000000b
2^7=128=10000000b
2^8=256=100000000b
2^9=512=1000000000b
2^10=1024=10000000000b
2^11=2048=100000000000b
2^12=4096=1000000000000b
(2)常見單位
10的36次方 X
10的33次方 C
10的30次方 D
10的27次方 N
10的24次方 B
10的21次方 Y
10的18次方 E
10的15次方 P
10的12次方 T 二進制 2^40 1024G
10的 9次方 G 二進制 2^30 1024M
10的 6次方 M 二進制 2^20 1024K
10的 3次方 K 二進制 2^10=1024
10的 2次方 百
10的 1次方 十
10的-1次方 分 d
10的-2次方 厘 c
10的-3次方 m 毫
10的-6次方 μ 微
10的-9次方 n 納
10的-12次方 p
10的-15次方 f
10的-18次方 a
# 十進制和二進制互相轉換
[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
2*3
6
obase=2
168
10101000
quit
[root@centos7 ~]#bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
ibase=2
1010
10
# 進制轉換
# obase 輸入進制, ibase 輸出進制
#十進制轉二進制:echo "obase=2;255" | bc
#八進制轉十進制:echo "obase=10;ibase=8;377" | bc
#二進制轉十進制:echo "obase=10;ibase=2;11111111" | bc
#二進制轉16進制:echo "obase=16;ibase=2;11111111" | bc
[root@centos8 ~]#echo "obase=2;255" | bc
11111111
[root@centos8 ~]#echo "obase=10;ibase=8;377" | bc
255
[root@centos8 ~]#echo "obase=10;ibase=2;11111111" | bc
255
[root@centos8 ~]#echo "obase=16;ibase=2;11111111" | bc
FF
#注意前后順序
[root@centos8 ~]#echo "ibase=2;obase=16;11111111" | bc
100110
# 確定當前系統是32位或64位
[root@centos8 ~]#getconf LONG_BIT
64
[root@rhel5 ~]# getconf LONG_BIT
32
root@ubuntu2004:~# arch
x86_64
[root@rhel5 ~]# arch
i686
(3)摩爾定律
由英特爾(Intel)創始人之一戈登·摩爾於1965年提出,當價格不變時,集成電路上可容納的元器件的
數目,約每隔18-24個月便會增加一倍,性能也將提升一倍
2.操作系統功能
OS: Operation System 操作系統,通用目的的軟件程序
(1)操作系統功能:
- 硬件驅動
- 進程管理
- 內存管理
- 網絡管理
- 安全管理
- 文件管理
(2)操作系統分類:
- 服務器OS:Centos,Ubuntu,windows server,AIX
- 桌面OS:windows,macOS,Fedora
- 移動設備OS:Andriod,IOS,Alios,HarmonyOS
3.操作系統相關概念
(1)接口 interface:
來源於電氣工程學科,指的是插座與插頭的連接口,起到將電與電器連接起為的功
能。后來延伸到軟件工程里指軟件包向外提供的功能模塊的函數接口。所以接口是用來連接兩個東西、
信號轉換和屏蔽細節
操作系統通過接口的方式,建立了用戶與計算機硬件的溝通方式。用戶通過調用操作系統的接口來使用
計算機的各種計算服務。
為操作系統一般會提供兩個重要的接口,來滿足用戶的一些一般性的使用需求:
命令行:實際是一個叫shell的終端程序提供的功能,該程序底層的實質還是調用一些操作系統提
供的函數
窗口界面:通過圖形窗口程序接收來自操作系統的消息,比如:鼠標、鍵盤動作,進而做出一些響
應
(2)ABI
Application Binary Interface,應用程序二進制接口,ABI描述了應用程序與OS之間的底層接口,允許編
譯好的目標代碼在使用兼容ABI的系統中無需改動就能運行
運行程序格式:
Windows: PE(portable executable)格式, .dll(dynamic link library),.lib
Linux: ELF(Executable and Linking Format)格式, .so(shared object), .a
(3)API
Application Programming Interface,應用程序開發接口,API定義了源代碼和庫之間的接口,因此同
樣的源代碼可以在支持這個API的任何系統中編譯
POSIX: Portable Operating System Interface 可移植的操作系統接口
IEEE在操作系統上定義的一系列API標准
POSIX兼容的程序可在其它POSIX操作系統編譯執行
(4)用戶態和內核態
- 內核態:一種特殊的軟件程序,特殊在哪兒呢?控制計算機的硬件資源,例如協調CPU資源,分配內存資源,並且提供穩定的環境供應用程序運行。
- 用戶態:就是提供應用程序運行的空間,為了使應用程序訪問到內核管理的資源例如CPU,內存,I/O。內核必須提供一組通用的訪問接口,這些接口就叫系統調用。
(4)系統調用system call和函數庫 Library function
- 系統調用:時操作系統的最小功能單位。根據不同的應用場景,不同的Linux發行版本提供的系統調用數量也不盡相同,大致在240-350之間。這些系統調用組成了用戶態跟內核態交互的基本接口
- 庫函數:就是屏蔽這些復雜的底層實現細節,減輕程序員的負擔,從而更加關注上層的邏輯實現。它對系統調用進行封裝,提供簡單的基本接口給用戶,這樣增強了程序的靈活性,當然對於簡單的接口,也可以直接使用系統調用訪問資源,例如:open(),write(),read()等等。庫函數根據不同的標准也有不同的版本,例如:glibc庫,posix庫等。
(5)用戶和內核空間
- 用戶空間:User space
用戶程序的運行空間。為了安全,它們是隔離的,即使用戶的程序崩潰,內核也不受影響
只能執行簡單的運算,不能直接調用系統資源,必須通過系統接口( system call),才能向內核發出指令
- 內核空間:Kernel space
Linux 內核的運行空間可以執行任意命令,調用系統的一切資源
(6)編程語言
- 低級語言:計算機能理解的語言,二進制
機器語言:0和1
匯編語言:和機器語言一一對應,與硬件相關的特有代碼、驅動程序開發
- 高級語言: java,python,go,php,Objective-C,C#,易語言(中文),應用級程序開發,人類語言實現
C 語言,系統級應用、驅動程序
4.各種操作系統
(1)操作系統演變
- 單用戶系統:一次只能支持一個用戶程序的運行。向用戶提供聯機交互式的工作環境,如:DOS
- 批處理系統:用戶將一批作業提交給操作系統后就不再交互,由操作系統控制自動運行,提高系統
運行效率 - 多道程序系統:程序控制 CPU 處理順序
- 分時系統:提高系統利用率,操作系統控制 CPU 處理順序,多個人共用一台計算機
- 個人計算機:每人用戶對應一個系統,廉價,方便,易用
- 分布式計算:每個用戶對應多個系統,雲計算,大數據處理
(2)服務器三大操作系統
- Windows:
- Linux:GNU/Linux
- Unix:1969年 Ken Thompson
System: Bell Lab
AIX (IBM)
Solaris (SUN)
HP-UX (HP)
BSD: (BSRG)Berkeley System Distribution
NetBSD
OpenBSD
FreeBSD
二.Linux操作系統
1991年的10月5日Linus Benedict Torvalds在comp.os.minix 新聞組上發布消息,正式向外宣布他自行
編寫的完全自由免費的內核誕生(Freeminix-like kernel sources for 386-AT) — FREAX,含義是怪
誕的、怪物、異想天開類Unix的內核,在GPL下發布
官網:www.kernel.org
最早版本: https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/
1.Linux的內核版本組成
- 主版本號
- 次版本號
- 末版本號
- 打包版本號
- 廠商版本
2.Linux發行版
-
slackware:SUSE Linux Enterprise Server (SLES) , OpenSuse桌面
-
debian: ubuntu,deepin(深度),mint
-
redhat: RHEL: RedHat Enterprise Linux, 每18個月發行一個新版本
- CentOS: Community Enterprise Operating System 兼容RHEL的格式
- 中標麒麟:中標軟件
- Fedora:每6個月發行一個新版本
-
Alpine: 一個面向安全的輕型 Linux 發行版。它不同於通常 Linux 發行版,Alpine 采用了 musl
libc 和 busybox 以減小系統的體積和運行時資源消耗,但功能上比 busybox 又完善的多,只有
5M左右大小
-
ArchLinux:輕量簡潔,遵循K.I.S.S.原則( keep it simple and stupid ),Manjaro
-
Gentoo:極致性能,不提供傳統意義的安裝程序,下載源代碼在本機上編譯安裝軟件
-
LFS:Linux From scratch 自制Linux,只是一個說明書
-
Android:kernel+busybox(工具集)+java虛擬機
Linux 分支參考網站:http://futurist.se/gldt/
Linux發行版排名: https://distrowatch.com/dwres.php?resource=popularity
Linux 發行版體驗: https://distrotest.net/
3.RHEL
RedHat 紅帽公司
紅帽發行版本
Red Hat Linux 1.0 (Mother's Day) 1994年11月03日
Red Hat Linux 2.0 1995年09月20日
Red Hat Linux 3.0 (Picasso) 1996年05月01日
Red Hat Linux 4.0 (Colgate) 1996年10月08日
Red Hat Linux 5.0 (Hurricane) 1997年12月01日
Red Hat Linux 6.0 (Hedwig) 1999年04月26日
Red Hat Linux 6.2 (Zoot) Red Hat Linux 6.2E 2000年04月03日
Red Hat Linux 7.0 (Guinness) 2000年03月27日
Red Hat Linux 7.2 (Enigma) Red Hat Enterprise Linux 2 2001年10月22日
Red Hat Linux 8.0 (Psyche) 2002年09月30日
Red Hat Linux 9.0 (Shrike) 2003年03月31日
Red Hat Enterprise Linux 3.0(Taroon) Fedora 1 (Yarrow) 2003年10月22日
Red Hat Enterprise Linux 4.0 2005年02月15日
Red Hat Enterprise Linux 5.0(Tikanga) 2007年03月14日
Red Hat Enterprise Linux 6.0(Santiago) 2010年11月10日
Red Hat Enterprise Linux 7.0(Maipo) 2014年06月10日
Red Hat Enterprise Linux 8.0 2019年05月07日
4.Centos
2004年,Gregory Kurtzer和CentOS的其他創始成員基於開源的RHEL創建了CentOS,將Enterprise
Linux引入了社區。
2014年,紅帽宣布正式贊助CentOS。CentOS的幾個核心團隊入職Red Hat專門負責其開發。並在Red Hat
在理事會中占了三席,但是其社區屬性得到保留,交易結果是一部分包括將CentOS商標和IP轉移到Red Hat
以安全保存。
CentOS 8於2019年9月交付,緊隨RHEL 8之后,CentOS Stream的發布和發布是對下一個次要更新中即將
發布內容預覽版本。可以說是RHEL的beta頻道。
2019,巨頭IBM花重資收購了Red Hat。並承諾Red Hat忠於其開源根基不會改變,聲稱" Red Hat對開源
的使命和堅定承諾將保持不變。"
2020年12月8日IBM宣布將慣例支持到2029年CentOS 8,提前在2年內就終結,唯一的升級途徑是Centos
Stream—AKA,RHEL的Beta發布,並建議不再生產環境中使用。預示着CentOS可能會正式死亡。CentOS已
死,但是CentOS精神將會永存。
隨后以CentOS創始人之一Gregory Kurtzer為首,8小時內250人嘯聚網絡,計划以創建Rocky
Linux(Rocky為已經逝世的另外一個CentOS創始人)取代CentOS。Rocky Linux與RHEL兼容
目前已經創建了Github Rocky Linux項目組織(github.com/rocky-linux/rocky)和官網
(rockylinux.org)。
5.Rocky Linux
2020年12月,CentOS宣布將來CentOS的發展方向將是CentOS Stream,CentOS Stream將成為red hat商業版本的前置測試版,而不再是過去的red hat商業版的開源穩定版(暫且這么叫吧,方便理解)。原定於支持到2029年5月份的CentOS 8將於2021年12月31日壽終正寢。
CentOS 創始人 Gregory Kurtzer 以及社區希望開源能繼續造福社會,Gregory Kurtzer就發起了rocky linux項目。Kurtzer 解釋起名 “Rocky” 是為了紀念一位曾經與自己一起創立 CentOS 的伙伴 Rocky McGaugh。遺憾的是 Rocky 沒能看到 CentOS 所取得的成功,所以 Kurtzer 想以這樣的方式來緬懷曾經的戰友。
rocky linux社區將致力於打造兼容red hat且穩定的linux操作系統(即繼續做RHEL的下游構建),延續以往CentOS穩定linux發行版路線,讓開發者繼續使用到穩定版的“CentOS”。【這讓我想到了Mysql的命運,以及MariaDB的出現】
三.Linux安裝
1.UNIX哲學思想
- 一切都是一個文件(包括硬件)
- 小型,單一用途的程序
- 鏈接程序,共同完成復雜的任務
- 避免令人困惑的用戶界面
- 配置數據存儲在文本中
2.Linux 生產主流版本
Linux 各種版本
CentOS 各版本介紹
https://zh.wikipedia.org/wiki/CentOS
RHEL各版本介紹
https://zh.wikipedia.org/wiki/Red_Hat_Enterprise_Linux
Ubuntu 各版本介紹
https://zh.wikipedia.org/wiki/Ubuntu
https://blog.csdn.net/songfulu/article/details/85310273
3.各版本安裝(詳見各版本安裝說明)
(1)centos7.9安裝
(2)Centos8.3安裝
(3)Rocky Linux安裝
(4)Ubuntu18.04.5安裝