操作系统工作原理

[09-12 12:22:23]   来源:http://www.88dzw.com  电路基础   阅读:8927

文章摘要:在一般情况下,操作系统的任务基本分为六种类型: 处理器管理 内存管理 设备管理 存储器管理 应用程序接口 用户界面 尽管有人争论操作系统应执行比这六项任务更多的功能,并且确实也有一些操作系统供应商将更多的实用程序及辅助功能集成到他们的操作系统中,但这六项任务几乎涵盖了所有操作系统的核心内容。下面我们将介绍操作系统执行每项功能所使用的工具。 管理处理器管理处理器的核心内容可以归结为两个相关问题: 确保每个进程及应用程序得到足够的处理器时间来实现其正常功能。 实际工作中尽可能使用更多的处理器周期。 在由处理器完成工作的计划中,操作系统处理的软件基本单元为进程或线程,具体取决于操作系统。 通常,人们

操作系统工作原理,标签:电子电路基础,模拟电路基础,http://www.88dzw.com

在一般情况下,操作系统的任务基本分为六种类型:

  • 处理器管理
  • 内存管理
  • 设备管理
  • 存储器管理
  • 应用程序接口
  • 用户界面

尽管有人争论操作系统应执行比这六项任务更多的功能,并且确实也有一些操作系统供应商将更多的实用程序及辅助功能集成到他们的操作系统中,但这六项任务几乎涵盖了所有操作系统的核心内容。下面我们将介绍操作系统执行每项功能所使用的工具。

管理处理器

管理处理器的核心内容可以归结为两个相关问题:

  • 确保每个进程及应用程序得到足够的处理器时间来实现其正常功能。
  • 实际工作中尽可能使用更多的处理器周期。

在由处理器完成工作的计划中,操作系统处理的软件基本单元为进程或线程,具体取决于操作系统。

通常,人们倾向于将进程看作是一个应用程序,但这并没有全面给出进程与操作系统和硬件之间的关联。实际上,我们所了解的应用程序(文字处理器、电子数据表或游戏)的确是一个进程,但该应用程序可能会导致几个其他进程开始运行,比如,与其他设备或计算机进行通信的任务。然而,此外还有大量我们察觉不到的运行的进程,因为它们不会提供直观的证据。例如,Windows XP和UNIX可以同时运行十几个后台进程以处理网络、内存管理、磁盘管理和病毒检查等。

因此,进程是执行一些操作的软件,并且可由用户、其他应用程序或操作系统进行控制。

操作系统控制进程(而不是应用程序),并由CPU安排执行。在单任务系统中,计划表简明易懂,操作系统允许应用程序开始运行,只有在要处理中断和用户输入时,才会暂停足够长的时间。

中断是由硬件或软件发送给CPU的特殊信号。就好比在某一次现场会议上,计算机的某部分突然举手示意以引起CPU的关注。有时操作系统通过安排进程的优先级,从而使中断被屏蔽——换言之,操作系统将忽略来自于某些源的中断,从而能够尽快完成特定的任务。然而有一些中断(比如出现错误或内存故障)非常重要,因此不能忽略。无论当前正在执行什么其他任务,都必须立即处理这些非屏蔽中断(NMI)。

