UNIX編程藝術 講述UNIX歷史的
system V:簡稱SysV(5版本)
不少商業公司拿到sys v的copy,而且以之爲藍本,創建本身的商業發行版
比較流行的有:
IBM: 硬件平臺 Power, PowerPC, 系統是 AIX
伯克利大學Bill Joy 等創立的 SUN: Sparc(硬件體系架構), SunOS --> Solaris, Open Solaris
HP:cpu架構 Alpha, HP-UXlinux
CPU常見平臺:
摩托羅拉
m68000, m68k
IBM
Power
IBM,摩托羅拉,apple組合開發
PowerPC
sun公司
Sparc, UltraSparc
惠普
Alpha
Intel
x86
x86_64
amd64
MIPS
ARM:知本主義 只賣技術.ios
二進制代碼:cpu對應所支持的指令(對應執行的指令)
add: --> 彙編器(翻譯器) --> 翻譯成對應二進制格式的指令
芯片:彙編語言 也稱爲 微碼語言
微碼編程:程序員
C語言 由編譯器處理獲得機器能執行的指令
預處理、編譯、彙編、連接編程
調用:庫 某些公用的程序,本身是不能執行的,只能被調用 .dll 動態鏈接庫 .so 共享對象
基本庫:也稱爲標準庫安全
DOS (單用戶、單任務系統)--> Windows (基於dos上來運行) 常因資源競爭而藍屏bash
DEC公司: 兩種小型機 VAX: 研發vms系統 , PDP 後來要使用 UNIX,vms就不使用
微軟收了vms
WindowsNT(基於vms內核的)服務器
微軟和IBM,研發了 OS/2,後微軟退出 --> 微軟購買了OS/2,修改後獲得Vista(微軟用vms來修改OS/2獲得)架構
BSD-->SysV 爭論
BSD最後一次發行版:BSD Lite 從新包裝BSD發行版,後解散了
後來被各自由軟件維護後 BSD系列系統
FreeBSD --> MAC OS, ios
NetBSD
OpenBSD 安全的系統app
因爲UNIX商業後,受權費用很貴,就開發了一個Minixdom
MIT: Stallman倡導自由, Freedom
口號稱爲:GNU: Gnu is Not Unix. 自由軟件運行到UNIX上
須要遵循GPL協定: General Public License 通用公共許可證
emacs, vi, bash 可是這些程序都是須要運行在UNIX上
Linus: 仿照minix,根據UNIX,寫了一個Linux (是操做系統的核心)
包裝發行Linux GNU/Linux
GNU/Linux C語言寫的
源代碼 --> 機器代碼
編譯器
主版本號 次版本號 發行號
版本號:major.minor.release
2.1.4, 3.10.18
發行版:把GNU軟件編譯好二進制程序在加上Linux內核
搜索 linux timeline 查看發行時間線路
發行商:
slackware
二次分支:s.u.s.E
Debian
Ubuntu
Redhat
面向我的應用的發行版到9後 redhat 9 --> 捐贈給 Fedora
服務器版 RHEL: RedHat Enterprise Linux 3 每18個月一個新版本
redhat: GPL, GNU
社區版的Linux CentOS:
Community ENTerprise OS
建議使用debian 桌面版
LFS: Linux From Scratch 從零構建Linux
書:
任何兩個層次的不協調均可以經過添加中間層來處理協調關係
應用程序
A P I syscall(系統調用)
Linux 系 統 把底層硬件的不一樣作徹底封裝,並提供給程序員開發接口
硬件(cpu 、內存、硬盤等)
預處理:把宏替換、頭文件包含 編譯:把源代碼轉化成目標代碼
彙編: 彙編成硬件可以識別的硬件指令 連接:
X86的cpu是有特權級別的,cpu是由4個環,把指令分紅4類,應用程序只能使用最外層的ring3
通常指令在ring 3,最內層是ring 0,ring 0只有內核有權限使用 。
應用程序是直接運行在cpu上的,可是受控於內核。
應用程序在內存中使用也是如此,應用程序是看不到內存的,由於內存是虛擬出來的,只有操做系統才能看到
API:Application Programming Interface 應用程序接口 ABI:Application Binary Interface 應用程序二進制接口 操做系統提供的運行環境(不一樣操做系統是通常是不兼容的)