操作系统笔记

255 阅读10分钟

第一章


二、 操作系统的基本特性

1、并发

并发是指在内存中放多道作业,在一个时间段上看,每一道作业都能不同程度地向前推进,但在一个时间点上只能有一道占用CPU

2、共享

系统中的资源可供多个并发的进程共同使用

两种资源共享的方式:互斥共享方式、同时访问方式

  • 互斥共享方式:一段时间仅允许一个进程访问的资源,称为临界资源/独占资源
  • 同时访问方式:一段时间允许多个进程访问,但微观上交替使用

并发与共享互为条件,且二者为基础

3、虚拟

通过某种技术一个物理实体映射为若干个逻辑上对应物

虚拟是操作系统管理系统资源的重要手段,可提高资源利用率

  • CPU —— 多道程序设计技术 / 每个用户(进程)的“虚拟处理机”
  • I/O设备 —— 打印机、多窗口或虚拟终端
  • 存储器 —— 虚拟存储器技术

4、异步性

进程以不可预知的运行速度向前推进

  • 现代操作系统中,多个进程并发执行,无法预知每个进程的运行推进快慢

难以重现系统在某个时刻的状态(包括重现运行中的错误)


三、操作系统的基本功能

1、处理机管理

处理机是计算机中最重要的资源,现在操作系统允许多个进程共享处理机,按照某种算法(分时、优先级)交替使用处理机。

处理机管理包括:进程控制、进程同步、进程通信、调度

1、进程控制:完成作业创建一个或多个进程、撤销已经结束的进程、实现进程在运行过程的状态转换

2、进程同步:任务:协调多个进程的运行。

  • 协调方式:进程互斥方式、进程访问临界资源/锁;
  • 进程同步方式:进程相互合作/顺序

3、进程通信:实现相互合作的进程之间信息的交流/传递

4、调度:传统调度分为:作业调度进程调度

  • 作业调度:从后备队列中按照一定算法,选择出若干个作业,为他们分配必需的资源,建立进程,并按一定算法将他们插入就绪队列。
  • 进程调度:完成从就绪队列中选一道进程,为他们分配处理机,设置运行现场,以使其运行

2、存储器管理

存储器是计算机中第二重要的资源。存储器管理要具备下列功能:内存分配地址映射存储保护存储扩充

3、设备管理

功能:设备分配设备驱动缓冲管理设备独立性和虚拟设备

4、文件系统管理

5、用户接口

命令接口:便于用户直接或间接控制自己的作业(联机用户接口与脱机用户接口)

程序接口:为用户程序在执行中访问系统资源而设置的,由一组系统调用组成

图形接口


四、进程的基本概念

1、引入进程的目的

解决程序并发的不可再现性问题

2、定义

进程是指进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

进程实体:程序段相关的数据段进程控制块PCB 三部分


3、进程与程序的比较

image.png

进程更加体现一种过程

③ 进程更能真实地描述并发,而程序不能

④ 进程是由程序和数据、进程控制块三部分组成

⑤ 进程具有创建其他进程的功能,而程序没有

⑥ 同一程序可以对应多个进程

4、进程特征

  • 结构特征:由程序段、数据段、进程控制快(PCB)三部分组成
  • 动态性:进程是程序的执行
  • 并发性:多个进程可以同存于内存中,能在一段时间内同时运行
  • 独立性:独立运行的单位,独立获得资源和调度的单位
  • 异步性:各进程按各自独立的不可预知的速度向前推进

5、进程的状态及转换

不同系统设置的进程状态数目不同

进程的三状态模型

  • 进程有三种基本状态:就绪、运行、阻塞
  • 进程在生命消亡前处于且仅处于三种基本状态之一

进程状态变迁图

image.png

就绪状态:当进程已经获得了除CPU以外的所有资源,一旦得到CPU,就可立即运行

  • 就绪队列:所有处于就绪状态的进程所在的队列

运行状态:正在运行的进程所处的状态

  • 单处理机系统:一个进程处于运行状态
  • 多处理机系统:有多个进程处于运行状态

阻塞状态:若一个进程正在等待某一事件发生,这时即使给他CPU。他也无法运行,此时称该进程处于等待状态或阻塞、睡眠、封锁状态

  • 阻塞队列:系统根据阻塞原因设置多个队列来管理处于阻塞状态的进程

以下情况,进程会变为阻塞状态:

  • 等待某种操作完成
  • 向系统请求共享资源失败
  • 新数据尚未到达
  • 无新工作可做

五状态进程模型

七状态进程模型

引入挂起状态的原因:

  • 终端用户的请求
  • 父进程请求
  • 负荷调节的需要
  • 操作系统的需要
  • 对换的需要

6、进程控制块PCB

1、为了描述和控制进程运行,系统为每个进程定义了一个数据结构,成为进程控制块(PCB)

2、PCB中记录了OS所需的、用于描述进程当前情况以及控制进程运行的全部信息

3、进程与PCB是一一对应的,PCB是OS感知进程存在的唯一标志

PCB作用

  • 作为独立运行基本单位的标志
  • 能实现间断性运行方式
  • 提供进程管理所需要的信息
  • 提供进程调度所需要的信息
  • 实现与其他进程的同步与通信

