计算机操作系统
超线程
操作系统 管理硬件和软件的 软件
提供界面 或者命令行等
提供接口
并发性
共享性
互斥访问
同时访问
虚拟性 把物理实体转化为若干个虚拟实体
时分复用
空分复用 虚拟磁盘 虚拟内存
异步性:
多个进程 走走停停 执行
进程:系统进行资源分配和调度的基本单位
线程: 进行运行调度的最小单位
进程状态模型
创建: 创建pcb 插入就绪队列
就绪状态 除了cpu以外的资源 , 就绪队列
运行状态 获取cpu
阻塞状态 放弃cpu
终止: 系统清理 归还pcb
进程同步:
生产者和消费之问题
哲学家进餐问题
临界资源
互斥量 /读写锁/自旋锁/条件变量
线程同步:
进程分类:
前台进程:具有终端,可以和用户交互
后台进程:不需要和用户交互, &结尾启动
守护进程:特殊的后台进程, 系统启动就开始执行,到系统关闭 以d结尾 crond httpd mysqld
进程的父子状态:
pstree命令
0号进程 第一个进程
1号进程 0的子进程 init
man ps 可以看进程的状态解释 top , ps -aux, kill
进程调度:
就绪队列的排队机制 以一定方式排序,最快的找到就绪进程
选择运行的委派机制 以一定策略排序,最快的选择
新老进程的上下文切换 老的上下文信息 放到主存,新的放到主存
分类:
非抢占式调度:切换少 不公平 专用系统
抢占式调度: 切换多 公平 通用系统
算法:先来先服务 短进程优先 优先级优先(前台>后台) 时间片轮转
死锁:
2个或者2个以上进程执行中,由于竞争资源或通信 产生阻塞,没有外力 一直进行下去
竞争资源缺少 调用顺序不当
产生的原因: 互斥条件 请求保持 不可剥夺 环路等待
预防算法:一次性申请所有资源 长时间可以释放 调度顺序排序
银行家算法:
已分配资源表 所需资源表
可分配资源表
内存分配和回收
分配:(物理分配) 字块
单一连续分配 系统区和用户区
固定分区分配 所有进程需要的空间一样
动态分区分配
空闲表
空闲链
首次适应算法 空闲链
最佳适应算法 空闲链排序
快速适应算法 多个空闲链
回收:
空闲区与回收区一起 扩大空闲区 或者新建空闲节点
段页式存储管理(逻辑分配)
页式管理
将进程逻辑空间分成很多大小一样的页
把物理空间分层很多物理块
把页放进物理内存分散的物理块
页表 页号 和字段地址
段式管理
将进程逻辑空间分成很多大小不同的段(比如不同的函数) 对应字段大小也不同
段表 段号 基址 段长
段页式:先分段 后分页
段页表:段号 页号 字段地址
虚拟内存:
物理内存不够,
局部性原理:运行时需要的指令和数据聚集在一起,
程序运行时不需要全部放到内存,访问不存在时 发出缺页中断 页面置换,看起来无限大 就是虚拟内存(磁盘)。
算法:
先进先出
LRU
LFU
置换发生时机: cpu 缓存 主存 辅存 缓存-主存 速度问题 主存-辅存 容量问题
linux 的存储管理
Buddy算法
页内碎片 和页外碎片
2的向上幂区空闲块
多个空闲链
swap空间:磁盘的一个分区 属于辅存 ,内存满时 放到辅存 初始化系统分配
文件系统:
有结构文件 png
无结构文件 exe 流式文件
顺序文件 磁带 效率高
索引文件 索引表 方便增删查改
辅存的空间分配
连续分配
链接分配 -- 链表
索引分配 -- 索引表
目录树 挂载
文件系统
FAT
NTFS win linux
EXT2/3/4 Inode table 一个文件一个inode 文件的索引节点
inode 类型 权限 地址 长度 创建时间 修改时间 访问计数 ;;;名称放在目录的inode节点理
dataBlock 数据内容 和inode关联
IO设备:
cpu 进 输入设备
cpu 出 输出设备
存储设备 交互io设备
块设备 (磁盘) 字符设备 (shell 打印机)
io 和程序之间的缓存区 缓存池
spooling技术 虚拟设备技术 把同步调用改为异步调用