1、进程和线程的区别
- 进程是什么、线程是什么。
- 进程和线程之间的关系。
2、进程间的通信方式
- 管道、有名管道;信号;信号量;共享内存;消息队列;套接字
3、线程间的同步方式
- 互斥(Lock、synchronized);信号量;事件Wait/Notify;
4、死锁产生的四个条件
- 互斥、占有等待、非抢占、循环等待
5、死锁处理基本策略
- 死锁预防:打破四个条件。
- 死锁避免:动态检测安全策略(银行家算法)。
- 死锁解除:进程终止、资源抢夺,打破循环等待条件。
6、进程的几种状态
- 就绪、运行、阻塞
7、线程的几种状态
- 初始化(new)、就绪(runnable)、运行态(running)、wait(调用wait或则join)、timewait(调用wait(long time))、阻塞(block)、dead
8、内碎片与外碎片
- 内碎片:已分配给进程,进程未使用。
- 外碎片:操作系统剩余内存不连续导致内存块不够大,不能分配给某一进程。
9、操作系统内存管理
- 页式存储:用户空间与内存按照相同大小分为页与块,从逻辑地址到物理地址的寻址是,逻辑地址/页大小,得到页号,通过页号在页表中匹配得到块号,逻辑地址%页地址得到偏移量,通过偏移量找到确定的物理地址。
- 段式存储:虚拟地址(段号,段内地址)到物理地址的寻址。段表包含(段号,有效位,长度)。虚拟地址的段号+段表基址寄存器(区分用户程序段,可以从进程中得到)与段表的段号匹配,查看有效位是否为1,若为1,则判断虚拟地址的长度是否小于对应段的长度,若小于,则通过段表基址寄存器+段内地址找到物理地址。
- 段页式存储:一个应用程序多个段,每一段中分多页。段址寄存器(存放对应应用程序的段首地址与长度),逻辑地址转换为物理地址,逻辑地址(段号,页号,偏移量)。通过段号与段址寄存器在段表找到对应的段,通过页号在页表中找到段内对应页,通过偏移量找到实际物理地址。
10、进程调度策略
- 先来先服务
- 短作业优先(操作系统为进程执行时间做评估):可能造成长作业无法执行
- 优先级调度(抢占、非抢占):可能造成低优先级不能执行
- 高响应比调度:采用(等待时间+执行时间)/执行时间,动态改变程序优先级,解决短作业与优先级调度存在的问题。
- 时间片轮转
- 多级反馈队列(从上往下,优先级降低,执行时间变长,进程先进入最上层队列,每一层中通过时间片轮转)
11、虚拟内存
- 每个进程有独立的地址空间,分为大小相等的页,每一页对应内存或磁盘上的块,每个进程只要有部分页在内存中存在时就能运行,当查找的页未在内存中时,发生缺页中断,把缺少的块调入内存。这与页对应的磁盘块就是虚拟内存。
12、页面置换算法
- 队列,先进先出。
- LRU算法(最近最少使用)
- LFU算法(使用次数最少)
- OPT最优置换算法(置换出去的是不再被使用的页或者最晚被使用的页)
13、颠簸
- 当内存中所有的页都被使用时,发生缺页中断,导致置换出正在使用的页,而导致重复发生缺页中断,降低操作系统效率。
- 解决方案:增大虚拟内存大小、终止过多进程。
14、局部性原理
- 时间局部性:当前被使用的页,在最近可能被使用
- 空间局部性:当前被使用的页周围的页可能最近被使用