操做系统基础知识

什么是操做系统程序员

  计算机系统由硬件和软件两部分组成。操做系统(OS,Operating System)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。它在计算机系统中占据了特别重要的地位;而其它的诸如汇编程序、编译程序、数据库管理系统等系统软件,以及大量的应用软件,都将依赖于操做系统的支持,取得它的服务。算法

  精简的说的话,操做系统就是一个协调、管理和控制计算机硬件资源和软件资源的控制程序。数据库

为何要有操做系统编程

  现代的计算机系统主要是由一个或者多个处理器,主存、硬盘、键盘、鼠标、显示器、打印机、网络接口及其余输入输出设备组成。通常而言,现代计算机系统是一个复杂的系统。若是每位应用程序员都必须掌握该系统全部的细节,那就不可能再编写代码了(严重影响了程序员的开发效率,所有掌握这些细节可能须要一万年....),而且管理这些部件并加以优化使用,是一件极有挑战性的工做,因而,计算安装了一层软件(系统软件),称为操做系统(OS,Operating System)。它的任务就是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚才提到的全部设备。安全

总结:网络

  程序员没法把全部的硬件操做细节都了解到,管理这些硬件而且加以优化使用是很是繁琐的工做,这个繁琐的工做就是操做系统来干的,有了它,程序员就从这些繁琐的工做中解脱了出来,只须要考虑本身的应用软件的编写就能够了,应用软件直接使用操做系统提供的功能来间接使用硬件。并发

操做系统位于计算机硬件与应用软件之间,本质也是一个软件。操做系统由操做系统的内核(运行于内核态,管理硬件资源)以及系统调用(运行于用户态,为应用程序员写的应用程序提供系统调用接口)两部分组成,因此,单纯的说操做系统是运行于内核态的,是不许确的。性能

细说的话,操做系统应该分红两部分功能:优化

  一:隐藏了丑陋的硬件调用接口,为应用程序员提供调用硬件资源的更好,更简单,更清晰的模型(系统调用接口)。应用程序员有了这些接口后,就不用再考虑操做硬件的细节,专心开发本身的应用程序便可。例如:操做系统提供了文件这个抽象概念,对文件的操做就是对磁盘的操做,有了文件咱们无需再去考虑关于磁盘的读写控制(好比控制磁盘转动,移动磁头读写数据等细节)spa

  二:将应用程序对硬件资源的竞态请求变得有序化,例如:不少应用软件实际上是共享一套计算机硬件,比方说有可能有三个应用程序同时须要申请打印机来输出内容,那么 a 程序竞争到了打印机资源就打印,而后多是 b 竞争到打印机资源,也多是 c,这就致使了无序,打印机可能打印一段 a 的内容而后又去打印 c...,操做系统的一个功能就是将这种无序变得有序。

操做系统发展史

