操作系统概念 -第七版-重要概念的理解-(34-40)

 

操作系统概念 -第七版-重要概念的理解-(34-40)


34.fork()从父进程的当前代码开始复制一个子进程,如果在子进程调用exec()执行指定其他程序,那么子进程会被指定程序覆盖。
而在线程中调用fork有2种:一、只复制当前线程到子进程中,二、复制整个进程中的所有线程到子进程中。

35.CPU调度中,
有简单的短期调度算法"FCFS先进先服务调度"的算法,这个算法CPU会有很时间花在等待上;
第二个稍微复杂的"短作业优先调度"算法,这个算法适合长期调度,特别是线程执行时间长短差异较大,这个算法有个问题就是怎么预测执行时间;
第三个就是“优先级调度”,每个线程都有执行的优先级,优先级低的作业要让步给优先级高的,这个算法容易出现低优先级线程久久未被执行,也就我们说的线程饥饿,解决办法就是“优先级衰老机制”,没过10分钟就会把所有等待线程的优先级-1,有个需要注意的是,假定优先级由低到高为" 127 - 0 " ,原本优先级为127(最低优先级),-1后变成0;
---------------------------------------在讲第四种之前要一个华丽的分割线-----------------------------------------
因为前面几种算法都是在强调 “被调度的作业是不可分割的原子”。而第四种算法则认为被调度的作业是可以被分割成很多时间片的。同时
轮转法调度被称为:一种最古老,最简单,最公平且使用最广的算法。


第四个算法是“轮转法调度”,这个算法就是把所有作业切成小时间片,所有进程都公平的执行一个小片段后就退让出CPU,这个算法有个缺点: 时间片设得太短会导致过多的进程切换,降低了CPU效率;而设得太长又可能引起对短的交互请求的响应变差。将时间片设为100毫秒通常是一个比较合理的折衷。


第五个算法,我们可以给把任务按照需求分到不同的队列,不同的队列采用不同的算法,这个叫做“多级队列调度”,这是从队列数目的层面上对调度算法的优化,这个算法相比于前四个没那么精华。


再透露一个秘密,上面的算法很少单独使用,换句话说实际应用场景中的调度算法更复杂,比如上面5个算法可以同时使用。
这个算法的名字叫“多级反馈队列调度算法”,自己传送到搜索引擎查阅资料,这里不介绍了,


36.现在进入CPU的维度上去讨论调度问题(多CPU的机器很多,这里我们讨论的是同构多处理器),设计让多个CPU共享任务队列会涉及到一个“亲和度”,所谓的“CPU亲和度”就是CPU能否很好的适合其他CPU执行过的进程,就好比研究“鳏夫寡妇”能否和睦相处,是不是很有意思?其中不允许这种“转嫁”行为的叫硬亲和度,linux系统就是这种类型的,允许这种行为,但不保证可行的叫“软亲和度”。


37.解决了CPU亲和度的问题后,就要解决多核CPU的另一个大难题:“多核CPU的负载均衡问题”,负载均衡使得所有CPU都拥有自己的执行队列,多核CPU的执行时复杂的问题,我的资料缺页了,所以很抱歉。


38.顺道提一个“在多级反馈队列中,通常优先级与时间片的长度成反比,高优先级时间片短”,比如windows和solaris。而linux则反着来。


39.linux中,静态优先级一般为实时任务,而动态优先级会随着IO的沉睡时间来调参任务的优先级nice(+5或-5)。


40.对CPU的调度算法最好根据系统的使用场景来决定,比如Windows XP的前台进程的时间片数量会比后台进程的时间片数量多3倍。常用的考量参数:cpu的使用率,和cpu的吞吐量,吞吐量涉及周转时间和所有任务执行的总时间等等。




操作系统概念背诵 一、进程管理 1. 进程管理的功能 ① 进程控制 ② 进程同步 ③ 进程通信 ④ 进程(线程)调度 2. 程序顺序执行时的特征:顺序性、封闭性、可再现性。 3. 程序并发执行时的特征:间断性、失去封闭性、不可再现性。 4. 进程由程序段、数据段和进程控制块(PCB)组成。 5. 进程的定义 ① 进程是程序的一次执行。 ② 进程是一个程序及其数据在处理机上顺序执行时所发生的活动。 ③ 进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。 ④ 进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。 6. 进程的基本特征:动态性、并发性、独立性、异步性、结构特征(程序+数据+PCB) 7. 进程的状态 三态:就绪状态、运行状态、阻塞状态。 五态:活动就绪、静止就绪、活动阻塞、静止阻塞、运行。 8. 进程控制块(PCB)的组成:进程标识符、处理机状态、进程调度信息、进程控制信息。 9. 临界区:进程中访问临界资源的那段代码叫做临界区。 10. 同步机制必须遵循的原则:空闲让进、忙则等待、有限等待、让权等待。 11. P, V 操作的定义 P(S):S = S − 1; 若S≥0,则当前进程继续运行; 若S<0,则将当前进程插入到S 的等待队列中去。 V(S):S = S + 1; 若S>0,则当前进程继续运行; 若S≤0,则从S 的等待队列中移出一个进程放到就绪队列中去。 12. 信号量的物理意义 S = −n 时,表示有n 个等待进入临界区的进程,当前已有进程在临界区中访问临界资源; S = 0 时,表示不允许任何进程进入临界区,当前已有进程在临界区中访问临界资源; S = n 时,表示临界区是空闲的,该类资源的可用数目为n,可以有n 个进程访问该类资源。 13. 高级通信机制有:共享存储器系统、消息传递系统、管道通信系统。 14. 线程的定义:线程是进程内的一个实体,是处理机调度的基本单位,是程序内部一个单一的顺序控 制流。 15. 引入进程的目的:是为了使多个程序并发执行,提高资源利用率和系统吞吐量。 16. 引入线程的目的:是为了减少程序并发执行时的时空开销,使操作系统具有更好的并发性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值