您的位置:首页 > 理论基础

计算机操作系统原理--Linux实例分析

2017-04-20 18:49 543 查看
本书是结合Linux介绍操作系统的原理的书,是一本理论的书。
 
本书从计算机硬件的分类来叙述如何高效利用计算机资源,及我们使用的操作系统。
首先计算机硬件资源有CPU、内存、IO设备,其次还有软件资源:文件。
充分利用CPU-->进程管理
充分利用内存-->存储管理
充分利用io设备-->设备管理
管理软件资源-->文件系统
 
系统运行过程中,操作系统各部分协同工作,进程管理和设备管理之间的协作可能会出现故障-->死锁
 
计算机作为一个整体,系统本身需要保证自身的完整和安全性,特别是与网络上其他计算机一起工作的时候-->系统的安全性。
 
 
本书目录:
1
操作系统的概述
1.1什么是操作系统
计算机操作系统是一组控制和管理计算机资源的程序集合,它控制和协调并发活动,为用户提供良好的接口。
1.2操作系统的功能
计算机资源有CPU、内存、IO设备、文件,操作系统的功能就是管理这些资源:处理机管理、存储管理、设备管理、文件管理。除此之外操作系统为用户提供接口:作业管理。
1.3操作系统的历史
人工-->简单批处理-->多道批处理。
1.4操作系统的分类
单用户:一次只支持一个用户程序的运行
批处理:多个用户的作业进行成批处理
分时:多个终端,CPU分成时间片为每个终端用户服务
实时:及时响应,快速反应
通用:上述操作系统的结合体
网络:网络中的主机(服务器)所配置的操作系统,使多个具有自治能力的计算机互联起来,资源共享、协作处理的系统。
分布式:与网络操作系统相比,无主次之分,逻辑上是一个完整的计算机系统,协同完成一个任务。
1.5操作系统的特征
并发性:宏观概念,两个或多个时间在同一时间的间隔内发生。
共享性:操作系统与多个用户程序共享系统中的各种资源。
不确定性:程序运行环境的随机性,不确定当时计算机资源的使用情况。
虚拟性:虚拟处理机、虚拟内存、虚拟外部设备、虚拟信道。

1.6Linux
多用户多任务,开源,强大网络功能,支持各种平台、支持各种文件系统、可移植性强。
进程调度
内存管理
虚拟文件系统(VFS)
网络接口
进程间通信
2
处理机的使用
2.1
进程管理
2.1.1什么是进程

进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,它是系统进行资源分配和调度的一个独立单位。
2.1.2进程与程序的区别
进程是动态的,程序是静态的

进程有生命周期,程序是指令的集合

程序和进程无一一对应关系,一个程序可以对应多个进程

程序可以作为软件资源长期保存,进程只是一次执行过程。
2.1.3进程的组成

程序:完成独立功能的程序集合

数据:程序执行时作用的对象,物理基础

进程控制块(PCB):描述信息和控制信息。程序与操作系统打交道的中间媒介,管理进程所需的资源信息。
2.1.4进程的状态

运行

就绪

等待

两种辅助状态:初始态、终止态
2.1.5进程的控制

原语:系统态下执行某些具有特定功能的程序段。

进程控制原语:创建、撤销、阻塞、唤醒。
2.1.6进程的调度

方式:可剥夺、非剥夺

算法:先来先服务(FCFO)、优先数(优先级)、时间片轮转法(RR)、多队列反馈法
2.1.7同步与互斥

临界资源:一次只能被一个进程使用的资源

临界区:访问临界资源的程序段

同步:多个进程之间协作完成一项任务,且具有某种时序关系,即一个进程运行到某一点需要等待另一个进程的某个结果。

互斥:多个进程不能同时访问临界资源而产生的相互制约关系。

同步和互斥的实现:进程通信(锁原语)(效率低)、信号量(P、V操作)
2.1.8
进程通信

