进程终止条件
1正常退出
2出错退出
3严重错误
4被其他进程杀死
需要线程的理由:
1一个进程需要多个活动
2 线程的性能更好一些 更加的轻量
优点
1不需要陷阱 不需要上下文切换 允许自己定制调度算法
缺点 无法实现时钟中断 如何实现阻塞系统调用
避免进程竞争的方法:
1 屏蔽中断
2 锁变量(无法实现)
3严格轮换法(并不好 一直在忙等待 浪费CPU)
4 Peterson彼得森算法 (忙等待)
5 TSL硬件指令
通信原语在无法进入临界区会阻塞 而不是忙等待
管程和临界区的区别在于管程中的线程可以自己放弃 让其他线程进来 临界区的线程必须执行完毕
进程之间的通信可以使用系统调用 send receive来发送接收消息
屏障是用于给进程组使用的同步方法
2.4
调度
何时进行调度
1在创建一个新的进程以后 要决定运行父进程还是子进程
2 在一个进程退出的时候决定调度
3当一个进程阻塞在I/O和信号量上或者其他原因阻塞
4发生I/O中断的时候
调度算法分类
1批处理类 重要的是 吞吐量 周转时间XPU利用率
1先来先服务 优点:易于理解 缺点:低效 主要因为IO密集
2最短作业有限
3最短剩余时间优先
2交互式 (最小响应时间)
1 轮转调度
2 优先级调度(给每一个进程分配一个优先级 一般来说 在每次时钟中断的时候 都降低进程的优先级)
3多级队列
4最短进程优先(问题 如何找到最短的那个进程)
5保证调度
6彩票调度
7公平分享调度(保证各个进程分配CPU的时间相同)
3 实时
调度算法的目标
1公平 2保持系统各部分尽可能的忙碌
用户级线程和内核级线程的差别主要在性能(用户级线程性能更好)