1. 操作系统分类
Multics -> UNICS -> UNIX
-> freeBSD -> MACOS
-> linux
-> windows
x86平台
1. RedHat
2. CentOS
3. Fedora
4. Debian
5. Ubuntu
6. OpenSuSe
7. Kail
基于centos 7.2二次开发
2. 操作系统原理
1. 用户态进程: 普通进程
2. 内核态进程: 直接与计算机硬件进行交互
PC/SERVER 8G M.M
任务1 | 任务2 通过进程running
进程1 | 进程2 相同级别进程之间发生资源抢占
内核8G(它自己占1G)
任务1-进程1 - 3G
任务2-进程2 - 4G
SYSTEM CALL 打电话给内核
比如要用打印机: 就必须加载与打印机相关的程序 硬盘: 必须使用硬盘的驱动程序
1. shell接口: 图形化、命令行
2. 用户程序&系统服务
3. 操作系统函数库
4. kernel
5. 硬件设备驱动程序
6. 硬件
操作系统函数库负责接收用户态指令并且将其转换为系统调用。
系统调用是指用户态应用程序希望通过内核程序帮助其执行指令。
内核程序负责控制底层硬件资源,并且为用户态进程分配资源。
内核程序需要通过驱动程序控制硬件。
驱动程序负责接收内核发送来的控制指令,并将其转换为硬件可以识别的指令来对硬件发起控制。
1. CPU划分 --- 时间分片
2. 内存划分 --- 空间分页
3. I/O划分 --- 中断(DMA方式)
3. CPU资源分配
CPU资源分配 --- 时间
4、6、8
2个物理核心 --- 超线程 4个逻辑核心
6个逻辑核心 --- 运行50个进程
800MHZ 1s计算800M次 800 000 000 8亿次
内核先占据CPU全部时间,再通过时间分配方式,将不同的应用程序分配不同时间
4. 内存资源分配
内存分配 --- kernel占据全部内存,通过空间分片方式将不同区域的内存分配给用户态应用进程。
对于应用程序需要获取到一段连续的线性地址空间
对于应用程序启动后,内存会动态调整
OS-kernel内核看到的是物理内存地址空间,kernel不会直接将物理内存分配给应用程序
1. 创建page内存页
可以将物理内存空间,进行4096cell划分为一个page
2.创建映射物理内存&虚拟内存映射
通过TLB(转译后备缓冲区),实现物理内存地址和虚拟内存地址的映射关系
每个应用程序看到的内存地址空间是kernel通过TLB映射表给应用程序准备的虚拟内存地址。
5. I/O设备资源分配
网卡
硬盘
USB
I/O控制器汇总芯片
早期名称: 南桥 / 现在名称: PCH平台总线控制芯片
应用程序访问网卡/硬盘 发送I/O指令
TCP/IP ---- [ether2][ip][udp][app] -> 000101010
SCSI ---- Bus-id | targer-id | LUN-id | LBA -id
所有的I/O指令都属于敏感指令
在用户态进程使用I/O设备时需要通过System all 发起系统调用,通知内核后再给需要的用户态进程使用I/O设备。
1. 用户态进程 ->发起I/O请求-> 2. 操作系统函数库 ->系统调用-> 3. 操作系统内核程序 ->加载驱动程序-> 4. 硬件设备驱动程序 ->通过硬件驱动程序访问硬件-> 5. I/O设备
system all 发起系统调用,通知内核后再给需要的用户态进程使用I/O设备。