高级通信机制:进程间可以进行大量数据交换的通信机制。通信原语+数据结构

直接通信(消息缓冲通信):发送进程直接将信息发送给接收进程。

间接通信(信箱通信):进程间需要传递的消息是一封信件。
2.1.9线程

线程:进程的一个实体,CPU调度和分派的基本单位。

线程实体基本不拥有系统资源,与同属于一个进程的其他线程共享进程所拥有的全部资源。

线程是被系统独立调度和分派的基本单位。

线程可以创建和撤销另一个线程。
2.1.10线程与进程的关系
线程是进程的一部分,它是进程内的一个执行单元。

资源分配的单位是进程,不是线程。

调度的基本单位是线程,不是进程。

进程可以并发执行,一个进程中的每个线程也可以并发执行,但需要协调同步。

 
2.2作业管理及用户接口
2.2.1概念

为了便于用户使用计算机,操作系统为用户提供了两种类型的接口:程序级(系统命令,又称广义指令)、作业控制级。

系统调用:操作系统向用户提供的程序一级的服务,用户程序借助于系统调用命令向操作系统提出各种资源要求和服务请求。

广义指令:屏蔽硬件细节,提供一个或多个子程序模块(软件),使得用户可以在自己的程序中调用操作系统的各种功能。

管态:处理机在执行操作系统的程序代码时所处的状态。

目态:处理机在执行用户程序和其他系统应用程序时所处的状态。

作业控制级接口分为脱机接口和联机接口。

脱机接口(作业控制语言):一组具有固定格式和功能的作业控制命令。

联机接口(键盘命令):用户已交互方式请求操作系统服务的手段。GUI属于联机用户接口。
2.2.2作业管理

作业:用户在一次算题过程中或一次事物处理中,要求计算机系统所做的工作的集合。

作业控制方式:批处理(脱机方式,如编译、链接、执行,按步骤自动完成)、交互控制(联机方式,如逐条输入命令)。

作业状态:提交,后备,执行,完成。
2.2.3处理机调度
(1)作业调度:宏观调度,从后备作业中选出若干作业,分配资源,创建进程,程序和数据调入内存。
(2)交换调度:中级调度,内存紧张时,外存交换去的就绪状态的进程-->内存,内存中的就绪或等待状态的进程-->外存交换区。
(3)进程调度:微观调度,将CPU分配给就绪中的一个进程。
(4)线程调度:轻量级进程,是进程的实体,CPU调度和分派的基本单位。
2.2.4作业调度算法:
先来先服务(FCFS)

短作业优先(SJF)

最高响应比优先算法(HRN):响应比,作业等待时间/作业运行时间。

优先级算法

资源搭配算法

 
3
内存的使用
3.1存储管理的功能
3.1.1内存分配与回收
(1)建立内存分配登记表
(2)实施内存的分配
(3)内存的回收
3.1.2地址转换

逻辑地址:用户程序在装入主存空间之前使用的地址。

逻辑空间:装入主存空间之后的物理地址。

物理地址:内存单元中的唯一编号,可直接寻址。

物理空间:内存地址的集合,内存地址空间,内存空间。

地址映射(地址重定位):逻辑地址-->物理地址。

地址重定位方式:静态,动态。
3.1.3存储保护
(1)防止地址越界
(2)存取权限控制
3.1.4存储扩充

当用户申请的主存容量超过实际主存容量时,采用虚拟存储技术或自动覆盖和交换技术,来达到逻辑上对内存容量的扩充。
3.2分区存储管理
3.2.1单一连续分配方案

一段时间只有一个进程在内存的用户可用区
3.2.2固定分区管理
内存可用空间分为若干大小确定的存储区,操作系统占一个,其他由多个用户共享。

每个用户占用连续的分区区域,装入后不可移动,采用静态地址重定位。
3.2.3可变分区管理
内存除操作系统占用的区域外,事先不划分,构成一个大的空闲区,然后根据作业大小动态分区。

