操作系统与计算机组织基本知识(一)

    操作系统是作为计算机硬件和计算机用户之间的中介的程序。操作系统的目的是为用户提供方便且有效地执行程序的环境。操作系统是管理计算机硬件的软件,硬件必须提供合适的机制来保证计算机系统的正确性,以及确保系统不受用户程序干扰正常运行。操作系统庞大而复杂,因此它必须被分块构造。每一块都是系统中明确定义的一部分,具有严格定义的输入、输出和功能。

一、操作系统用来做什么?

计算机系统分为四个组成部分:计算机硬件、操作系统、系统程序与应用程序和用户。

硬件,如中央处理器,内存、输入输出设备,为系统提供基本的计算资源。

应用程序如字处理程序、电子制表软件、编译器、网络浏览器规定了用户按照何种方式使用这些资源。

操作系统控制和协调各用户的应用程序对硬件的使用。

计算机系统的组成包括硬件、软件以及数据。在计算机系统的操作过程中,操作系统提供了正确使用这些资源的方法。操作系统类似于政府。与政府一样,操作系统本身并不能实现任何有用的功能。它只不过是提供一个方便其他程序做有用工作的环境。

二、从用户视角来看操作系统

    我们平时在使用计算机时,面对的就是一台主机、一个鼠标、键盘、耳机和显示器。我们可以进行工作和游戏。而对于我们用户来说,操作系统为我们提供了可视化的操作界面,只需要点击图标即可进行我们想要完成的事。对于用户来说,操作系统提供了便利,性能是次要的,也不在乎资源使用率——如共享硬件和软件资源。

    而如今,我们个体接触最多的就是我们的智能手机,我们每个人的手机都有一个单独的操作系统,例如安卓和苹果。而各个厂家又在安卓的基础上开发出自己的操作系统。

    我们在家庭中使用的空调遥控器,学生计算器等等家电或者汽车这些所使用的嵌入式计算机,智能打开和关闭指示灯来显示状态,这些设备的操作系统无须用户干预就能自行运行。

三、从系统视角来看操作系统

    操作系统是与硬件最为密切的程序。可以将操作系统看作是资源分配器。计算机系统有很多资源,用来解决CPU时间、内存空间、文件存储空间、I/O设备等问题。操作系统管理这些资源,面对有限甚至冲突的资源请求,操作系统必须决定如何为各个 程序和用户分配资源,以便计算机系统能够有限而公平地运行。

    操作系统是控制程序。控制程序用来管理用户程序的执行以防止计算机资源的错误使用或者使用不当。

四、操作系统的定义

    操作系统是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。是一组管理和控制计算机硬件和软件资源,合理对各 类作业进行调度,以及方便用户使用的程序的集合。

五、计算机系统组织与结构

1.计算机系统


    现代通用计算机系统由一个或多个CPU和若干个设备控制器通过共同的总线相连而成,该总线提供了对共享内存的访问。每个设备控制器负责一种特定类型的设备。CPU可以和设备控制器并发工作,并竞争内存周期,为了确保对共享内存的有序访问,需要内存控制器来协调对内存的访问。
    当打开电源或者重启时,计算机开始运行,它需要运行一个初始化程序。该初始化程序或引导程序通常位于ROM中,成为计算机硬件中的固件。它初始化系统中所有关的部分,包括CPU寄存器、设备控制器和内存内容。引导程序必须知道如何装入操作系统并开始执行操作系统。为了完成这一个目标,引导程序必须定位操作系统内核并把它转入内存。接着,操作系统开始执行第一个进程如init,并等待事件发生。
    事件的发生通常是通过硬件或软件的中断来表示的。硬件可随时通过系统总线向CPU发出信号,以触发中断。软件通过执行特别操作如系统调用(监视器调用)也能触发中断。
    当CPU中断时,它暂停正在做的事并立即转到固定的位置去继续执行。该固定位置通常是中断服务程序开始位置的地址。中断服务程序开始执行,在执行完后,CPU重新执行被中断的计算。
    中断必须将控制转移到合适的中断处理程序。处理转移的简单方法是调用一个通用子程序以检查中断信息。接着,该子程序会调用相应的中断处理程序。

2.存储结构

    计算机程序必须在内存(RAM)中以便于运行。内存是处理器可以直接访问的唯一的大容量存储区域。它通常使用被成为动态随机访问内存的半导体技术来实现的,是一组内存字的数组,每个字都有其地址。通过对特定内存执行一些列load或store指令来实现交互。指令load能将内存中的字转移到CPU的寄存器中,而指令store能将寄存器的内容转移到内存。除了显示使用load和store外,CPU可自动从内存中装入指令来执行。
    一个典型指令执行周期首先从内存中获取指令,并保存在指令寄存器中。接着,指令被解码,并可能导致从内存中获取操作数或将操作数保存在内部寄存器中。在指令完成对操作数的执行后,其结果可以存回到内存中。内存单元智能看见内存的地址流,并不知道它们是如何产生的(通过指令计数器、索引、间接、常量地址等),或它们是什么地址(指令或数据)。
