(PS:个人课下整理的操作系统笔记,OneNote直接拷贝过来的,图片看不了就将就一下,配合张伟老师的PPT看效果更好)
第一章
1.什么是操作系统
2.计算机系统的组成部分(4个)
3.中断的类型(4个)程时I硬,
什么是中断(当CPU中断时,它暂停正在做的事并立即转到固定的位置去执行)
4.中断向量:中断有中断处理程序,中断处理程序有中断处理子程序,(子程序有指针表,指针表位于低地址),子程序的地址数组称为中断向量,它可以提供中断处理子程序的地址
5.什么是内存
6.什么是DMA,该设备控制器能在本地缓冲和内存之间传送一整块数据,无需CPU干预
7.什么是多道程序设计
8.陷阱是一种软件中断,知道用户模式和内核模式以及之间的转换书上P17
第二章
1.什么是系统调用(提供了操作系统提供的有效服务界面)
Provide the interface between a running program and operating system
2.向操作系统传递参数的三种方法:寄存器,压入堆栈、块或堆栈
3.系统调用的类型:进程控制、文件管理、设备管理、信息维护、通信
4.操作系统的结构:简单结构、分层方法、微内核
第三章
1.什么是进程
2.什么是PCB
3.一次只有一个进程可以在一个处理器上运行,但是多个进程可以处于就绪或者等待状态
4.什么是消息传递系统(多个进程不必通过共享地址空间…..,直接通信和间接通信)
第四章
1.什么是线程
2.不管有多少CPU,单线程进程只能运行在一个CPU上
3.多线程模型,多对一,一对一,多对多
4.多线程的fork()与exec(),如果fork后面紧跟exec(exec的参数所制定的程序会替换整个进程),则fork仅复制进程中被调用的那个线程,如果只有fork,应该复制进程中的所有线程
第五章
1.CPU调度是多道程序操作系统的基础
第六章
1.什么是协作进程(可以与系统内正在执行的其他进程相互影响的进程)
2.什么是竞争条件(多个进程并发执行并操作同一个数据,且执行结果与访问发生的特定顺序有关)
3.临界区问题的解答满足三个要求(互斥,前进,有限等待)
4.Test and set 和Swap都解决了互斥,但是没有解决有限等待的要求,这两个属于硬件 同步问题
5.什么是信号量(是个整数变量,只有wait和signal两个原子操作)
6.信号量的缺点是忙等待,浪费CPU时钟,这种类型的信号量也叫自旋锁(spinlock),如果锁占用时间短,那么自旋锁就有用了,自旋锁常用于多处理器
第七章
1.什么是死锁
2.死锁满足的四个必要条件
3.资源分配图的表示方法(圆形表示进程,方形表示资源)
4.死锁的处理方法:3方面
- 确保系统不发生死锁
- 死锁预防(互斥,占有并等待,非抢占,循环等待)
- 互斥——非共享资源有互斥条件(资源本身性质决定)
- 占有并等待——一个资源在申请资源时,不能占有其他资源 缺点:资源利用率低,可能饥饿(静态资源分配图)
- 非抢占——如果一个进程占有资源但申请不能立即分配的资源,他的现有资源可以被抢占(资源本身性质决定)
- 循环等待——为每个资源排序,进程按资源的升序申请(有序资源分配法)
- 死锁避免(一年一道大题)
- RAG
- BA
- 安全性算法
- 初始化Finish[i]=false,work=Available
- 对每一个i,如果找到finish[i]=false&&Needi<=work,没有就跳到d)
- Work=work+Allocationi,Finish[i]=true
- 如果所有的finish[i]=true,则系统处于安全状态
- 资源请求算法
- 如果requesti<=needi,else产生出错条件
- 如果requesti<=Available,else必须等待
- Available=Available-requesti
- 安全性算法
- 死锁预防(互斥,占有并等待,非抢占,循环等待)
Allocationi=Allocationi+requesti
Needi=Needi-requesti
- 如果状态安全,则Pi可以被分配资源
- 系统可以死锁,提供检测和恢复
- 死锁检测
- 类BA
- 初始化if allocation[i]!=0,Finish[i]=false,else =true
- 找到一个i满足finish[i]=false&&Needi<=Work
- Work=Work+Allocationi;Finish[i]=true
- 如果找到finish[i]=false,则系统处于死锁状态
- 类BA
- 死锁检测
- 忽视问题,重启