空闲区表

内存分配算法:最先适应算法、最佳适应算法、最坏适应算法(从大到小排序)。

移动技术:向一个方向(如低端地址)移动已分配的作业,使那些零散的小的空闲区在另一个方向连成一片。

覆盖与交换:覆盖,使在较小的可用内存中运行较大的程序;交换,将暂时不执行的程序送到外存,从而获得空闲内存空间装入新程序,或读入就绪状态的进程。
3.3页式存储管理
3.3.1页的划分技术
(1)内存空间分块:内存分为大小相同,位置固定的若干存储块,称内存块或页面。
(2)用户程序逻辑空间分页:同样方法对用户程序的逻辑地址空间按相同的尺寸划分成若干页面,称为页。
(3)以页为单位分配内存:物理块是内存空间分配和管理的基本单位。系统给进程分配存储空间时,进程的一个页占用一个物理块。
3.3.2逻辑地址的形式
逻辑地址: 
页号-页内地址
3.3.3相关数据结构

页表:给每个用户进程建立一张页面映像表,简称页表。
进程逻辑空间(第3页)-->页表(页号-块号)(3-5)-->内存块(5)
空闲块表:1张,内存分配的依据。
3.3.4页式地址转换

逻辑地址到物理地址的转换:
页号-页内偏移地址  --> 
页表(页号-块号)  --> 块号-块内地址
3.3.5快表

局部性原理:程序在一段时间内总是集中访问某一部分内存区域。

快表:利用高速缓冲存储器存放当前经常使用的页表表项,这个高速缓冲器称为快表。
3.3.6页的共享和保护

只读页面(如程序文件)可以被共享。

存储保护:越界检查,权限保护
3.4段式存储管理
3.4.1基本思想

按照作业的逻辑结构划分地址空间,在装入内存后,每个作业段占用一个连续的存储区域,而各段之间可以不连续。
3.4.2段的划分技术

段是作业的逻辑单位,每个段具有独立的功能,并且具有独立的相对地址空间。
3.4.3逻辑地址形式

段号-段内地址
3.4.4内存分配

动态地址重定位,作业运行过程中,任一段都可以根据需要动态改变存储空间的大小。
3.4.5段表和段表控制寄存器

段表:内存首址-段长-存取权限

一个进程的全部段表都应在该进程的段表中有所登记。
3.4.6地址转换

动态地址重定位,硬件逻辑自动实现(与页式存储管理一样)。
3.4.7段的共享和保护

共享段:作业共享的程序或数据最优一个段分配在主存的一个连续区域内。

段的保护:地址越界保护,存取权限控制,保护环。
3.5虚拟存储技术
3.5.1基本思想

虚拟是存储管理当进行要求运行时,不将它的全部信息装入内存,而是将其一部分先装入内存,另一部分暂时留在外存。

虚拟存储器(虚存):系统构造一个存储容量远远超过内存实际容量的存储器。

虚存容量限制:地址长度(32-->4G),外存限制。
3.5.2页式虚拟存储管理

覆盖使不同时段的程序部分替换,后续时段的程序模块覆盖已运行的的程序模块。
缺页-->中断处理:

页面淘汰算法:最佳页面淘汰算法(OPT)、先进先出淘汰算法(FIFO)、最近最不常用淘汰算法(LFU)、最近最久未用淘汰算法(LRU)。
3.5.3段式虚拟存储管理

与页式虚拟存储类似
3.5.4段页式存储管理

各取所长;用户将用户程序分为若干段,每段赋予一个段名,在再由系统将每个段独立划分成若干页,进程以页为单位驻进内存。

目前,段页式存储管理只在一些大型通用机上使用。
3.6Linux内存管理
3.6.1进程的地址空间