摘自《汤小丹 - 计算机操做系统(第三版)》

  从第一台计算机诞生(1945 年)到 20 世纪 50 年代中期的计算机,属于第一代计算机。此时的计算机是利用成千上万个真空管作成的,它的运行速度仅为每秒数千次,但体积却十分庞大,且功耗也很是高。这时还未出现OS。计算机操做是由用户(即程序员)采用人工操做方式直接使用计算机硬件系统,即由程序员将事先已穿孔(对应于程序和数据)的纸带(或卡片)装入纸带输入机(或卡片输入机),再启动它们将程序和数据输入计算机,而后启动计算机运行。当程序运行完毕并取走计算结果以后,才让下一个用户上机。这种人工操做方式有如下两方面的缺点:

  (1)用户独占全机。此时,计算机及其所有资源只能由上机用户独占。

  (2)CPU 等待人工操做。当用户进行装带(卡)、卸带(卡)等人工操做时,CPU 及内存等资源是空闲的。

  可见,人工操做方式严重下降了计算机资源的利用率,此即所谓的人机矛盾。随着 CPU 速度的提升和系统规模的扩大,人机矛盾变得日趋严重。此外,随着 CPU 速度的迅速提升而 I/O 设备的速度却提升缓慢,这又使 CPU 与 I/O 设备之间速度不匹配的矛盾更加突出。为了缓和此矛盾,曾前后出现了通道技术、缓冲技术,但都未能很好地解决上述矛盾,直至后来又引入了脱机输入/输出技术,才得到了较为使人满意的结果。

  为了解决人机矛盾及 CPU 和 I/O 设备之间速度不匹配的矛盾,20 世纪 50 年代末出现了脱机输入/输出(Off-Line I/O)技术。该技术是事先将装有用户程序和数据的纸带(或卡片)装入纸带输入机(或卡片机),在一台外围机的控制下,把纸带(卡片)上的数据(程序)输入到磁带上。当 CPU 须要这些程序和数据时,再从磁带上将其高速地调入内存。相似地,当 CPU 须要输出时,可由 CPU 直接高速地把数据从内存送到磁带上,而后再在另外一台外围机的控制下, 将磁带上的结果经过相应的输出设备输出。因为程序和数据的输入和输出都是在外围机的控制下完成的,或者说,它们是在脱离主机的状况下进行的, 故称为脱机输入/输出方式;反之,在主机的直接控制下进行输入/输出的方式称为联机输入/输出 (On-Line I/O) 方式。这种脱机 I/O 方式的主要优势以下:

  (1)减小了CPU的空闲时间。 装带(卡) 、卸带 (卡) 以及将数据从低速 I/O 设备送到高速磁带 (或盘)上,都是在脱机状况下进行的,并不占用主机时间, 从而有效地减小了 CPU 的空闲时间,缓和了人机矛盾。

  (2)提升了 I/O 速度。当 CPU 在运行中须要数据时,是直接从高速的磁带或磁盘上将数据调入内存的,再也不是从低速 I/O 设备上输入,极大地提升了 I/O 速度,从而缓和了 CPU 和 I/O 设备速度不匹配的矛盾,进一步减小了 CPU 的空闲时间。

  上世纪 50 年代中期发明了晶体管,人们开始用晶体管替代真空管来制做计算机,从而出现了第二代计算机。它不只使计算机的体积大大减少,功耗显著下降,同时可靠性也获得大幅度提升,使计算机已具备推广应用的价值,但计算机系统仍很是昂贵。为了能充分地利用它,应尽可能让该系统连续运行,以减小空闲时间。为此,一般是把一批做业以脱机方式输入到磁带上,并在系统中配上监督程序 (Monitor) ,在它的控制下使这批做业能一个接一个地连续处理。其自动处理过程是:首先,由监督程序将磁带上的第一个做业装入内存,并把运行控制权交给该做业。当该做业处理完成时,又把控制权交还给监督程序,再由监督程序把磁带(盘)上的第二个做业调入内存。计算机系统就这样自动地一个做业一个做业地进行处理,直至磁带(盘)上的全部做业所有完成,这样便造成了早期的批处理系统。因为系统对做业的处理都是成批地进行的,且在内存中始终只保持一道做业,故称此系统为单道批处理系统(Simple Batch Processing System)。如图所示为单道批处理系统的处理流程,由此不难看出,单道批处理系统是在解决人机矛盾以及 CPU 与 I/O 设备速度不匹配问题的过程当中造成的。换言之,批处理系统旨在提升系统资源的利用率和系统吞吐量。但这种单道批处理系统仍然不能很好地利用系统资源,故现已不多使用。

  20 世纪 60 年代中期,人们开始利用小规模集成电路来制做计算机,生产出第三代计算机。由 IBM 公司生产的第一台小规模集成电路计算机——360 机,较之于晶体管计算机,不管在体积、功耗、速度和可靠性上,都有了显著的改善。虽然在开发 360 机器使用的操做系统时,为能在机器上运行多道程序而遇到了极大的困难,但最终仍是成功地开发出能在一台机器中运行多道程序的操做系统 OS/360。

  在单道批处理系统中,内存中仅有一道做业,它没法充分利用系统中的全部资源,导致系统性能较差。为了进一步提升资源的利用率和系统吞吐量,在 20 世纪 60 年代中期又引入了多道程序设计技术, 由此而造成了多道批处理系统(Multiprogrammed Batch ProcessingSystem)。在该系统中,用户所提交的做业都先存放在外存上并排成一个队列,称为 “后备队列” ;而后,由做业调度程序按必定的算法从后备队列中选择若干个做业调入内存,使它们共享 CPU 和系统中的各类资源。具体地说,在 OS 中引入多道程序设计技术可带来如下好处:

  (1)提升 CPU 的利用率,当内存中仅有一道程序时,每逢该程序在运行中发出 I/O 请求后,CPU 空闲,必须在其 I/O 完成后 CPU 才继续运行;尤为因 I/O 设备的低速性,更使CPU 的利用率显著下降。在引入多道程序设计技术后, 因为同时在内存中装有若干道程序,并使它们交替地运行,这样,当正在运行的程序因 I/O 而暂停执行时,系统可调度另外一道程序运行,从而保持了 CPU 处于忙碌状态。

  (2)可提升内存和 I/O 设备利用率。为了能运行较大的做业, 一般内存都具备较大容量,但因为 80% 以上的做业都属于中小型,所以在单道程序环境下,也一定形成内存的浪费。相似地,对于系统中所配置的多种类型的 I/O 设备,在单道程序环境下也不能充分利用。若是容许在内存中装入多道程序, 并容许它们并发执行, 则无疑会大大提升内存和 I/O 设备的利用率。

  (3)增长系统吞吐量。在保持 CPU、I/O 设备不断忙碌的同时,也必然会大幅度地提升系统的吞吐量,从而下降做业加工所需的费用。

