简短
- 直接内存访问DMA:独立于CPU,设备-内存
- 通道:独立于CPU,有自己的指令系统,管理IO操作
- Spooling:用软件技术模拟独享设备的工作
- 页表:每一个作业都有关于自己的页表
- 请页静态替换:OPT
理想
、LRU、LFU、FIFO
进程:资源分配的基本单位 程序+数据+PCB
- 进程间通信
- 信号量、信号
- 管道、消息队列
- 共享内存、套接字
线程:独立调度的基本单位
- 线程同步通信
- 信号量、信号
- 互斥量、临界区
死锁
- 定义:多个进程因为竞争资源,造成的互相等待的现象
- 原因:系统资源不足、推进顺序不合理
- 必要条件:互斥、 请求保持、非剥夺、循环等待
- 处理策略
- 预防:破坏必要条件
- 避免:银行家算法
- 检测:资源分配图检查环路
- 恢复
死锁例子:+m1 +m2 -m1 +m1
- 线程T1持有锁L1并且申请获得锁L2
- 而另一个线程T2持有锁L2并且申请获得锁L1
- 因为默认的锁申请操作都是阻塞的,所以线程T1和T2永远被阻塞了
实模式、保护模式
- 实模式:程序通过
段地址:偏移值
直接访问物理内存 - 保护模式
- 程序通过
段选择:偏移值
访问虚拟内存 - 然后操作系统通过
全局描述符表
将虚拟内存转为物理地址 - 好处:进程有了严格边界,任何进程无法访问不属于自己进程的物理内存
- 程序通过
缓冲区溢出
- 定义:计算机向缓冲区填充数据时,超过了本身的容量,溢出的数据覆盖在合法数据上
- 原因:程序没有仔细检查用户输入的参数
- 危害:攻击,堆栈溢出,函数返回时,跳转到任意地址
- 程序崩溃并拒绝服务
- 跳转并执行恶意代码