理想情况下,程序和数据都永久地驻留内存中。但这样是不可能的,因为内存容量太小,不能永久地存储所需要的程序和数据,内存是易失性存储设备,当掉电时会失去所有的内容。
    因此,绝大多数计算机系统都提供辅存以作为内存的扩充。对辅存的主要要求是它要能够永久地存储大量的数据。最为常用的辅存设备为磁盘,它能存储程序和数据。绝大多数程序(网页浏览器、编译器、字处理器、电子制表软件、游戏等) 保存在磁盘上,直到要执行时才装入到内存。许多程序都使用磁盘作为它们所处理信息的来源和目的。因此,适当的管理磁盘存储对计算机系统来说十分重要。
    存储结构由寄存器、内存和磁盘组成,这些仅仅是一种存储系统。除此之外,还有高速缓存、CD-ROM、磁带等。每个存储系统都提供了基本功能以存储数据,或保存数据以便日后提取。各种存储系统的主要差别是速度、价格、大小和易失性。根据速度和价格,可以按层次结构来组织计算机系统的不同类型的存储系统。层次越高,价格越贵,但是速度越快。随着层次降低,单个位的价格通常降低,而访问时间通常增加。这种折中是合理的: 如果一个给定的存储系统比另一个更快更便宜,而其他
属性一样,那么就没有理由再使用更慢更昂贵的存储器。
    除了不同的速度和价格,存储系统还分为易失的和非易失的。当没有电源时,正如前面所讲,易失存储会丢失其中的内容。如果没有昂贵的电池和发电机后备系统,那么数据必须写到非易失存储中以便保护。

3.I/O结构

    在计算机中,存储器只是众多I/O 设备中的一种,操作系统的大部分代码用来进行I/O管理,这既是因为它对系统可靠性和性能的十分重要,也是因为设备变化的特性。通用计算机系统由一个CPU 和多个设备控制器组成,它们通过共同的总线连接起来。每个设备控制器负责特定类型的设备,可有多个设备与其相连。例如,SCSI(smallcomputersystem interface) 控制器可有7个或更多的设备与之相连。设备控制器维护一定量的本地缓冲存储和一组特定用途的寄存器。设备控制器负责在其所控制的外部设备与本地缓冲存储之间进行数据传递。通常,操作系统为每个设备控制器提供一个设备驱动程序。这些设备驱动程序理解设备控制器,并提供一个设备与其余操作系统的统一接口。
    为了开始I/O 操作,设备驱动程序在设备控制器中装载适当的寄存器。相应地,设备控制器检查这些寄存器的内容以决定采取什么操作(如从键盘中读取一个字符)。控制器开始从设备向其本地缓冲区传输数据。一旦完成数据传输,设备控制器就会通过中断通知设备驱动程序它已完成操作。然后,设备驱动程序返回对操作系统的控制,如果是一个读操可能将数据或数据的指针返回。对其他操作,设备驱动程序返回状态信息。
    这种I/O 中断驱动适合移动少量数据,但对大块的数据移动,如磁盘I/O,就会带来超载问题。DMA(直接内存访问) 就是为了解决这个问题而设计的。在为这种I/O 设备设置好缓冲、指针和计数器之后,设备控制器能在本地缓冲和内存之间传送一整块数据,而无需CPU 的干预。每块只产生一个中断,来告知设备驱动程序操作已完成,而不是像低速设备那样每个字节产生一个中断。当设备控制器在执行这些操作时,CPU 可去完成其他工作。
    一些高端的系统采用交换而不是总线结构。在这些系统中,多个部件可以与其他部件并发对话,而不是在公共总线上争夺周期。此时,DMA 更为有效。

4.单处理器系统

    在单处理器系统中,有一个主CPU能够执行一个通用指令集,包括来自于用户进程的指令。绝大多数系统还包括其他特定目的的处理器,它们可能以专用设备处理器(比如磁盘、键盘、图形控制器) 的形式出现; 在大型机上,它们可能以通用处理器的形式出现,比如在系统部件间快速移动数据的I/O处理器。
    所有这些专用处理器运行一个受限的指令集,并不运行用户进程。有时它们由操作系统管理,此时操作系统将接下来的任务信息发给它们,并监控它们的状态。例如,磁盘控制器微处理器接收来自于主CPU 的一系列请求,执行它们自己的磁盘队列和调度算法。这种安排克服了主CPU的磁盘调度超载问题。PC在其键盘上用一个微处理器来将击键转换为代码,并发送给CPU。在其他系统或环境中,专用处理器被构建成硬件的低级部件。操作系统不能与这些部件通信,后者独立地做自己的工作。使用专用处理器很常见,并不会将一个单处理器系统变成多处理器系统。如果只有一个通用CPU,系统则为单处理器系统。

