zoukankan      html  css  js  c++  java
  • 操作系统的功能

         (根据《程序员的自我修养》整理,整理者:华科小涛,@http://www.cnblogs.com/hust-ghtao转载请注明)   

                                                            135272029

        操作系统有两个功能:提供抽象的接口和管理硬件资源

    1. 管理硬件资源—不要让CPU打盹

    1.1 多道程序

        在计算机发展的早期,CPU资源十分昂贵,如果一个CPU只能运行一个程序,那么当程序读写磁盘时,CPU就闲下来了,这可是巨大的浪费啊!于是人们很快就编写了一个监控程序,当某个程序暂时不需要使用CPU时,监控程序就把另外的正在等待CPU资源的程序启动,使得CPU能够充分利用起来。这种被称为多道程序的方法看似原始,但是它当时可是大大提高了CPU的利用率。不过这种原始的多道程序的技术存在的最大问题是程序之间的调度策略太过粗糙。对于多道程序来说,程序之间不分轻重缓急,如果有些程序积蓄使用CPU来完成一些任务(比如用户交互任务),那么很有可能很长时间以后才有机会分配到CPU。这对于有些响应时间要求的程序来说是很致命的,想象一下你在Windows下点击鼠标10分钟以后系统才有反映,那该是多么沮丧的事情。

    2.1 分时系统

        经过稍微的改进,程序运行变成了一种协作的模式,即每个程序运行一段时间以后都主动让出CPU给其它程序,使得一段时间内每个程序都有机会运行一小段时间。这对于一些交互式的任务尤其重要,比如点击一下鼠标或按下一个键盘按键后,程序所需要处理的任务可能并不多,但是需要被尽快处理,使得用户能够立刻看到效果。这种程序协作模式叫做分时系统,这时候的监控程序已经比多道程序复杂多了,完整的操作系统的雏形已经形成了。

        但是这里还有一个问题,如果一个程序在进行一个很耗时的工作,一直霸占着CPU不放,那么分时操作系统也没有办法,整个系统看上去就像死机了一样。比如一个程序进入了死循环,那么整个系统就停止了。

    3.1 多任务系统

        这种现象在现在看来是很荒唐的,系统中的任何一个程序死循环都会导致系统死机,这是无法令人接受的。现在都在用一种更为先进的操作系统,那就是多任务系统。在这种模式下,操作系统接管了所有的硬件资源,并且本身运行在一个受硬件保护的级别。所有的应用程序都以进程的方式运行在比操作系统权限更低的级别,每个进程都有自己独立的地址空间,使得进程之间的地址相互隔离。CPU由操作系统统一进行分配,每个进程根据进程优先级的高低都有机会得到CPU,但是,如果运行超过了一定时间,操作系统会暂停该进程。这种CPU资源分配方式即所谓的抢占式,操作系统可以强制剥夺CPU资源并且分配给它认为目前最需要的进程。如果操作系统分配给每个进程的时间都很短,即CPU在多个进程之间快速切换,从而造成了很多进程都在同时运行的假象。

    2. 对硬件的抽象

        操作系统作为硬件层的上层,它是对硬件的管理和抽象。对与操作系统上面的运行库和应用程序来说,它们希望看到的是一个统一的硬件访问模式。

        当成熟的操作系统出现以后,硬件逐渐被抽象成了一系列的概念。比如在UNIX中,硬件设备的访问形式跟访问普通文件形式一样。这让程序员从硬件的细节中解放出来,可以更多的去关注应用程序本身的开发。这些繁琐的硬件细节全都交给了操作系统,具体的说是操作系统中的硬件驱动程序来完成。驱动程序可以看作是操作系统的一部分,它往往跟操作系统内核一起运行在特权级,但它又与操作系统内核之间有一定的独立性,使得驱动程序有比较好的灵活性。因为PC的硬件多如牛毛,操作系统开发者不可能为每一个硬件开发一个驱动程序,这些驱动程序的开发工作通常由硬件生产厂商完成。操作系统开发者为硬件厂商提供了一系列接口和框架,凡是按照这个接口和框架开发的驱动程序都可以在该操作系统上使用。

  • 相关阅读:
    你有没有发现你的文章被人侵权?推荐一个工具给你
    带你找到五一最省的旅游路线【dijkstra算法代码实现】
    【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?
    Floyd算法java实现demo
    【销售系统设计01】关于线上与线下销售业绩冲突处理
    jenkins maven 自动远程发布到服务器,钉钉提醒团队
    研究windows下SVN备份及还原恢复方案
    xamarin.android SurfaceView 实现 游戏 触摸摇杆
    C++ 头文件和源文件 和 编译流程
    十大经典排序算法总结(JavaScript描述)
  • 原文地址:https://www.cnblogs.com/hust-ghtao/p/3970246.html
Copyright © 2011-2022 走看看