PCB应常驻内存,因为它非常重要,经常被访问

PCB内容

进程描述信息

1、进程标识符(process ID),唯一,通常是一个整数

2、进程名,通常基于可执行文件名

3、用户标识符(user ID)、进程组关系

进程控制信息

1、当前状态

2、优先级

3、代码执行入口地址

4、程序的外存地址

5、运行统计信息(执行时间、页面调度)

6、进程间同步和通信

7、阻塞原因

8、进程的队列指针

9、进程的消息队列指针

所拥有的资源和使用情况

1、虚拟地址空间的现状

2、打开文件列表

CPU现场保护信息

1、寄存器值(RISC的通用、程序计数器PC、程序状态字PSW、地址包括栈指针等)

2、指向赋予该进程的段/页表的指针

PCB表

1、系统将所有进程的PCB组织在一起,并将他们放在内存的固定区域所组成 2、PCB表的大小决定了系统中最多氪同时存在的进程个数,称为系统的并发度

PCB结构

链接结构

1、相同状态的进程PCB组成一个链表,不同状态对应多个链表

2、分类:就绪链表、阻塞链表

索引结构

相同状态的进程,社会资源一个PCB索引表,存放这些进程PCB在PCB表中的地址

五、进程的管理

进程控制

进程控制是对系统中的所有进程实施管理

  • 创建一个新进程
  • 终止一个已完成的进程
  • 终止一个因出现某事件而无法运行下去的进程
  • 负责进程运行中状态的转换

进程控制一般由OS内核的原语来实现

OS内核: 提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件,是操作系统最基本的部分

通常将OS中一些与硬件紧密相关的模块诸如中断处理程序、各种常用设备的驱动程序以及运行频率较高的模块(时钟管理、进程调度)以及许多模块公用的一些基本操作)都安排在紧靠硬件的软件层次中,并使它们常驻内存,以提高OS的运行效率,并对它们加以特殊的防护。这部分就是OS的内核

微内核:

内核的原语: 一种特殊的系统功能调用,可以完成一个特定的功能,其特殊在原语执行时不可被中断

常用的进程控制原语

  • 创建原语Create
  • 终止原语Destroy
  • 阻塞原语Block 唤醒原语Wakeup
  • 挂起原语Suspend 激活原语Active

OS内核的功能

不同操作系统内核的功能不同,但都包括以下:

支撑功能

1、中断处理:内核最基本功能

2、时钟管理

3、原语操作: 内核完成一些操作,如控制进程

资源管理功能

1、进程管理;全部或大部分放入内核

2、存储器管理

3、设备管理

进程创建

过程

1、获取进程的PCB

2、申请空白PCB

3、为新进程分配资源,如内存

4、初始化进程控制块

5、将新进程插入就绪队列

进程终止

过程

1、根据被终止进程的标识符,从PCB表中检索出该进程的PCB

2、若被终止进程处于运行状态,应立即终止执行,并置调度标志为

3、结束该进程所有子孙进程的执行,以防止不可控进程

4、将进程所拥有的资源交给父进程或系统进程

5、释放PCB

进程的有序终止 —— exit()

1、进程结束执行时调用exit(),完成进程资源回收

2、exit() 系统调用的功能

  • 将调用参数作为进程的“结果”
  • 关闭所有打开的文件等占用资源
  • 释放内存
  • 释放大部分进程相关的内核数据结构
  • 检查是否父进程存活

若存活,则保留结果的值知道父进程需要它,进入僵尸状态;若果没有,则释放所有的数据结构,进程终止

  • 清除所有等待的僵尸进程

状态转换——进程额度阻塞与唤醒

阻塞:当一个进程所期待的某一事件尚未出现时,该进程调用阻塞原语将自己阻塞。进程阻塞是进程自身的一种主动行为。

image.png

唤醒:当被阻塞进程所期待的事件出现时,则由有关进程调用唤醒原语将该进程唤醒

  • 处于阻塞状态的进程是绝不可能唤醒自己的,他必须由合作进程用唤醒原语唤醒他

image.png

该两种操作中,对应PCB也会被进行相应移动

进程同步

概念

1、进程之间的两种制约关系

  • 间接相互制约关系 / 制约关系(系统资源共享)
  • 直接相互制约关系 / 同步关系(进程间合作)

2、进程同步的主要任务是使并发执行的各进程之间能够有效地共享资源相互合作,使执行的结果具有可再现性。

  • 临界资源: 一段时间经允许一个进程访问的资源
  • 临界区:临界段,在每个程序中,访问;临界资源的那段程序

3、同步机制遵循的原则

  • 空闲让进
  • 忙则等待
  • 有限等待
  • 让权等待(让出CPU使用权)

硬件同步机制

利用Test-and-Set指令支线互斥

boolean TS(boolean *lock){
    boolean old;
    old = *lock;
    *lock = TRUE;
    return old;
}

do{
    //***
    while TS(&lock);
    critical section;
    lock :=false;
    remainder section;
}

利用swap指令实现互斥

image.png