操作系统之-进程调度

*进程调度的目的:

极小化平均响应时间,极大化吞吐量。

*程序使用CPU的模式:有何特点:

!程序大部分时间在CPU上执行  -》CPU导向或计算密集型程序。运用于->科学计算或天文计算

!程序大部分在进行输入输出操作-》io导向或输入输出密集型程序。->运用于人机交互,游戏。

!介于两者之间-》平衡型程序。->网络浏览,下载,视屏等。

*比较短任务优先和优先级调度算法:

短任务STCF:执行时间更短的任务拥有更高的优先级(容易出现饥饿问题和难以判断任务具体运行时间长短)

优先级调度:给每一个进程赋予优先级。可避免饥饿问题(通过动态调节优先级可避免)该方法缺点是不能保证程序的响应时间

*保证调度和时间片调度的异同(待解决):

都致力于让每一个程序都拥有公平的资源使用

保证调度是让n个程序运行1/n的时间,而时间片则是每个程序运行x 的时间.(觉得这个答案不好)

*优先级倒挂:

!低任务持有一个高任务优先级所需要的共享资源。造成两个任务的优先级倒挂,此时若有一个并不需要用到该公共资源的中优先级任务,则会获得cpu的控制权,导致高优先级任务被临界区外的低级任务阻塞。

!如果高优先级倒挂时不是阻塞状态,而是(循环)繁忙态,永远无法获得所需资源。(低优先级进程使用不了cpu,释放不出来共享资源)

!最麻烦的事可想而知,造成系统响应时间加长

……-》预防倒挂措施:

                                    -----引入中断禁止:设立可抢占优先级(一般程序运行时的优先级)和中断禁止优先级(运行于临界区的优先级)。我的理解:给低优先级设置成禁止中断优先级,可避免中优先级任务抢占资源。该方法适用于嵌入式系统。需要将临界区 设置的很短。

                                    ------单一共享标志锁(旋锁):多cpu中无法使用禁止中断,引入此解决策略(填坑)。

                                    -------优先级上限:避免低优先级持有资源就行了-》让共享的临界区有自己的优先级,让访问它的进程获得该优先级。实例:mutex系统进程(理解成一个保护临界区的先)中,一个程序进入Mutex的保护区,获得该资源的优先级,其他进程进来时自动获得低优先级。(如果后来的进程具有比mutex保护程序更高的优先级,还是容易发生倒挂)

                                    -------优先级继承:持有资源的低优先暂时继承该高优先级的级别,整完之后换回去。

*进程调度中的适度性

响应时间和期望性要相匹配,例如:用户期待1s解决,我们给他设计成0.1s就可以解决。

过多的去缩减意义并没有那么大。(反而会增加系统设计的难度且用户还感受不到你的设计的优点)

*针对具体的商业操作系统分析其进程调度策略转自别人的博客

                        https://blog.csdn.net/deyili/article/details/6420034






实验内容: 编写一个单处理机下的进程调度程序,模拟操作系统对进程的调度。 要求: 能够创建指定数量的进程,每个进程由一个进程控制块表示。 实现先来先服务调度算法:进程到达时间可由进程创建时间表示。 实现短作业优先调度算法:可指定进程要求的运行时间。(说明:对不可剥夺的短作业优先算法,当作业运行时间相等时,优先调度进程号小的进程执行;对可剥夺式的短作业优先算法,即选最短剩余时间的进程进行运行,在剩余时间相同的情况下,选择到达时间早的进程进行运行) 实现时间片轮转调度算法:可指定生成时间片大小。(说明:新进程到来时插入到就绪队列的队尾,当进程P运行完一个时间片时,若同时有进程Q到达,则先在就绪队列队尾插入新到达的进程Q,之后再插入进程P) 实现动态优先级调度算法:可指定进程的初始优先级(优先级与优先数成反比,优先级最高为0),优先级改变遵循下列原则:进程在就绪队列中每停留一个时间片,优先级加1,进程每运行一个时间片,优先级减3。(说明:本算法在优先级相同的情况下,选择到达时间早的进程进行运行) 测试用例格式如下: 输入:调度算法    进程号/到达时间/运行时间/优先级/时间片 输出:调度顺序/进程号/开始运行时间/结束运行时间/优先级 其中调度算法选项为:1----先来先服务,2----短作业优先,3----最短剩余时间优先,4----时间片轮转,5----动态优先级
编写一个单处理机下的进程调度程序,模拟操作系统对进程的调度。 要求: 1.能够创建指定数量的进程,每个进程由一个进程控制块表示。 2.实现先来先服务调度算法:进程到达时间可由进程创建时间表示。 3.实现短作业优先调度算法:可指定进程要求的运行时间。(说明:对不可剥夺的短作业优先算法,当作业运行时间相等时,优先调度进程号小的进程执行;对可剥夺式的短作业优先算法,即选最短剩余时间的进程进行运行,在剩余时间相同的情况下,选择到达时间早的进程进行运行) 4. 实现时间片轮转调度算法:可指定生成时间片大小。(说明:新进程到来时插入到就绪队列的队尾,当进程P运行完一个时间片时,若同时有进程Q到达,则先在就绪队列队尾插入新到达的进程Q,之后再插入进程P) 5.实现动态优先级调度算法:可指定进程的初始优先级(优先级与优先数成反比,优先级最高为0),优先级改变遵循下列原则:进程在就绪队列中每停留一个时间片,优先级加1,进程每运行一个时间片,优先级减3。(说明:本算法在优先级相同的情况下,选择到达时间早的进程进行运行) 测试用例格式如下: 输入:调度算法    进程号/到达时间/运行时间/优先级/时间片 输出:调度顺序/进程号/开始运行时间/结束运行时间/优先级 其中调度算法选项为:1----先来先服务,2----短作业优先,3----最短剩余时间优先,4----时间片轮转,5----动态优先级
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值