进程管理
进程和线程
- 进程是资源分配的单位。
- 线程是独立调度的基本单位,是进程内部的一个执行序列。是进程划分的更小的运行单位。
- 线程共享进程的堆和方法区(元空间),每个线程有自己的程序计数器、虚拟机栈和本地方法栈。
进程状态
5种状态:new, ready, running, waiting, terminated.
进程间通信
7种常见方式:管道/匿名管道(父子进程或兄弟进程间)、有名管道(实现本机任意两个进程通信)、信号、消息队列(消息的列表,存放在内核,克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺陷)、信号量、共享内存、套接字(客户端和服务器之间)。
进程调度算法
- 先到先服务
- 短作业优先
- 时间片轮转
- 多级反馈队列调度
- 优先级调度
进程同步
- 概念:临界区、同步与互斥
- 信号量解决同步问题
- 管程:把同步互斥问题的代码独立出来
- 经典问题:哲学家进餐、读者写者
其他
- 孤儿进程(父进程退出,子进程还在,没有危害),僵尸进程(子进程退出,父进程没有释放子进程信息,可能因为没有可用进程号导致不能产生新进程)
- 线程同步:互斥量、信号量、事件
- 实时系统(硬实时和软实时)
死锁
-
必要条件:互斥、占有等待、不可抢占、环路等待
-
处理方法
- 鸵鸟策略:Unix,Linux,Windows都采用
- 死锁检测和恢复
- 死多预防(破坏必要条件)
- 死锁避免:安全状态、银行家算法
内存管理
内存管理主要负责内存的分配和回收以及地址转换。
内存管理机制
-
虚拟内存:让物理内存扩充成更大的逻辑内存,MMU管理地址空间和物理内存的转换
-
连续:块式
-
非连续
- 页式:页表(页和页框段映射表),页面号+偏移量。
- 段式:一个段构成一个独立地址空间,共享和保护。
- 段页式:先分成若干段,每段再分成若干页。
-
快表TLB(加速虚拟地址到物理地址的转换)和多级页表(避免把全部页表一直放在内存中占用过多空间)。
-
分页大小固定,分段大小不固定,段是逻辑信息的基本单位。分页是一维的,分段是二维的。
-
内部碎片和外部碎片
-
局部性原理:时间局部性和空间局部性
-
页面置换算法
- OPT最佳
- FIFO先进先出
- LRU最近最久未使用
- LFU最少使用
- NRU最近未使用
- 第二次机会算法
- 时钟算法
存储管理
-
磁盘结构:盘面、磁道、扇区、磁头、制动手臂、主轴。
-
磁盘调度算法:
- 先来先服务
- 最短寻道时间优先(可能饥饿)
- 电梯算法