CPU

  •    多道程序(Multiprogramming)  : 在计算机发展的早期,CPU资源非常昂贵,如果一个CPU只能运行一个程序,那么当程序读写磁盘(当时可能是磁带)时,CPU就空闲下来了,这在当时简直是暴殄天物。于是人们很快编写了一个监控程序,当某个程序暂时无需使用CPU时,监控程序就把另外的正在等待CPU资源的程序启动,使得CPU能够充分地利用起来。
    1. 这种被称为 多道程序(Multiprogramming)的方法看似很原始,但是它当时的确大大提高了CPU的利用率。
    2. 不过这种原始的多道程序技术存在最大的问题是程序之间的调度策略太粗糙。
    3. 对于多道程序来说,程序之间部分轻重缓急,如果有些程序急需使用CPU来完成一些任务(比如用户交互的任务),那么很有可能很长时间后才有机会分配到CPU。这对于有些响应 时间要求高的程序来说是很致命的,想象一下你在windows上面点击鼠标10分钟以后系统才有反应,那该是多少沮丧的事情。
  • 分时系统(Time-Sharing System):经过稍微改进,程序运行模式变成了一种协作的模式,即每个程序运行一段时间以后都主动让出CPU给其它程序,使得一段时间内每个程序都有机会运行一段时间。这对于一些交互式的任务尤为重要,比如点击一下鼠标或按下一个键盘按键后,程序所要处理的任务可能并不多,但是它需要尽快地被处理,使得用户能够立即看到效果。这种程序协作模式 叫做分时系统(Time-Sharing System)。
    1. 这时候的监控程序已经比多道程序要复杂多了,完整的OS雏形已经逐渐形成了。 
    2. window早期版本(Window95 和window NT之前),Mac OS X 之前的 mac os 版本都是采用这种分时系统的方式来调度程序的。
    3. 比如在window3.1中,程序调用 Yield、GetMessage或PeekMessage这几个系统调用时,Windows3.1 OS会判断是否有其他程序正在等待CPU,如果有,则可能暂停执行当前的程序,把CPU让出给其他程序。如果一个程序在进行一个很耗时的计算,一直霸占着CPU不放,那么OS也没办法,其他程序都只有等着,整个OS看起来就好像死机了一样。
    4. 比如一个程序进入了一个while(1)的死循环,那么整个系统都停止了。 这在现在看起来是很荒唐的事,系统中的任何一个程序死循环都会导致系统死机,这是无法令人接受的。当然当时的PC硬件能力处理能力本身就弱,PC上的应用也大多是比较低端的应用,所以这种分时方式勉强也能应付一下当时的交互式环境。
  • 多任务系统(Multi-tasking):此前在高端领域,非PC的大中小领域,其实已经在研究一种更为先进的OS了,这种模式就是我们现在很熟悉的多任务系统(Multi-tasking),OS接管了所有的硬件资源,并且本身运行在一个受硬件保护的级别。所有的应用程序都以 进程的方式运行在比OS权限更低的级别,每个进程都有自己独立的地址空间,使得进程之间的地址空间相互隔离。
    1. CPU由OS统一进行分配,每个进程根据进程优先级的高低都有机会得到CPU,但是,但是如果运行时间超出了一定的时间,OS会暂停该进程,将CPU资源分配给其他等待运行的进程。这种CPU的分配方式即所谓的 抢占式(Preemptive)。OS可以强制剥夺CPU资源并且分配给它认为目前最需要的进程。如果OS分配给每个进程的时间都很短,即CPU在多个进程间快速的切换,从而造成了很多进程都在同时运行的假象。目前几乎所有的现代OS都是采用这种方式,比如我们熟悉的 Unix,Linux ,Mac OS X, Window NT。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值