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 应用程序二进制接口 操做系统提供的运行环境(不一样操做系统是通常是不兼容的)