尽管在单任务系统中,中断为进程的执行增加了一些复杂性,但操作系统的任务在多任务系统中更为复杂。那么,操作系统必须安排应用程序的执行,从而使人们相信这几件事看上去是同时发生的。因为CPU在某一时间只能做一件事情,这就变得很复杂。为了制造同时做多件事的假象,操作系统必须每秒在不同的进程之间转换数千次。下面我们来介绍它的过程:

  • 一个进程占用一定量的RAM,同时还会使用CPU和操作系统内存空间中的寄存器、堆栈和队列。

  • 当两个进程具有多个任务时,操作系统将为一个程序分配一定数量的CPU执行周期。

  • 在运行该数量的周期后,操作系统将备份该进程所使用的所有寄存器、堆栈和队列,并标明进程执行中止的位置。

  • 然后加载第二个进程所使用的所有寄存器、堆栈和队列,并允许它运行一定数量的CPU周期。

  • 当这些步骤完成后,操作系统将备份第二个程序所使用的所有寄存器、堆栈和队列,然后加载第一个程序。 <Script language=javascript><-- inject_code(""); //--> </Script>

    我们以一个虚拟的小型系统为例来进行分析,该系统有1兆字节(1,000千字节)的RAM。在启动进程过程中,我们将虚拟计算机的操作系统设计为位于所有可用内存的顶部,然后充分进行“备份”以满足操作系统本身的需求。例如,操作系统运行需要300千字节。那么现在,操作系统进入到RAM池的底部,并使用控制计算机硬件子系统的各驱动程序软件开始创建。在我们虚拟的计算机中,驱动程序占用了200千字节。因此,在将操作系统完全加载后,还有剩余的500千字节可用于应用程序进程。

    当应用程序开始载入内存时,它们以操作系统确定的块大小进行载入。如果块大小为2千字节,那么每个已载入的进程将会获得多个大小为2千字节的内存块。应用程序将会以这些固定的块大小载入,并开始和结束于由4或8个字节的字创建的边界。这些块和边界有助于确保各应用程序不会因为一两个字节的计算误差而载入彼此内存空间的顶部。在确保满足这一条件后,更重要的问题是,当500千字节的应用程序空间被填满之后应当采取什么措施。

    在多数计算机中,可以在原有内存空间的基础上添加内存。例如,您可以将RAM从1兆字节扩展到2兆字节。这是可行的,但通常比较昂贵。此外,这忽视了计算的一个基本现状,即由应用程序存储在内存中的多数信息在给定时间内并不会被使用。处理器一次只能访问处于一个位置的内存,因此大多数的RAM不会在任意时段使用。因为磁盘空间相对于RAM更为充足,所以将RAM中的信息移动到硬盘可以在不花费任何代价的情况下大大扩展RAM空间,这项技术被称为虚拟内存管理。

    磁盘存储是必须由操作系统管理的唯一一种内存类型,并且也是最慢的一种类型。按速度排序,计算机系统中的内存类型可分为:

    • 高速缓存——它是通过快速连接,从而使CPU可用的、相对少量的内存。缓存控制器预先判断CPU下一步将需要哪些数据,并将这些数据从主内存调入高速缓存,从而提高系统性能。

    • 主内存——这是购买计算机时所能看到的以兆字节为单位的RAM。

    • 辅助存储器——这就是大多数情况下使所有应用程序和数据可用的旋转电磁存储,它的作用是充当操作系统控制下的虚拟RAM。

    操作系统必须使用不同类型内存的可用性来平衡各进程的需求,按照进行的指示计划将数据以块(称为页面)的形式在可用内存之间移动。

    驱动程序

    操作系统和所有不位于计算机主板上的硬件是通过一种称为驱动程序的特殊程序进行通信的。驱动程序的主要作用是充当硬件子系统的电子信号、操作系统及应用程序的高级编程语言之间的转换器。驱动程序将操作系统已定义的数据视为文件,然后将它们转换成存储设备上特定位置处的比特流,或打印机中的一系列激光脉冲。

    因为在由驱动程序控制的硬件之间存在着很大的差异,因此驱动程序运行的方式也存在差异,但大多数驱动程序都会根据设备的要求运行,并且运行方式也与任何其他进程类似。操作系统频繁地将拥有较高优先级的块分配给驱动程序,以使硬件资源尽可能快地得到释放并准备进一步使用。

    驱动程序与操作系统之所以分开,其中一个原因是为了将新增功能添加到驱动程序(从而添加到硬件子系统),而无需对操作系统本身进行修改、重新编译以及重新分配。通过开发新的硬件设备驱动程序,通常由子系统的制造商执行开发或付费,而不是操作系统的发行商,整个系统的输入/输出功能将得到大幅度提高。

    管理输入和输出很大程度上是管理队列和缓冲器,从某一设备接收字节流的特殊存储设备(可能是键盘或串行端口)将存储这些字节,再将其以CPU可以处理的足够慢的速度释放到CPU。当大量进程同时运行并占用处理器时间时,这个功能尤其的重要。该操作系统将对缓冲器发出指令,使之可以继续接收该设备的输入,但当使用该输入的进程处于中止状态时,操作系统会停止向CPU发送数据。那么,当需要输入的进程再一次激活时,操作系统将会命令缓冲器发送数据。该进程允许使用键盘或调制解调器处理外部用户或高速运行的计算机的需求,尽管有时CPU不能使用那些来源的输入。

    管理计算机系统的所有资源是操作系统的主要功能,对于实时操作系统,可能需要所有的功能。但是对于其他操作系统,为应用程序提供相对简单、一致的方式以及人们使用功能强大的硬件是它们存在的一个重要原因。

    应用程序接口

    应用程序接口
    正如驱动程序为应用程序提供了一种无需了解硬件运行的每个细节即可使用硬件子系统的方法,应用程序接口(API)使每位应用程序员可以使用计算机和操作系统的功能,而无需直接跟踪CPU运行的所有细节。让我们看一个有关创建保存数据的硬盘文件的例子,以了解它的重要性。

    一位正在编写一个从科学仪器记录数据应用程序的程序员,可能希望科学家能够指定所创建文件的名称。操作系统可能提供一种称为MakeFile的API功能来创建文件。当编写该程序时,该程序员可能会插入一行,如:

    MakeFile [1, %Name, 2]

    在此示例中,该指令告诉操作系统创建一个允许随机访问其数据的文件(以1表示,对于序列文件中的其他选项可以用0表示),将由用户(%Name)键入名称,并且其大小取决于存储在该文件中的数据多少(以2表示,其他选项中的固定大小可能用0表示,并且用1表示文件在添加数据时变大,但在数据删除时却不会减小)。现在,让我们了解一下操作系统如何将指令转换成操作。

    操作系统向磁盘驱动器发送请求,以确定第一个可用空白存储空间的位置。

    使用该信息,操作系统在文件系统中创建一个项以显示文件的起始与结束位置、文件名、文件类型、文件是否归档、哪些用户具有查看或修改文件的权限,以及文件的创建日期和时间。

    操作系统在标识文件的起始位置编写信息,设置可能的访问类型,并包含将文件捆绑到应用程序的其他信息。在所有信息中,发送到磁盘驱动器的请求和文件起始与结束点的地址在格式方面很大程度上取决于制造商和磁盘驱动器的型号。

    由于程序员编写了程序来使用磁盘存储的API,因此程序员不需要跟踪指令代码、数据类型以及每个可能的硬盘和磁带驱动器的响应代码。与各硬件子系统的驱动程序相关联的操作系统,可以处理硬件更改的细节——程序员必须简单编写API的代码并相信操作系统可以完成剩下的任务。

    近年来,API已成为计算机行业竞争最为激烈的领域之一。很多公司认识到,使用API的程序员会最终将其转换成一种控制并从该行业的某一特定领域获利的能力。这就是为什么目前有这么多的公司愿意为公众免费提供阅读器和查看器之类的应用程序的原因之一。他们了解消费者将会要求这类程序可以利用免费的阅读器,而应用程序公司就准备要求支付使用费才可以使用提供消费者要求的各种功能的软件。

    用户界面

    正如API为应用程序提供了可以一直使用计算机系统资源的方法,用户界面(UI)则提供了一个用户与计算机进行交互的结构。在过去十年中,几乎所有用户界面的发展都出现在图形用户界面(GUI)领域。苹果公司的Macintosh和微软公司的Windows都引起了众多关注并占领了多数市场份额。广受欢迎的开源软件技术Linux操作系统也支持图形用户界面功能。

    Red Hat Linux操作系统的屏幕截图
    Screen shot copyright 2003 Red Hat, Inc. 保留所有权利。
    获得Red Hat, Inc.许可,重新印刷
    Red Hat Linux操作系统的屏幕截图

    还有用于其他操作系统的其他用户界面,有些是图形界面,有些则不是。

    例如,Unix具有称为外壳的用户界面,相对于标准操作系统基于文本的界面,该用户界面具有更大的灵活性以及更强大的功能。诸如Korn外壳和C外壳的程序是添加了重要实用程序的基于文本的界面,但它们的主要目的是使用户可以更轻松地利用操作系统的功能。也有一些图形用户界面,如X-Windows和Gnome,可以使Unix和Linux操作起来更像是Windows和Macintosh计算机。

    在所有这些示例中,用户界面作为一个层面是位于操作系统本身之上的程序或程序集,记住这一点很重要。对于具备不同机制的Windows和Macintosh操作系统而言,原理也是一样的。核心操作系统工作功能,即计算机系统的管理,在于操作系统的内核。尽管显示管理器与位于下方的内核紧密相连,但它是独立的。操作系统内核和用户界面、实用程序以及其他软件之间的联系决定了当今操作系统的很多差异,并且将会在未来进一步影响它们。

    操作系统的新增功能

    日益增长的网络的重要性

    对于桌面系统而言,访问局域网或互联网已经成为一种必备的功能,从而在很多方面只要谈及操作系统,就不能不说它与其他计算机和服务器的连接。操作系统开发人员已经使互联网成为能够提供重要操作系统更新和错误修复的标准方法。尽管可以通过CD接受这些更新,但使用这种方式的人越来越少。事实上,一些完整的操作系统本身只能通过互联网发布来获得。

    其次,一种称为NetBooting的进程可以很轻松地将普通消费者的台式计算机中正在运行的操作系统(内核、用户界面及所有其他内容)从它所控制的计算机上移除。而这在先前只有那些多用户平台(如UNIX)上经验丰富的超级用户以及使用特殊应用程序套件才可以实现。NetBooting允许一台计算机的操作系统通过网络中所连接任意位置的一台远程计算机服务于整个网络连接。一台NetBoot服务器可以同时为几十台客户端计算机和每台客户端计算机的用户提供操作系统,使用户得到类似于使用他们熟知的桌面操作系统(如Windows或MacOS)的体验。

    开源软件技术

    有关软件分发的特殊理念是操作系统未来发展所需关注的一个问题,即开发一种同时适用于公司和消费者的操作系统。

    大家普遍认为Linux作为一种根据开源软件技术的原则创建和分发的操作系统,已经对操作系统产生了较大的影响。大多数操作系统、驱动程序和实用程序由分发其软件可执行版本(这些版本不可以研究或更改)的商业组织编写。开源软件技术需要分发可以研究、更改以及在其基础上创建的原始源材料,并且其结果也可再次自由分发。在台式计算机领域内,这将导致无数有用的和无成本的应用程序(如图像操作程序GIMP和广受欢迎的网络服务器Apache)的开发及分发。在消费者设备领域,Linux的使用已经在更大程度上为个人用户控制其设备的工作方式铺平了道路。

    Linux徽标
    Linux徽标

    了解操作系统

    许多消费电子设备(如手机和路由器)都有意避免用户访问其中的操作系统,很大程度上是为了确保操作系统不会在无意中被破坏或删除。在许多情况下,他们保留了一种“开发人员模式”或“程序员模式”,这允许具有相应知识的用户可以进行更改。通常这些系统的编程方式是使之可以在仅有的范围内进行更改。但有些设备保留访问模式以及进行增强功能的更改方式都是开放的,特别是在使用Linux时较为常见。下面介绍几个例子:

    • TiVo DVR运行在Linux的修改版本上。所有的修改都是公开的,您可以在此处下载它们,以及用于操作代码的一些特殊工具。很多大胆的TiVo用户也是那样做的,他们为自己的系统上添加了很多功能,包括增大存储容量,进入到UNIX外壳将模式从NTSC更改为PAL。

      Philips HDR312 TiVo30小时数码录像机和Linksys EZXS55W EtherFast 10/100 5端口工作组交换机
      Philips HDR312 TiVo30小时数码录像机和Linksys EZXS55W EtherFast 10/100 5端口工作组交换机
      Amazon.com供图
      Philips HDR312 TiVo30小时数码录像机和Linksys EZXS55W EtherFast 10/100 5端口工作组交换机

    • 很多家庭路由器也使用Linux,包括Linksys公司的路由器。本文由G4TechTV提供,其中将讨论如何改编您的Linksys路由器以及控制其中的Linux。

    [责任编辑:小敏]

    上一页  [1] [2] [3] 


    Tag:电路基础电子电路基础,模拟电路基础电路基础