概述
曾经计算机硬件是由人直接控制的,但随着计算机越发复杂,人已经无法直接控制计算机了,因此需要软件(操作系统)来帮助人管理和控制计算机。
而计算机软件主要分为系统软件及应用软件两类,前者是计算机系统的一部分,用于支持应用软件的运行。
应用软件大部分人接触都比较多,比较特殊的是系统软件里面包括操作系统、语言处理程序、链接程序、诊断程序、数据库管理系统等。而操作系统是系统软件中的核心,是用户与计算机硬件之间的接口。
图片来自《操作系统原理》 胡元义、黑新宏著 电子工业出版社 2018年
定义及作用
操作系统是一个能有效组织和管理系统中各种软/硬件资源,合理组织系统工作流程,控制程序的执行,并且向用户提供良好的工作环境及易用的接口的系统软件。
操作系统其实就是一组管理程序,通过对系统硬件资源的统一调度,改善资源间共享和硬件的利用程度。最大化发挥计算机系统的工作效率,并且为人提供一个易用的操作界面。
基本概念
多数操作系统都使用一些基本概念来构建,下面的基本概念是学习操作系统中的核心:
- 进程(Process) 进程的本质上是一个正在执行的程序。
- 地址空间(Address Space) 标识主存位置。
- 文件系统 隐藏磁盘或其他I/O设备的细节,提供抽象的文件模型。
- 输入/输出 计算机的唯一目的就是接收不同的输入产生不同的输出。
主要功能
为了实现对计算机系统的管理,操作系统中有如下基本功能:
-
进程管理(CPU管理)
通过提供进程的控制、管理、同步、互斥、通信、死锁、线程控制、CPU调度能力,对CPU进行合理分配,协调多个同时运行的程序。
-
文件管理
通过提供文件的组织、存储及保护能力使程序和数据能以文件的形式存放于外存。这些文件也称为软件资源。
-
存储管理
通过提供对内存的分配、保护、地址映射(变换)、扩充的能力以管理内存(主存)。
-
设备管理
通过提供对设备(主要是I/O设备)的分配、释放、控制、回收等能力,让设备的使用效率更高。
-
作业管理
通过提供用户界面、接口等功能,让用户可以通过命令或图形界面的方式操纵计算机或使用系统功能。
基本特征
操作系统存在很多类型,但其主要特征无外乎四类:
-
并发性(Concurrence)
这是操作系统最核心的特征,其指两个或以上的事件在同一时间间隔内发生。即计算机系统中可同时存在多个任务在宏观层面上同时执行;
并发是操作系统特征中的核心,其余的三个特征都可以说以并发为前提的。
-
共享性(Sharing)
内存中并发执行的多个进程可以共享硬件资源,这种共享可以是同时的也可以是互斥的。
-
虚拟性(Virtual)
将一个物理实体映射为多个逻辑实体,如尽管在单CPU系统中,多个程序也能在宏观层面上同时执行。
-
不确定性(Nondeterminacy)
微观上来说,其实多程序并不是同时执行的,而是每个程序执行一小段时间,一直轮转。只是由于速度快,宏观上看就像是同时执行一样,这个过程就存在不确定性,因为无法准确预料进程所需的时间。另外,如外部设备的中断、I/O请求、程序本身的中断等都是不可预测的。
系统分类
系统的分类在现在来看并不是特别清晰,可以当做是了解计算机发展的脉络来看。
-
批处理操作系统
又分为单道批处理系统和多道批处理系统,前者是比较早期的操作系统,指一次只能有一个作业装入内存运行。当一个作业结束后自动调用同一批里的下一个作业,节省人工干预时间。
而后者主要是运作多个作业装入内存,每当运行中的作业有I/O等操作耗时操作时,就会把CPU交给另一个作业,节省宝贵的CPU时间。
-
分时操作系统
将CPU时间分为很短很短的时间片,轮流为各终端设备服务,如一个有20个终端的分时系统,若时间片为50ms,则每隔1秒时间就可以为所有终端服务一次,尽管实际上断续运行的,但感官每个终端似乎都是独享完整系统资源。
分时系统主要有4个特点:多路性、独立性、交互性、及时性。
-
实时操作系统
这是一种比较特殊的操作系统,这种操作系统主要侧重于运行时间,要对外部事件响应非常及时。实时操作系统一般都是一些特殊的专用系统,它不需要多用户、交互能力。
它又分为实时控制和实时信息处理两种。其应用如生产线自动控制、武器控制、飞机导航、火车控制等。
-
网络操作系统
指系统具有联网能力,能通过有效通过网络共享资源,为网络用户提供各种服务。网络操作系统的核心在于提供高效可靠的网络通信能力。
其典型特征有硬件独立性、多用户支持,前者指的是操作系统可以运行在不同的网络硬件上,后者则是指能支持多个用户同时对网络的访问。
现代操作系统都包含网络功能,并作为系统核心功能。
-
分布式操作系统
由多个分散的计算机连接共同组成的计算机系统,一个系统中的计算机没有主次之分。任意两台计算机之间都可以通过通信交换信息。一般为分布式计算机配置的就是分布式操作系统。
分布式操作系统可以对整个系统中资源进行动态分配和调度,为用户提供统一的操作界面、标准的接口。用户通过统一的操作界面就可以使系统中若干台计算机共同完成任务。
分布式操作系统是基于网络操作系统而来的,或说是后者的更高级形式,其不但具有网络操作系统的所有能力,同时还有透明性、可靠性、高性能等特性。
-
嵌入式操作系统
这也是一种专用系统,主要是用于嵌入式芯片中,这类芯片环境都在不同程度上受限。其主要的特点有微型化、可定制、实时性、可靠性、可移植性。
微型化可以让系统裁剪不需要的能力,使能运行环境上各种限制达成平衡;可定制指的是系统可以运行在不同架构的微处理器上;实时性是因为大多数实时控制设备均使用的是嵌入式芯片;可靠性指系统构件之间有强可靠性,有一定容错能力;可移植性与可定制是类似的,通过将硬件层抽象(HAL, Hardware Abstraction Level)和板级支撑包(BSP, Board Support Package)使得运行在其上的程序无需修改就可以在不同的架构下运行。