多道批处理系统的优缺点:

  虽然早在 20 世纪 60 年代就已出现了多道批处理系统,但至今它还是三大基本操做系统类型之一。在大多数大、中、小型机中都配置了它,说明它具备其它类型 OS 所不具备的优势。多道批处理系统的主要优缺点以下:

  (1)资源利用率高。因为在内存中驻留了多道程序,它们共享资源,可保持资源处于忙碌状态,从而使各类资源得以充分利用。

  (2)系统吞吐量大。系统吞吐量是指系统在单位时间内所完成的总工做量。能提升系统吞吐量的主要缘由可归结为:第一,CPU 和其它资源保持 “忙碌” 状态; 第二,仅看成业完成时或运行不下去时才进行切换,系统开销小。

  (3)平均周转时间长。做业的周转时间是指从做业进入系统开始,直至其完成并退出系统为止所经历的时间。在批处理系统中,因为做业要排队,依次进行处理,于是做业的周转时间较长,一般需几个小时,甚至几天。

  (4)无交互能力。用户一旦把做业提交给系统后,直至做业完成,用户都不能与本身的做业进行交互,这对修改和调试程序是极不方便的。

多道批处理系统须要解决的问题:

  多道批处理系统是一种有效、但十分复杂的系统。为使系统中的多道程序间能协调地运行,必须解决下述一系列问题。

  (1)处理机管理问题。在多道程序之间,应如何分配被它们共享的处理机,使 CPU 既能知足各程序运行的须要,又能提升处理机的利用率,以及一旦把处理机分配给某程序后,又应在什么时候收回等一系列问题,属于处理机管理问题。

  (2)内存管理问题。应如何为每道程序分配必要的内存空间,使它们“各得其所”且不致因相互重叠而丢失信息,以及应如何防止因某道程序出现异常状况而破坏其它程序等问题,就是内存管理问题。

  (3)I/O 设备管理问题。系统中可能具备多种类型的 I/O 设备供多道程序所共享,应如何分配这些 I/O 设备,如何作到既方便用户对设备的使用,又能提升设备的利用率,这就是I/O 设备管理问题。

  (4)文件管理问题。在现代计算机系统中,一般都存放着大量的程序和数据(以文件形式存在),应如何组织这些程序和数据,才能使它们既便于用户使用,又能保证数据的安全性和一致性,这些属于文件管理问题。

  (5)做业管理问题。对于系统中的各类应用程序,其中有的属于计算型,即以计算为主的程序;有的属于 I/O 型,即以 I/O 为主的程序;又有些做业既重要又紧迫;而有的做业则要求系统能及时响应,这时应如何组织这些做业,这即是做业管理问题。

  为此,应在计算机系统中增长一组软件,用以对上述问题进行妥善、有效的处理。这组软件应包括:能控制和管理四大资源的软件,合理地对各种做业进行调度的软件,以及方便用户使用计算机的软件。正是这样一组软件构成了操做系统。据此,咱们可把操做系统定义为:操做系统是一组控制和管理计算机硬件和软件资源,合理地对各种做业进行调度,以及方便用户使用的程序的集合。

相关文章
相关标签/搜索