解说操作系统:(2)多任务模型引入的问题

上期回顾:

       进程是程序的一次执行过程,操作系统以进程为单位调度任务;

       多个进程共享CPU,每个进程都有自己的虚拟CPU,物理CPU就在这些虚拟CPU之间来回切换,构成多任务模型。

       

       其实从单个任务的角度看,他们是不喜欢甚至讨厌操作系统的!

       为什么?因为进程跟人一样,是贪得无厌的,而操作系统剥夺了他们独占硬件资源的权力!

注意:

       由于CPU在各个进程之间来回快速切换,所以每个进程执行其运算的速度是不确定的;而且当同一个进程再次运行时,他的运算速度通常不可再现;所以,在对进程编程时决不能对时序做任何确定的假设。

分析:

       1.由于硬件资源CPU有限,各个进程轮流运行,那么从单个任务的角度,他的执行过程就要受到其他任务的影响,比如其他任务的优先级,任务数量的多少等等!就像开车一样,你的奔驰能开250,但是也得路况满足才行,如果你在北京的路上,估计最多25了,呵呵!谁都想开的更快点,但是道路有限,别的车也得跑不是。所以你开车速度的多少(进程速度),就不取决于你自己了,取决于:道路的宽窄(CPU能力)、其他车的多少(进程数量),特权车的多少(优先级)。

       2.再以北京交通为例,同一条道路,每一天的交通路况都不相同,取决于:车数量的多少,天气情况,是否有交通事故等等。那么你开同样一辆车,同样的道路,不同时间走得快慢就不一样,所以用的时间就不同了,这个很好理解。

       3.正因为你不能对外界环境做非常精准的预期,同样你不能对自己的开车速度和开车时间做精准预期。天气多变,尾号限行,严重的你一晚上都未必能到家,比如说前两天北京的大暴雨,有的人3点才能到家,而有的人根本就到不了家了,哎!他们有错吗?他们没有区别,区别的是外部环境。祝福那些到不了家的人吧,更祝福你们的家人!


本质:

      其实这种现象的造成,是有本质原因的。在于操作系统和单个进程本身,他们是一对矛盾体,各自存在的目的是不同的!

      操作系统的存在:计算机那么多硬件资源,每次只让其中一个干活,其他人歇着太浪费了,我得把他们组织起来,谁都不能偷懒。有点资本家的味道,呵呵!

      进程的存在:我有我的任务,就是最快的把我这边的工作完成,好向老板要奖励,我才不管他们之间谁歇着呢,只要我交给他们的活儿,一直没停就行。苦命的码农啊!

即:操作系统是为了宏观上硬件利用率的最大化,减小瓶颈损失;单个进程是为了独占资源,快速运行。一个全局一个个体,目的不同,矛盾产生!


既然矛盾天然形成,那么我们就只能最大化的避开。

注意:

       当一个进程具有严格的实时要求时,也就是一些特定事件一定要在所指定的若干毫秒内发生,那么就必须采取特殊措施保证他们一定在这段事件中发生。但是,通常大多数进程并不受CPU多道程序设计或者其他进程相对速度的影响。

       例如:进程A延时3S,操作系统就会让其阻塞,调度其他进程运行;等3S时间到,并不是说这个进程就能马上运行,而是操作系统把A再次放入就绪队列,产生调度中断。问题就在这里,调度中断并不能保证A一定运行,这跟调度算法有关了,其实就是刚开始说的问题了。如果想马上运行,就必须在优先级上,在调度策略上进行优化了!说了半天,又转回来了,其实就是一个问题,呵呵!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值