操作系统是计算机系统中最重要、最基本的系统软件,它位于硬件和用户之间,一方面能向用户提供接口,方便用户使用计算机;另一方面能管理计算机软硬件资源,以便充分利用它们。
3.1 操作系统概述
3.2 进程管理
进程是操作系统进行资源分配和调度的基本单位。相对程序,进程是动态的概念,而程序是静态的概念,是指令的集合。
一个进程通常由三部分组成:程序、数据集合和进程控制块(PCB)。程序描述了进程所要完成的功能,数据集合描述了程序运行所需要的数据部分和工作区,进程控制块描述了进程的描述信息、控制信息和资源信息,是进程动态特性的集中反映。
3.2.1 进程的状态
1、三态模型
2、五态模型
3.2.2 信号量与PV操作
**进程同步:**主要源于进程合作,是进程之间共同完成一项任务时直接发生相互作用的关系,为进程之间的直接制约关系。
**进程互斥:**主要源于资源共享,是进程之间的简介制约关系。在多道程序系统中,每次仅允许一个进程访问的资源称为临界资源,进程互斥要保证每次只有一个进程使用临界资源。
**信号量:**一个二元组(S,Q),其中S是一个整形变量,初值为非负数,Q为一个初始状态为空的等待队列。在多道程序系统中,信号量机制是一种有效的实现进程同步与互斥的工具。信号量的值通常表示系统中某类资源的数目,值由PV操作进行改变。
PV操作是对信号量进行处理的操作过程,而且信号量只能由PV操作改变。P操作将信号量减1,意味着请求系统分配一个单位资源,若系统无可用资源则进程变为阻塞状态;V操作是对信号量加1,意味着释放一个单位资源,信号量大于等于0时,就从就绪队列唤醒一个进程,执行V操作的进程继续执行。
3.2.3 死锁问题
当若干个进程竞争使用资源时,如果每个进程都占有一定的资源,又申请使用已被另一个进程占用且不能抢占的资源,则所有这些进程都纷纷进入阻塞状态,不能继续运行,即系统中两个或两个以上的进程无限期地等待永远不会发生的条件,系统处于一种停滞状态,这种现象就称为死锁。
产生死锁的4个必要条件:
- 互斥条件:任何一个时刻只允许一个进程使用资源。
- 不可剥夺条件:进程已占用的资源,不会被强制剥夺。
- 请求和保持条件:进程在请求资源时,不释放已占有的资源。
- 环路条件:环路中每一条边是进程在请求另一个进程已占用的资源。
对死锁的处理方法:
- 死锁预防:破坏死锁的4个必要条件。
- 死锁避免:允许死锁的存在,但不让它发生,设置一种安全状态,进程按某种顺序为其分配资源。
- 死锁的检测与接触:系统保存资源的请求和分配信息,利用算法对信息进行检查以判断是否存在死锁。一旦出现死锁,使用资源剥夺法、进程撤销法、进程回退法等方法进行恢复。
3.2.4 线程管理
在现代操作系统中,通常都引入了线程的概念。线程是进程的活动成分,是处理器分配资源的最小单元,它可以共享进程的资源与地址空间,通过线程的活动,进程可以提供多种服务(对系统进程而言)或实行子任务并行(对用户进程而言)。
每个进程创建时只有一个线程,根据需要在运行过程中可以创建更多的线程。
进程与线程比较:
方面 | 进程 | 线程 |
---|---|---|
调度 | 拥有资源的基本单位 | 调度和分配的基本单位 |
并发性 | 进程间可以并发执行 | 线程间也可以时间片的方式并发执行 |
拥有资源 | 资源可供它的所有线程共享 | 不拥有系统资源,可以访问其隶属进程的资源 |
系统开销 | 进程切换时需要当前进程CPU环境的保存,新进程CPU环境的设置 | 只需保存和设置少量寄存器内容 |
通信方面 | 需要进程同步和互斥等保证数据的一致性 | 可以直接读写进程数据段进行通信 |
对线程模型:
3.3 内存管理
由于任何内存和数据都必须占用内存空间后才能执行,因此内存管理的优劣直接影响系统性能。操作系统的任务之一就是尽可能的方便用户使用和提高内存的利用效率。
内存管理的主要功能:
- 内存空间的分配和回收
- 配合硬件进行地址转换(用户的逻辑地址转换为硬件的物理地址)
- 内存空间的共享和保护
- 借助大容量外存解决内存不够问题
3.3.1 地址变换(重定位)
目标程序的地址不是内存的实际地址,一般将用户目标程序使用的地址单元称为逻辑地址(或相对地址、虚拟地址),逻辑地址一般以0为基地址进行编址,是程序经过编译或汇编后形成的目标模块或装配连接程序的地址编码。当程序运行时,它将被装入内存地址空间的某些部分,此时程序和数据的实际地址一般不可能与原来的逻辑地址一致,将内存中的实际存储单位称为物理地址(或绝对地址、实际地址)。
为了保证程序的正确运行,必须将程序和数据的逻辑地址转换为物理地址,这一工作称为地址转换。转换后的地址计算公式:
物理地址 = 起始的物理地址 + 逻辑地址
地址转换通常有两种方式:静态重定向和动态重定向
- 静态重定向:作业装入时由作业装入程序实现地址转换(MCU控制系统)
- 动态重定向:程序执行期间CPU访问程序和数据之前实现地址转换(CPU计算系统)
3.3.2 存储管理
随着操作系统的发展,为了提高存储器的利用率,存储方式由固定式分区存储分配演变为了分页式存储管理方式,后为满足用户需求,由发展出了分段式存储管理方式和虚拟存储方式。
1、分区存储管理
分区类型 | 说明 | 优点 | 缺点 |
---|---|---|---|
固定分区 | 在作业装入前将内存划分为若干个分区,运行期间不再重新分配 | 实现简单,内存划分可控 | 内存利用率不高,内存碎片较多 |
可变分区 | 在作业装入内存时从可用内存中划出一块连续的区域分配使用,形式新的分区,常用算法:首次适应法、最佳适应法、最坏适应法 | 获得了较大灵活性,提供了内存的利用率 | 频繁的申请释放会导致内存碎片化而不可用 |
可重定向分区 | 移动某些已分配区域中的信息,使所有分配紧挨存储器一端,将零散的空白区域合并 | 提高了内存空间使用率 | 内存区域信息移动,可能会降低程序运行效率 |
多重分区 | 为一个作业分配一个以上的分区,允许运行期间动态申请不相连的分区 | 便于共享子程序或数据 | 需要硬件动态重定位支持 |
分区方式允许多道程序在内存中同时运行,但必须解决存储器保护问题。常用的方式有界地址保护和设置存储键保护。
2、段页式存储管理
分区存储管理要求把作业放在内存的一片连续区域,也产生了存储碎片和空间管理较复杂的问题。为了避免这种连续性的要求,可以将作业的逻辑地址空间分成若干个长度相等的区域(称为页),内存空间也划分成若干个与页长度相等的区域(称为页帧或块),程序装入时每页对应一个页帧,这就是分页存储管理的思想。
管理类型 | 说明 | 优点 | 缺点 |
---|---|---|---|
页式存储管理 | 系统为每道作业建立一张页面映射表(称为页表),记录相应页在内存中对应的页帧号。实际使用的页帧号可以连续,也可以不连续 | 消除了可变分区中紧致存储空间所带来的开销,同时实现了内存信息共享和虚拟存储技术 | 每次访问数据,需要首先访问页表,再根据页表中的物理地址访问实际的数据,降低了处理速度。 |
段式存储管理 | 按作业中自然段来划分逻辑空间,每段占用连续的地址空间,其逻辑地址由段号和段内地址组成。系统为每个作业建立段表记录该段内存的起始地址和段长。各段可以存放在内存不同的分区中,段的分配与回收与可变分区存储管理相同。 | 方便用户编程,共享更易实现,支持动态链接和动态增长。 | 同样存在二次访存问题,存储管理复杂,空间利用率差等缺点。 |
段页式存储管理 | 将段式存储与分页存储管理结合:将作业分为若干段,每段又分为若干页。为实现地址转换,为每一个作业配置一张段表和若干张页表。内存管理以分配和回收页为单位 | 内存空间使用率提高、内存管理难度降低。 | 存在三次内存访问问题,系统指令执行速度会更慢。 |
查表导致的多次内存访问问题,可以使用快表进行解决。 |
3、虚拟存储管理
在虚拟存储管理技术之前,作业启动前需要分配足够的存储空间,以装入有关作业的全部信息,作业的大小不能超过内存的可用空间,但所占用的内存空间在作业运行期间可能并未使用而会造成资源浪费。
为了解决这一问题产生了虚拟存储管理技术:作业在运行之前并不必全部装入内存,仅需将当前运行的部分程序和数据装入内存便可启动程序运行,其他部分仍然驻留在外存中。当要执行的指令或访问的数据不在内存时,再由操作系统通过请求调用功能将它们调入内存以便程序继续执行;而内存已满时,采用置换算法将部分内存中的暂时不用的程序和数据调至外存,腾出相应的内存空间。
将这种具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的存储器系统称为虚拟存储系统。
对于虚拟存储管理系统,良好的页面置换算法应能够淘汰那些被访问概率最低的页,并将它们移出内存,从而提高系统性能。
3.4 文件系统
文件是操作系统进行信息管理的基本单位,对软件资源的管理是通过文件系统来实现的。
为了实现这些功能,操作系统必须考虑文件目录的建立和维护、存储空间的分配和回收、信息的编码方法和存储次序,以及如何检索用户信息等问题。
3.4.1 文件的组织结构
1、逻辑结构
文件的逻辑地址(逻辑文件)是指用户概念的文件。逻辑文件有两种形式:无结构的流式文件和有结构的记录式文件。
- 流式文件:相关信息项的集合,基本单位为字节(或字)。在UNIX系统中,所有文件都被看成是流式文件。
- 记录式文件:数据记录的集合,基本单位是逻辑地址,记录的长度有等长和变长之分。
2、物理结构
文件物理结构(物理文件)是指文件在存储介质上的组织方式,依赖物理的存储设备和存储空间。常用的文件物理存储结构有顺序结构、链接结构和索引结构。
- 顺序结构(连续结构):连续的记录构成的文件分配到连续的物理块中。
- 链接结构(串联结构):将信息存储在非连续的物理块中,每个物理块末尾均设有地址指向其后续的物理块。
- 索引结构(随机结构):为每个文件建立一个索引表,每个表项指向信息所在的物理块号,表目按逻辑记录编写顺序排序。
3、树形文件结构
文件控制块的集合称为文件目录,文件目录也被组织成文件,常称为目录文件。文件管理的一个重要方面是对文件目录进行组织和管理。文件系统一般采用一级目录结构、二级目录结构及多级目录结构。
3.4.2 存储空间管理
文件系统应能自动为用户分配并管理系统和用户的存储空间。
3.4.3 分布式文件系统
在计算机网络中,每一个节点运行一个包括自己的文件系统的本地操作系统,称为本地文件系统(Local File System,LFS)。
而分布式文件系统(Distributed File System,DFS)是允许通过网络互联,使不同机器上的用户共享文件的一种文件系统。
分布式文件系统具有网络透明性和位置透明性的特点。
- 网络透明性:用户访问文件服务器的文件操作如同访问LFS的操作一样。
- 位置透明性:用户通过文件名访问文件,即使文件的物理位置改变用户仍可进行访问。
分布式文件系统目前大多数采用客户/服务器架构,客户是访问文件的计算器,服务器是存储文件并运行用户访问的计算机。分布式文件系统软件由两部分组成:运行在服务器上的DFS软件和运行在每个客户机上的DFS软件。这两部分程序代码在运行中都与本机操作系统的文件系统紧密结合共同起作用。