操作系统是计算机学科的基础课程,是理解计算机运行原理的重要基石,学习操作系统不仅能够让编程人员了解计算机运行逻辑而且还有助于培养编程“软实力”,如果想真正在编程之路上走下去,那么操作系统将会是重要的加速器,本系列将走进操作系统课程,了解在计算机世界的规则...
说到操作系统,不少人会瞬间想到微软的Windows系列,有经验的编程人员或许会想到unix,Linux等,但对于操作系统的定义,不少人恐怕就说不上来了,其实在计算机学科领域至今也未形成一个统一的标准化的定义,出现这个问题一方面由于操作系统实现两项相对独立的功能---扩展机器和管理资源,另一方面取决于从什么角度来看待操作系统---用户观点还是系统观点。
1、操作系统作为扩展机器
操作系统可以将硬件细节与编程人员隔离开,用户可以使用操作系统提供的各种命令,直接打开文件、读写文件、更改目录等,在做这些事情时,只需要关心自己要实现的目标,并不用考虑硬件是如何动作,从而隐藏了底层硬件的特性。通过操作系统的加工,呈现在用户面前的机器是功能更强,使用更方便的机器,通常把逻辑之上覆盖各种软件,从而形成功能更强的机器称为扩展机器或虚拟机。
2、操作系统作为资源管理器
操作系统可以用来管理硬件资源和数据、程序等软件资源,控制、协调各个程序对这些资源的利用,尽可能地充分发挥各种资源的作用,作为资源管理者,操作系统主要做以下工作:
3、用户角度看操作系统
操作系统应当处于用户与计算机硬件系统之间,为用户提供使用计算机系统的接口。
4、系统角度看操作系统
操作系统是硬件之上的第一层软件,它要管理计算机系统中各种硬件资源和软件资源的分配问题,要解决大量对资源请求的冲突问题,决定把资源分配给谁,何时分配,分配多少等,使得资源的利用高效而且公平。此外操作系统要对IO设备和用户程序加以控制,保证设备正常工作,防止非法操作,及时诊断设备的故障等。
综上所述,可以得到:
总之,通常可以这样定义操作系统:操作系统是控制和管理计算机系统内各种硬件和软件资源,有效地组织多道程序运行的系统软件,是用户和计算机之间的接口。
操作系统主要功能有一下5个方面:存储管理、作业和进程管理、设备管理、文件管理和用户接口服务
1、存储管理
存储管理的主要功能包括:内存分配,地址映射,内存保护和内存扩充
1.1 内存分配
内存分配的主要任务是为每道程序分配一定的内存空间,为此操作系统必须记录整个内存的使用情况,处理用户提出的申请,按照某种策略实施分配,接收系统或用户释放的内存空间。由于内存是宝贵的系统资源,在制定分配策略时应该如何考虑提高内存的利用率,减少内存浪费。
1.2 地址映射
CPU在执行用户程序时,要从内存中取出指令或数据,为此就必须把所用的相对地址(或称逻辑地址)转换成内存的物理地址。
1.3 内存保护
不同用户的程序都放在同一个内存中,就必须要保证它们在各自的内存空间中活动,不能相互干扰,更不能侵占操作系统的空间,为此需要建立内存保护机制。
1.4 内存扩充
一个系统中的内存容量是有限的,不能随意扩充其大小。然而,当对内存“求大于供”的局面时,就需要采取虚拟存储技术。将程序当前使用的部分放在内存,而其余部分放在磁盘上,以后根据程序执行时的要求和内存当时使用的情况,随机地将所需部分调入内存;必要时还要把已分配出去的内存回收,供其他程序使用(内存置换)
2、作业和进程管理
操作系统中有两个重要概念,即作业与进程,简言之,用户的计算任务称为作业,程序的执行过程称作进程(进程是分配资源和在处理机上运行的基本单位)。众所周知,计算机系统中最重要的资源是CPU,对它管理的优劣直接影响整个系统的性能。所以,作业和进程管理的基本功能包括:作业和进程调度、进程控制和进程通信。
2.1 作业和进程调度
一个作业通常经过两级调度才能在CPU上执行,首先是作业调度,它把选中的一批作业放入内存,并分配其他必要资源,为这些作业建立相应的进程,然后进程调度按照一定的算法从就绪进程中选出一个合适进程,使之在CPU上运行、
2.2 进程控制
进程是操作系统中活动的实体,进程控制包括创建进程、撤销进程、封锁进程、唤醒进程等。
2.3 进程通信
多个进程在活动过程中彼此间会发生相互依赖或者相互制约的关系,为保证系统中所有的进程都能正常活动,就必须设置进程同步机制,它分为同步方式与互斥方式。相互合作的进程之间往往需要交换信息,为此,操作系统需要提供通信机制。
3、设备管理
设备的分配和驱动由操作系统负责,即设备管理的主要功能包括:缓冲区管理,设备分配,设备驱动和设备无关性
3.1 缓冲区管理
缓冲区管理的目的是解决CPU和外设速度不匹配的矛盾,使它们充分并行工作,提高各自的利用率。
3.2 设备分配
根据用户的IO请求和相应的分配策略,为该用户分配外部设备、通道和控制器等
3.3 设备驱动
实现CPU与通道和外设之间的通信,由CPU向通道发出IO指令,后者驱动相应设备进行IO操作。当IO任务完成后,通道向CPU发出中断信号,由相应的中断处理程序进行处理
3.4 设备无关性
设备无关性又称设备独立性,即用户编写的程序与实际使用的物理设备无关,由操作系统把用户程序中使用的逻辑设备映射到物理设备。
4、文件管理
文件管理功能包括:文件存储空间的管理,文件操作的一般管理,目录管理,文件的读写管理和存取控制
4.1 文件存储空间的管理
系统文件和用户文件都要放在磁盘上,为此,需要由文件系统对所有文件以及文件的存储空间进行统一管理:为新文件分配必要的外存空间,回收释放的文件空间,提高外存的利用率。
4.2 文件操作的一般管理
文件操作的一般管理包括:文件的创建、删除、打开、关闭等
4.3 目录管理
目录管理包括目录文件的组织、实现用户对文件的“按名存取”,以及目录的快速查询和文件共享等
4.4 文件的读写管理与存取控制
根据用户的请求,从外存中读取数据或者将数据写入外存中。为了保证文件信息的安全性,防止未授权用户的存取或破坏,对各个文件(包括目录)进行存取控制
5、用户接口服务
用户上机操作时直接使用到操作系统提供的用户接口,操作系统对外提供多种服务,使得用户可以方便、有效地使用计算机硬件和运行自己的程序,使得软件开发变的容易、高效。现代操作系统提供三种用户接口:程序接口,命令行接口以及图形用户接口。
5.1 程序接口
也称系统调用接口,系统调用是操作系统内核与用户程序、应用程序之间的接口,它位于操作系统核心层的最外层。所有内核之外的程序都必须经由系统调用才能获得操作系统的服务。系统调用只能在程序中使用,不能直接作为命令在终端上输入和执行。由于系统调用能够改变处理机的执行状态,从用户态变为核心态,直接进入内核执行,所以执行效率很高。用户在自己程序中使用系统调用,从而获取系统提供的众多基层服务,
5.2 命令行接口
在提示符之后用户从键盘上输入命令,命令解释程序接收并解释这些命令,然后把它们传递给操作系统内部程序,执行相应功能。命令行接口不属于操作系统内核,相应的程序是在用户空间中运行的。
5.3 图形用户接口
用户利用鼠标,窗口,菜单,图标等图形用户界面工具,可以直观、方便,有效地使用系统服务和各种应用程序及实用工具。图形用户接口也不属于操作系统内核,相应的程序是在用户空间中运行的。
操作系统基本类型可分为5种:批处理系统,分时系统、实时系统、网络系统和分布式系统
1、批处理系统
早期的计算机操作系统大多数是批处理系统,在这种系统中,把用户的计算任务按“作业”进行管理。其工作流程一般如下:
上述步骤将一直重复下去,使得各作业一个接一个地流入系统,直到没有作业。各个作业经过处理后又顺序地退出系统,形成一个源源不断的作业流。
可以看出批处理系统具有两个特点---“多道”与“成批”
批操作系统优点:
批操作系统缺点:
2、分时系统
针对批操作系统的缺点,人们提出了分时系统,它让用户通过终端设备联机使用计算机。
在单CPU系统中无法真正的实现多个程序的并行(两个或两个以上事件或活动在同时刻发生就称作并行),为了在多道程序环境中提高资源利用率,往往采用多道程序分时共享硬件和软件资源的技术,分时就是对时间的共享。在分时系统中,分时主要是指若干程序对CPU时间的共享。分享的时间单位称为时间片,它往往很短,如几十毫秒。这种分时的实现,需要有中断机构和时钟系统的支持。利用时钟系统把CPU时间分成一个一个的时间片,操作系统轮流把每个时间片分给各个程序,每道程序一次只可以运行一个时间片。当时间片计数到时后,产生时间中断,控制转向操作系统,操作系统选择另一道程序并分给它时间片,让其投入运行。到达给定时间,再发中断,重新选程序(或作业)运行,如此反复。
两个或两个以上的程序在一段时间内,在同一CPU上执行就称作并发,在分时系统中利用并发机制实现了一个物理CPU(也可以是多个物理CPU)在若干道程序之间的多路复用。
分时系统的基本特征:
分时系统的优点:
常用的通用操作系统是分时系统与批处理系统的结合,其原则是:分时优先,批处理在后。“前台”响应需频繁交互的作业,“后台”处理时间性不强的作业。
3、实时系统
在计算机的很多应用领域内,要求对实时采样数据进行及时处理,做出相应的反应,如果超出限定的时间就可能丢失信息或影响下一批信息的处理。实时系统是指计算机能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有设备和任务协调一致工作的操作系统。实时系统的目标是:对外部请求在严格时间范围内做出反应,并有高可靠性和完整性。其主要特点是:资源的分配和调度首先要考虑实时性,然后才是效率。此外实时系统还应该具有较强的容错能力。实时系统现在有三种典型的应用形式:过程控制系统、信息查询系统和事务处理系统。
实时系统与分时系统的差别:
4、网络操作系统
由于单台计算机资源毕竟有限,为了实现异地计算机之间的数据通信和资源共享,可将分布在各处的计算机和终端设备通过数据通信系统联结在一起,构成一个系统,这就是计算机网络,计算机网络需要两大支柱----计算机技术和通信技术。
计算机网络的特征:
网络操作系统一般建立在各个主机的本地操作系统基础之上,其功能是实现网络通信,资源共享和保护,以及提供网络服务和网络接口等。在网络操作系统的作用下,对用户屏蔽了各个主机对同样资源所具有的不同存取方法。
网络操作系统的特性:
5、分布式操作系统
分布式操作系统把大量的计算机组织在一起,彼此通过高速网络进行连接。分布式系统有效地解决了地域分布很广的若干计算机系统间的资源共享,并行工作,信息传输和数据保护等问题。
分布式操作系统特点:
分布式系统是网络操作系统的更高形式,它保持了网络操作系统的全部功能,而且还具有可靠性和高性能。网络操作系统和分布式操作系统虽然都属于管理分布在不同地理位置的计算机,但最大的差别是:网络操作系统知道计算机确切的地址,而分布式系统则不知道计算机的确切地址;分布式操作系统负责整个资源的分配,能很好地隐藏系统内部的实现细节,如对象的物理位置,这些对用户都是透明的。
从硬件的角度看,现代通用计算机系统是由CPU、内存和若干IO设备组成,它们经由系统总线链接在一起,实现彼此通信。从功能上讲,是由五大功能部件组成,即运算器、控制器、存储器、输入设备和输出设备。这五大功能部件相互配合,协同工作。其中运算器和控制器集成在一片或几片大规模或超大规模集成电路中,称为中央处理器(CPU)。
1、处理器
CPU是计算机的“大脑”,它从内存中提取指令并执行它们。CPU工作的基本周期是:提取指令,译码分析,执行指令。对后面的的指令按类似步骤进行处理。CPU内部包含若干寄存器,其中,一类是通用寄存器,用来存放关键变量和中间结果。另一类是专用寄存器,如程序计数器(PC),栈指针寄存器和程序状态字(PSW)。同时一般操作系统都提供核心态与用户态两种处理机执行状态。其目的是为了保护操作系统程序(特别是内核部分),防止受到用户程序的损害。当执行操作系统程序时,处理机处于核心态。这时它具有较高特权,可以执行所有指令,包括普通用户程序中不能使用的特权指令,从而能对所有寄存器和内存进行访问,以及启动IO操作等。而用户程序是在用户态下执行的,它的的权限较低,只能执行指令集中非特权指令。
2、存储器
在任何计算机中,存储器都是最主要的组成部分之一。按照速度、容量和成本划分,存储器系统构成一个层次结构,如下图所示:
3、IO设备
IO设备是人机交互的工具,它通常由控制器和设备本身两部分组成。控制器是IO设备的电子部分,它协调和控制一台或多台IO设备的操作,实现设备操作与整个系统操作的同步。设备控制器本身有一些缓冲区和一组专用寄存器,负责在外部设备和本地缓冲区之间移动数据。设备实际上隐藏在控制器的后面,因而,操作系统总是与控制器打交道,而不是与设备直接作用。由于设备的种类有很多,因而设备控制器的类别就很多,这就需要不同的软件来控制它们。这些向控制器发布命令并接收其回答信息的软件就是设备驱动程序。不同操作系统上的不同控制器分别对应不同的设备驱动程序,理论上讲,驱动程序可以在核心之外运行,但当前的系统都把它放在操作系统中,使其在核心方式下运行。
4、总线
按照总线上传送的信息所起的作用,系统总线基本上可以分为如下三部分:
本文内容参考孟庆昌老师所著《操作系统》一书
推荐阅读:苹果7p和8的区别