5.多处理器系统

    多处理器系统(也称为并行系统(parallelsystem) 或紧耦合系统(tightlycoupledsystem)。这类系统有多个紧 密通信的CPU,它们共享计算机总线,有时还有时钟、内存和外设等。
多处理器系统有三个主要优点:
1.增加吞吐量: 通过增加处理器的数量,希望能在更短的时间内做更多的事情。用N 个处理器的加速比不是N,而是比N小。当多个CPU在同一件事情上时,为了使得各部分能正确工作,会产生一定的额外开销。这些开销,加上对共享资源的竞争,会降低因增加了CPU的期望增益。这与一组N位程序员在一起紧密地工作,并不能完成N 倍的单个
程序员的工作量类似。
2.规模经济: 多处理器系统比单个处理器系统能节省资金,这是因为它们能共享外设、大容量存储和电源供给。当多个程序需要操作同样的数据集合时,如果将这些数据放在同一磁盘上并让多处理器共享,将比用许多有本地磁盘的计算机和多个数据复制更为节省。
3.增加可靠性: 如果将功能分布在多个处理器上,那么单个处理器的失灵将不会使得整个系统停止,只会使它变慢。如果有10个处理器而其中一个出了故障,那么剩下的9个会分担起故障处理器的那部分工作。因此,整个系统只是比原来慢了10%,而不是停止运行。
    在许多应用中,计算机系统不断增加的可靠性是很关键的。这种能提供与正常工作的硬件成正比的服务的能力被称为适度退化(graceful degradation),有些系统超出适度退化的能力被称为容错(fault tolerant),因为它们能忍受单个部件的错误并继续操作。容错需要一定的机制来对故障进行检测、诊断和纠错(如果可能)。
    现在使用的多处理器系统主要有两种类型。有的系统使用非对称多处理(asymmetric multiprocessing),即每个处理器都有各自特定的任务。一个主处理器控制系统,其他处理器或者向主处理器要任务或做预先定义的任务。这种方案称为主一从关系。主处理器调度从处理器并安排工作。
    现在最为普遍的多处理器系统使用对称多处理(symmetric multiprocessing,SMP),每个处理器都要完成操作系统中的所有任务。SMP意味着所有处理器对等,处理器之间没有主一从关系。如图,显示了一个典型的SMP结构。
    一个典型的SMP例子是Solaris,一个由Sun Microsystems 设计的商用UNIX。一个Solaris 系统可配置成使用数十个处理器,并且都运行Solaris。这种模型的好处是如果有N个CPU,那么N个进程可以同时运行且并不影响性能。然而,必须仔细控制I/O 以确保数据到达合适的处理器。另外,由于各CPU互相独立,一个可能空闲而另一个可能过载,导致效率低。如果处理器共享一定的数据结构,那么可以避免这种低效率。这种形式的多处理器允许进程和资源(包括内存) 在各处理器之间动态共享,能够降低处理器之间的差异。这样的系统需要仔细设计。目前几乎所有现代操作系统,包括Windows,Windows XP、Mac Os X 和Linux 等,都支持SMP。
    对称与非对称多处理之间的差异可能是由于硬件或软件的原因。特定的硬件可以区分处理器,软件也可编写成选择一个处理器为主,其他为辅。
    我们日常生活中使用的大多数多核手机实际上就是将多个内核设计到单个芯片上。此外还有双芯片,多芯片这种技术正在不断地成为主流。而在大型服务器中,刀片服务器也逐渐流行起来,所谓的刀片服务器就是将多个处理器板、I/O板和网络板全部置于同一个底板上。和传统的多处理器系统不同在于,每个刀片处理器独自启动并运行各自的操作系统。

5.集群系统

    多CPU系统的另一种类型是集群系统(clustered system)。与多处理器系统一样,集群系统将多个CPU集中起来完成计算任务。然而,集群系统与多处理器系统不同,它是由两个或多个独立的系统耦合起来的。集群系统常用的定义是集群计算机共享存储并通过局域网络连接或更快的内部连接(如InfiniBand)。集群通常用来提供高可用性(high availability) 服务,这意味着即使集群中的一个或多个系统出错,服务仍然继续。高可用性通常通过在系统中增加一定的冗余来获取。集群软件运行在集群节点之上,每个都能监视(通过局域网)一个或多个其他节点。如果被监视的机器失效,那么监视机器能取代存储拥有权,并重新启动在失效机器上运行的应用程序。应用程序的用户和客户机只感觉到很短暂的中断。
    集群可以是对称的,也可以是非对称的。非对称集群(asymmetric clustering) 中,一台机器处于热备份模式(hot standbymode),而另一台运行应用程序。热备份主机(机器)只监视活动服务器。如果该服务器失效,那么热备份主机会成为现行服务器。对于对称集群(symmetric clustering),两个或多个主机都运行应用程序,它们互相监视。这种模式因为充分使用了现有硬件,所以更为高效。这要求具有多个应用程序可供运行。
    此外,还有其他形式的集群,并行集群和WAN集群。并行集群允许多个主机访问共享存储上的相同数据。由于绝大多数操作系统不支持多个主机同时访问数据,并行集群通常需要由专门软件和应用程序来完成。例如,Oracle Parallel Server 是一种可运行在并行集群上的Oracle数据库版本。每个机器都运Oracle,且有软件跟踪共享磁盘的访问。每个机器对数据库内的所有数据都可以完全访问。为了提供这种对数据的共享访问,系统必须提供对文件的访问控制和加锁,以确保不出现冲突操作。有些集群技术中包括了这种通常称为分布式锁管理器(distributed lock manager,DLM) 的服务。

六、操作系统结构

    操作系统最重要的一点是要有多道程序处理能力,单个用户通常不能总是使得CPU和I/O设备都很忙。多道程序设计通过组织作业使CPU总有一个作业可以执行,从而提高CPU利用率。
    多道程序处理就是操作系统将用户所提交的作业都先存放到外存上并排成一个队列,称为“后备队列”,然后作业调度程序按照 一定的算法从后备队列选择若干个作业调入内存,使它们共享CPU资源。只要有一个任务可以执行,CPU就不会闲着。
    多道程序系统提供了一个可以充分使用各种系统资源(如CPU、内存、外设) 的环境,但是它们没有提供与计算机系统直接交互的能力。 分时系统(或多任务) 是多道程序设计 的延伸。在分时系统中,虽然CPU 还是通过在作业之间的切换来执行多个作业,但是由于切换频率很高,用户可以在程序运行期间与之进行交互。
    共享需要一种交互计算机系统,它能提供用户与系统之间的直接通信。用户通过输入设备,如键盘或鼠标,向操作系统或程序直接发出指令,并等待输出设备立即出来的结果。响应时间(responsetime) 比较短, 通常小于1秒。
    分时操作系统允许许多用户同时共享计算机。由于分时系统的每个动作或命令都较 短,因而每个用户只要少量CPU 时间。随着系统从一个用户快速切换到另一个用户,每个用户会感到整个系统只为自己所用,尽管它事实上为许多用户所共享。
    分时操作系统采用CPU调度和多道程序设计以提供用户分时计算机的一小部分。每个用户在内存中至少有一个程序。装入到内存并执行的程序通常称为进程(process)。当进程执行时,它通常只执行较短的一段时间,此时它并未完成或者需要进行I/O 操作。I/O可能是交互的,即输出到用户的显示器,从用户的键盘、鼠标或其他设备输入。由于交互I/O 通常按人的速度来运行,因此它需要很长时间完成。例如,输入通常受用户打字速度的限制;每秒7个字符对人来说可能很快,但是对计算机来说相当慢了。在用户交互输入时, 操作系统为了不让CPU 空闲,会将CPU切换到其他用户的程序。
    分时和多道程序设计需要在存储器中同时保存有几个作业。通常由于主存较小而不能容纳太多作业,所以这些作业刚开始存储在磁盘的作业池(jobpool) 中。该池由所有驻留在磁盘中需要等待分配内存的作业组成。如果多个作业需要调入内存但没有足够的内存,那么系统必须在这些作业中做出选择,这样的决策被称为作业调度(jobscheduling)。
    当操作系统从作业池中选中一个作业,就将它调入内存来执行。在内存中同时有多个程序可运行,需要一定形式的内存管理。另外,如果有多个任务同时需要执行,那么系统必须做出选择,这样的选择称为CPU 调度。
    最后,多个并发执行的作业需要操作系统在各方面限制进程的互相影响,如进程调度、磁盘存储和内存管理。在分时操作系统中,操作系统必须保证合理的响应时间,这有时需要通过交换来得到。交换时进程被换入内存或由内存换出到磁盘。实现这一目的更常用方法是使用虚拟内存(virtual memory),虚拟内存允许将一个执行的作业不完全放在内存中。虚拟内存的主要优点是程序可以比物理内存(physical memory) 大。再者,它将内存抽象成一个庞大且统一的存储数组,将用户所理解的逻辑内存(logicalmemory) 与真正的物理内存区分开。
    分时操作系统也必须提供文件系统。文件系统驻留在一组磁盘上,因此也必须提供磁盘管理。为了确保有序执行,系统必须提供实现作业同步和通信的机制。也要确保作业不会进入死锁,进而无休止的等待。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值