linux采用虚拟内存管理技术,使每个进程都有各自进程地址空间,虚拟地址空间大小为4G线性虚拟空间。
用户空间:0-3GB是用户空间,用户进程可直接访问,每个进程的用户空间完全独立,互不相干。
内核空间:3-4GB虚拟地址为内核空间,所有进程的3-4GB虚拟空间都是一样。
3.6.2Linux的分段和分页机制

分段:将线性地址空间分段,利用这些段来存储代码和数据。

分页:分段之后,进一步将线性地址转换成物理地址。
 
4 IO设备的利用
4.1设备和设备管理的功能
4.1.1设备

外部设备:除了CPU和内存之外,其他大部分硬件设备,包括输入/输出设备、外存设备、终端设备等。
按用途分类:存储设备、输入/输出设备。
4.1.2设备管理的设计目标
(1)为用户提供方便的统一接口
(2)提高各种设备的使用效率
(3)各种外设尽可能采用统一的管理方法
4.1.3设备管理的功能
(1)记录设备的管理信息
(2)进行设备分配
(3)完成I/O操作
(4)输入/输出缓存的管理
4.2I/O控制方式
4.2.1概念
使用设备完成输入/输出(I/O)的过程,就是主机和外部设备之间的数据传送的过程。

设备管理的主要任务之一是控制设备与内存或CPU之间的数据传送。
4.2.1查询等待方式

不断测试设备的忙闲状态
4.2.2中断方式

设备完成一次I/O操作之后,向CPU发出中断请求,CPU接收设备的中断请求,停止当前运行的程序,转而执行对设备进行控制的中断处理程序,然后进行I/O操作。
4.2.3DMA(DirectMemory Access)

外设与内存之间直接进行数据成块交换,不通过CPU,并且CPU不参与数据交换控制。

DMA期间,CPU将总线使用权转交给DMA。

DMA方式智能完成简单的数据传送,对于设备状态的控制和管理等更复杂的I/O操作无能为力。
4.2.4通道方式
通道:专门的I/O处理器,接收主机的委托,独立执行通道程序,完成设备与内存间的批量数据传送。

通道种类:字节多路通道、数据选择通道、数组多路通道。

通道程序:由通道命令按照一定的控制要求组织起来,它规定了I/O设备所应执行的操作及顺序。

通道执行过程:(1)CPU生成通道程序;(2)通道接收“启动I/O”指令,开始执行;(3)通道完成操作,向CPU发出中断请求信号。
4.3缓冲技术
4.3.1缓冲技术的目的
(1)缓解CPU与I/O设备间速度不匹配的问题。
(2)减少I/O对CPU的中断次数和放宽CPU对中断的响应时间。
4.3.2缓冲的种类

使用目的:硬件缓冲器,软件缓冲器(从内存中划出一片区域)。

多少:单缓冲(设备和处理机之间,临界资源),双缓冲(一个输入,一个输出),多缓冲(一部分输入,一部分输出)。
4.4中断技术
4.4.1概念

中断:CPU正常执行程序过程中,遇到外部或内部紧急事件需要处理时,暂时中断(中止)当前程序的执行,而转去为事件服务,待服务完毕,在返回到暂停点(断点)继续执行原来的程序。

特点:随机、可恢复、自动处理。

中断请求:中断源向CPU提出的请求,CPU每执行一条指令就会查询中断请求。

中断响应:对中断请求做出的反应(保护断点,转入中断服务入口),
4.4.2中断的类型

位置划分:外部中断(I/O,时钟和控制台,硬件),内部中断(程序故障,系统调用)。
4.4.3处理
保护现场-->开中断-->中断服务
4.4.4返回
关中断-->恢复现场-->开中断
4.4.5全过程
中断请求-->中断响应-->中断服务-->中断返回
4.4.6多中断
两种处理:(1)挂起后来的中断;(2)按优先级高级中断可以打断低级中断。
4.5设备分配
4.5.1数据结构
(1)设备控制表(DCT):每个设备都必须有一个DCT,内容包括设备标识、使用状态、等待使用设备的进程队列等。
(2)系统设备表(SDT):系统中只有一张,每一项包括:DCT指针,进程标识,设备类型和标识符
(3)控制器表(COCT):每个控制器一张,I/O控制器的使用状态以及和通道的连接情况。
(4)通道控制表(CHCT):每个通道一张,只在通道控制方式的系统中存在。
4.5.2设备分配技术
(1)独占设备;
(2)共享设备;
(3)虚拟设备:将独立设备改造成多个进程共享的设备,并发物理上的共享设备。
4.5.3假脱机技术(SPOOLing)

一种虚拟分配技术,在输入输出之间增加“输入井”和“输出井”的排队转储环节,以消除用户的“联机”等待时间。
4.5.4设备独立性

设备独立性:应用程序独立与具体使用的物理设备。应用程序使用逻辑设备名请求使用实际设备。
设备独立性软件:功能有(1)执行所有设备的共有操作;(2)向用户层(或文件层)软件提供统一接口。
逻辑设备名到物理设备名的映射:(1)逻辑设备表(LUT);(2)LUT设置问题。
4.5.5设备分配算法
(1)先请求先分配
(2)优先级高者先分配
4.6I/O软件
4.6.1目标
(1)设备独立性
(2)出错处理
(3)同步(阻塞)-异步(中断驱动)传输
(4)独占性外围设备和共享外围设备
4.6.2组成
(1)中断处理程序:处理中断信号
(2)设备驱动程序:建立设备寄存器、解决错误
(3)与设备无关的I/O软件:实现所有设备都需要的功能,命名、保护、阻塞、缓冲
(4)用户空间的I/O软件:提供系统库调用,使人员使用;提供类似SPOOLing这样的守护进程管理共享设备
4.7设备驱动程序
4.7.1设备驱动程序的功能

接收上层软件发来的抽象要求(如read、write命令),再把它转换为具体要求,发给设备控制器,启动设备去执行。
4.7.2特点
(1)进程和设备控制器之间的通信程序
(2)与I/O设备的特性紧密相关
(3)与I/O控制方式紧密相关
(4)有很多设备的驱动程序部分固化在ROM中
4.8磁盘存储管理
4.8.1磁盘特点

高速、大容量、旋转型
4.8.2磁盘系统与磁盘分类

磁盘系统:由磁盘本身和驱动控制设备组成

分类:固定头磁盘、移动头磁盘
4.8.3磁盘调度

算法:FCFS、最短寻找时间优先调度算法(SSTF)、电梯调度算法(SCAN)、单向扫描调度算法(CSCAN)
5软件资源的利用(文件管理)
5.1文件和文件系统
5.1.1概念

文件:被命名的数的集合体,或具有名字的信息序列。

文件系统:操作系统中负责管理和存取文件信息的软件机构。

文件是计算机系统的软件资源,操作系统本身和大量用户程序、数据等都是以文件的形式组织和存放的。
5.1.2文件的分类

创建角度:系统文件、用户文件、库文件。

存取权限:只读文件、读写文件、可执行文件(只执行,不读写)、不保护文件。
信息流向:输入文件、输出文件、输入/输出文件

逻辑结构:流式文件、记录式文件

内容信息:文本文件、二进制文件

文件性质:普通文件、目录文件、设备文件

存储介质:磁盘文件、磁带文件、光盘文件

物理结构:连续文件、顺序文件、索引文件

保存时间:永久文件、临时文件
5.1.3文件系统的功能
(1)文件组织:提供文件信息的组织结构
(2)文件存储空间的管理
(3)文件共享与保护
(4)提供方便的接口
5.2文件的组织结构
5.2.1逻辑结构

逻辑结构:从用户观点来看的文件组织形式,用户可直接处理的数据结构
(1)记录式文件:逻辑上可以被看作成一组连续顺序的记录的集合
(2)流式文件:无结构文件,在逻辑上看作是一系列有意义的字符或字节按照一定顺序的集合。
5.2.2物理结构

物理结构:文件在外存空间存放时的组织结构,即文件在外存的存放方式。
(1)连续结构:文件的物理顺序和逻辑顺序一致
(2)链接结构:连续的逻辑块可以占用不连续的物理块,每个物理块中有一个链接指针指向下一个物理块。
(3)索引结构:非连续存储结构,每个文件一张索引表,每个
表目指出逻辑记录与物理块号的对应关系。即文件逻辑块与物理块的映射表。
5.2.3记录的成组和分解
成组:将若干个逻辑合并成组写入1个物理块的操作叫记录的成组。
分解:当1个物理块读入缓冲区后,把逻辑记录从块中分离出来的操作称为记录的分解。
5.3文件的存取方式
(1)顺序存取:按照字符流或记录排列的次序进行存取。
(2)随机存取:可以从任意制定位置开始存取文件信息。
5.4文件目录管理
5.4.1文件的组成

文件的组成:文件控制块(FCB)、文件信息体
5.4.2文件控制块和文件目录

文件控制块:为了方便对文件进行控制和管理,每个文件都有一个文件控制块。

文件目录:文件控制块的有序集合

目录文件:完全由目录项构成的文件
5.4.3文件目录的结构
(1)一级目录结构:系统中所有文件的目录都在一张目录表中,整个目录组织是各线性表,结构简单。
(2)二级目录结构:为每个用户建立一个文件目录,称为用户目录,用户把自己的文件登记在用户目录中。
(3)树形目录结构:多级目录结构。
5.5文件存储空间的管理
5.5.1空闲区表法

空闲区表:以空闲块为单位登记

分配:可参照可变分区管理方法
5.5.2空闲块链法
(1)空闲块单块链接法:单链表
(2)空闲块成组链接法
5.5.3位示图法

存储空间分配表
5.6文件的共享和保护
5.6.1文件的共享

共享:多个进程使用同一文件

方式:互斥、同时性共享。

实现方法:公共目录、链接(定义别名)、授权。
5.6.2文件保护
文件访问控制:(1)文件存取控制矩阵;(2)文件控制表;(3)分权至目录。

文件保密:文件口令、文件加密。
5.7文件操作
5.7.1建立文件

系统调用:create (文件,文件属性)
5.7.2打开文件

Open(文件名)
5.7.3读文件

read(文件名,内存首址M,起始逻辑记录号N,读取的记录数L)
5.7.4写文件

write(文件名,M,N,L)
5.7.5关闭文件

close(文件名)
5.7.6删除文件

delete(文件名)

 
6死锁-->内部安全性问题
6.1概念
系统中存在两个或多个进程,它们中每一个进程都占用了某种资源而又都在等待着其中另一个进程所占用的资源而无限期的僵持下去的局面。
6.2原因
系统能够提供的资源个数比要求该资源的进程数少
6.3特征
6.3.1必要条件

互斥(独占):一个资源在一段时间只能由一个进程占有。

不可抢占(保留):资源申请者不能夺取占有者手中的资源。

占有且等待(等待):未使用完手上资源,有申请新资源,并等待。

循环等待条件(循环):相互等待,形成一个环。
6.4处理死锁的基本方法
6.4.1预防

破坏四个必要条件中的一个
6.4.2避免
死锁避免:系统运行过程中,对进程发出的每一个系统都能满足的资源申请进行动态检查,并根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配。

安全状态:如果操作系统能保证当前提出资源申请的所有进程都能在有限的时间内得到所需的全部资源而运行完毕,并规划它所申请的资源,则系统处于安全状态。

系统的不安全状态与死锁并非等同

著名方法:银行家算法(检查申请者对各类资源的最大需求量,如果系统现存的各类资源可以满足它的最大需求量,就满足当前的请求。
6.4.3死锁的检测和解除
6系统安全性-->外部安全性问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  操作系统