操作系统原理笔记(1)

操作系统原理第一第二章知识点总结

一、操作系统引论

操作系统的目标和功能

目标

  • 方便性
  • 有效性
    • 提高系统资源利用率
    • 提高系统吞吐量
  • 可扩充性
  • 开放性

作用

  • OS作为用户与计算机硬件系统之间的接口
    • 命令方式
    • 系统调用方式
    • 图标–窗口方式
  • OS作为计算机系统资源的管理者
  • OS实现了对计算机资源的抽象

操作系统的发展过程

未配置操作系统的计算机系统

  • 人工操作方式
    • 用户独占全机
    • CPU等待人工操作

人工操作方式严重降低了计算机资源的利用率

  • 脱机输入/输出(Off–Line I/O)方式
    • 减少了CPU的空闲时间
    • 提高了I/O速度

单道批处理系统

多道批处理系统

  1. 资源利用率高
  2. 系统吞吐量大
  3. 平均周转时间长
  4. 无交互能力

宏观并行,微观串行

分时系统

特征:

  1. 多路性
  2. 独立性
  3. 及时性
  4. 交互性

实时系统

特征:

  1. 多路性
  2. 独立性
  3. 及时性
  4. 交互性
  5. 可靠性

集群系统–超算~云计算

微机操作系统的发展

操作系统的基本特征

并发concurrence

  • 区别并行和并发
    • 并行性是指两个或多个事件在同一时刻发生→宏观并行,微观并行
    • 并发性是指两个或多个事件在同一时间间隔内发生→宏观并行,微观串行
    • 并发是进程宏观一起运行,微观上交替运行,而并行是指同时运行
  • 引入进程
    • 进程是指在系统中能独立运行并作为资源分配的基本单位,它是由一组机器指令,数据和堆栈等组成的,是一个能独立运行的活动实体

共享sharing

  1. 互斥共享方式
  2. 同时访问方式

并发和共享是多用户(多任务)OS的两个最基本的特征。它们又是互为存在的条件。

虚拟virtual

  1. 时分复用技术
    • 虚拟处理机技术
    • 虚拟设备技术
  2. 空分复用技术

异步asynchronism

操作系统的主要功能

处理机管理功能

  • 进程控制
  • 进程同步
    • 进程互斥方式
    • 进程同步方式(协同)
  • 进程通信
  • 调度
    • 作业调度
    • 进程调度

存储器管理功能

  • 内存分配
    • 静态分配
    • 动态分配
  • 内存保护
  • 地址映射
  • 内存扩充

设备管理功能

  • 缓冲管理
  • 设备分配
  • 设备处理
    • 设备处理程序又称设备驱动程序

文件管理功能

  • 文件存储空间的管理
  • 目录管理
  • 文件的读写管理和保护
    • 根据用户的请求从外存中读取或写入数据
    • 防止系统中的文件被非法窃取和破坏。

操作系统与用户之间的接口

  • 用户接口
    • 联机用户接口(CLI)
    • 脱机用户接口
    • 图形用户接口(GUI)
  • 程序接口

现代操作系统的新功能

  • 系统安全
  • 网络的功能和服务
  • 支持多媒体

OS结构设计

传统操作系统结构

  • 无结构操作系统
  • 模块化OS
  • 分层式结构OS

微内核os结构

  1. 基本概念:
    • 足够小的内核
    • 客户/服务器模式
    • 机制与策勒分离原理
    • 面对对象的程序设计
  2. 微内核基本功能:
    • 进程(线程)管理
    • 低级储存器管理
    • 中断和陷入处理
  3. 微内核优点:
    • 提高了系统可拓展性
    • 增强了系统的可靠性
    • 提供了对分布式系统的支持
    • 融入面向对象技术

课后题

试从交互性、及时性以及可靠性方面,将分时系统与实时系统进行比较。

答:(1)及时性:实时信息处理系统对实时性的要求与分时系统类似,都是以人所能接受
的等待时间来确定;而实时控制系统的及时性,是以控制对象所要求的开始截止时间或完成
截止时间来确定的,一般为秒级到毫秒级,甚至有的要低于100微妙。
(2)交互性:实时信息处理系统具有交互性,但人与系统的交互仅限于访问系统中某
些特定的专用服务程序。不像分时系统那样能向终端用户提供数据和资源共享等服务。
(3)可靠性:分时系统也要求系统可靠,但相比之下,实时系统则要求系统具有高度
的可靠性。因为任何差错都可能带来巨大的经济损失,甚至是灾难性后果,所以在实时系统
中,往往都采取了多级容错措施保障系统的安全性及数据的安全性。

OS有哪几大特征?其最基本的特征是什么?

答:并发性、共享性、虚拟性和异步性四个基本特征;最基本的特征是并发性。

什么是时分复用技术?举例它能提高资源利用率的根本原因是什么。

答:时分复用包括虚拟处理机技术和虚拟设备技术。其中虚拟处理机可以将一台物理机虚拟成多台逻辑上的处理机,当一个处理空闲时可以去处理其他逻辑处理机。而虚拟设备技术也是类似的在空闲时间去为其他用户服务。
提高效率的根本原因是在一个任务流空闲时可以处理其他任务,充分利用空闲时间,避免设备空负载。

在基于微内核结构的OS中,应用了哪些新技术?

答:微内核的新技术是:面向对象技术,能降低操作系统的复杂性

简答题

1、为什么要发明计算机系统:方便、有效、可扩充、开放。
计算机系统作用:做接口、管理资源、资源的抽象。
发展计算机系统的动力:提高利用率、更加方便应用 。
2、计算机系统发展史
(1)无操作系统
①人工操作:单用户、CPU和内存长期空闲。
②脱机输入/输出(OFF-LINE I/0):装好卡片再上机。目的是节约CPU空闲时间、提高I/O速度 。
(2)单道批处理操作系统
描述:有个监督程序将磁带上的作业调入计算机。
缺点:I/O太慢,CPU太快 。
(3)多道批处理操作系统
描述:A在I/0,B在CPU。
优点:肯定提高资源利用率、系统吞吐量变大。
缺点:每个程序都要很久才处理完、无交互能力 。
未解难题:内存、外存、I/O、CPU、作业管理、接口等之间匹配问题。
(4)分时系统
描述:解决人机交互问题 。
优点:终于有人机交互、多用户共享主机 。
实际问题:由于多用户,所以要有“多路卡”、作业直接入内存、有个“时间片”调度作业 。
特征:多路、独立、及时(用户可接受)、交互 等特点。
(5)实时系统
描述:工业(武器)控制系统、信息查询系统、多媒体系统、嵌入式系统 。
类型:
①周期性实时:按周期时间实时;非周期性实时:有开始截止时间和完成截止时间 。
②硬实时:工业系统、武器系统;软实时:信息查询系统和多媒体系统。
与分时系统比较: 多路、独立、及时(毫秒级)、交互、可靠。
(6)微机时代
①单用户单任务:8位机的CP/M、16位机的MS-DOS 。
②单用户多任务:目前的32位系统,如Windows95 。
③多用户多任务:UNIX、Solaris、Linux
3、操作系统共同特性:
(1)并发
①并发和并行宏观上一样,
并发:单处理机系统,微观上交替运行
并行:多处理机系统,微观上同时运行
②引入进程
进程:在系统中能独立运行并作为资源分配的基本单位,由机器指令、数据和堆栈等组成,能独立运行的活动实体
特点:用进程就可以并发执行了
(2)共享
①互斥共享方式
例子:临界资源,打印机、磁带机
描述:你要先申请才能获得资源
②同时访问方式
描述:微观上还是并发
例子:多用户磁盘设备
条件:系统允许进程并发、系统能有效管理资源
(3)虚拟
①时分复用技术
虚拟处理机技术:分身之术
虚拟设备:又是分身之术,骗用户以为有专人服务
时分复用:速度:≤1/N
②空分复用技术
描述:将程序、电话线分成若干部分,然后各部分分时进入内存运行
空分复用:空间:≤1/N
(4)异步
描述:因为要并发,所以需要一个机制调度进程
4、操作系统主要功能
(1)处理机管理功能
①控制进程
描述:要并发,就要进程、要进程,就要管理
②进程同步
进程互斥方式:临界资源要互斥
进程同步方式:合作完成共同任务,同步机构要协调先后次序
③进程通信
描述:对合作进程而言,需要交换信息。当他们处于同一计算机系统时,通常采用直接通信的方式。
例子:输入进程、计算进程、打印进程,需要信息交换
④调度
作业调度:选择作业、建立进程、分配资源、插入就绪队列
进程调度:从就绪队列中选出进程,分配CPU
(2)存储器管理功能
①内存分配
任务:分配空间、减少碎片、追加内存空间
方式:静态分配,装入内存时确定,不允许追加、不允许移动;动态分配,允许追加、允许移动
②内存保护
任务1:每道程序只在自己的内存空间运行,互不干扰
任务2:不允许用户程序访问操作系统程序和数据、也不允许用户程序转移到非共享的其他用户程序中执行
③地址映射
任务:存储器要负责地址映射,在硬件支持下完成
④内存扩充
描述:用虚拟存储技术,从逻辑上扩充内存容量
任务1:请求-调入功能
任务2:置换功能
(3)设备管理功能
任务1:完成用户进程的I/O请求:分配I/O设备,完成I/O操作
任务2:提高CPU和I/O利用率:提高I/O速度,方便用户使用I/O设备
①缓冲管理
描述:在内存中设置缓冲区
例子:单缓冲机制、双向同时传送数据的双缓冲机制、多个设备共同使用的公用“缓冲池”机制
②设备分配
描述:在系统中设置“设备控制表”、“控制器控制表”等数据结构,用于记录设备和控制器等标识符和状态。根据表就知道指定设备当前是否可用、忙碌。分配时,针对不同设备要有不同“分配方式”,对独占设备还要考虑分配后是否安全
③设备处理
描述:CPU向设备控制器发出I/O命令,要求完成I/O操作、反之,CPU接收控制器发出的中断请求,并响应.处理
(4)文件管理功能
描述:管理用户、系统文件,方便使用;保证安全性
①文件储存空间管理
背景:多用户环境下,用户自己管理文件存储,会困难和低效
任务1:为每个文件分配外存空间、提高外存利用率、进而提高存取速度
任务2:系统中设置数据结构,记录文件存储空间使用情况,以供分配时参考
任务3:分配和回收
②目录管理
任务1:为每个文件建立目录项,包括文件名、属性、物理位置等,以实现按名存取
任务2:实现文件共享。
任务3:提供目录查询手段
③文件读/写管理和保护
文件读/写管理:根据用户请求,从外存中读取数据,或将数据写入外存
文件保护:防止未经核准的用户存取文件、防止冒名顶替存取文件、防止以不正确方式使用文件
(5)操作系统与用户之间的接口
①用户接口
描述:方便用户直接.间接控制自己的作业
联机用户接口:等待用户键入命令
脱机用户接口:一开始就提供作业说明书,直到作业结束语句
图形用户接口:移动鼠标选择菜单项
②程序接口
描述:旧系统用汇编语言写,所以只有汇编语言的才能直接使用系统调用;如果是高级语言,就用一一对应的库函数
(6)现代操作系统的新功能
①系统安全
描述:确保存储和传送数据的保密性、完整性和系统可用性,要用几种技术
技术:认证技术、密码技术、访问控制技术、反病毒技术
②网络的功能和服务
功能:网络通信、资源管理、应用互操作
③支持多媒体
功能:接纳控制功能、实时调度、多媒体文件的存储
5、OS结构设计
(1)传统操作系统结构
①无结构操作系统
又名:整体系统结构
②模块化结构OS
基本概念:
又名:模块-接口法
描述:有模块、子模块、接口
模块独立性:
标准:内聚性越高,模块独立性越高、耦合度越低,模块独立性越高
优点:提高设计正确性.可理解性和可维护性、增强可适应性、加快加速过程
缺点:接口难以满足需求、无序
③分层式结构OS
基本概念:有序分层,自底向上法铺设中间层
优点:易保证系统正确性、易扩充和易维护
缺点:系统效率降低
(2)客户/服务器模式(Client/Server Model)简介
①客户/服务器模式的由来、组成和类型
组成:客户机、服务器、网络系统
②客户/服务器之间的交互
描述:客户发送请求消息、服务器接收消息、服务器回送消息、客户机接收消息
③客户/服务器模式的优点
描述:数据分布处理和存储、便于集中管理、灵活性和可扩充性、易于改编应用软件
(3)面向对象的程序设计
①OOP的基本概念
描述:抽象,具体事物为对象
对象:封装好
对象类:创建多个相似对象
继承:继承父类,增加部分
②OOP的优点
描述:“重用”提高产品质量和生产率、使系统具有更好的易修改性和易扩展性、易于保证系统“正确性”和“可靠性”
(4)微内核OS结构
描述:支持多处理机
例子:卡内基·梅隆的Mach OS、Windows 2000/XP
①基本概念
描述:足够小的内核、基于C/S模式、应用“机制与策略分离”原理、采用OOP技术
②基本功能
描述:进程管理、低级存储器管理、中断和陷入处理
③优点
描述:提高可扩展性、增强可靠性、可移植性强、提供对分布式系统的支持、融入OOP
④缺点
描述:效率降低

二、进程的描述与控制

前驱图和程序执行

前趋图

前趋图(Precedence Graph)是指一个有向无循环图,可记为DAG(Directed Acyclic Graph),它用于描述进程之间执行的先后顺序

程序顺序执行

  • 顺序性
  • 封闭性
  • 可再现性

程序并发执行

特征:

  • 间断性
  • 失去封闭性
  • 不可再现性

进程的描述

进程的定义

  • 进程是程序的一次执行
  • 进程是一个程序及其数据在处理机上顺序执行时所发生的活动
  • 进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。

进程的特征

  • 动态性
  • 并发性
  • 独立性
  • 异步性

进程的基本状态及转换

  • 进程的三种基本状态
    • 就绪状态ready
    • 执行状态running
    • 阻塞状态block
  • 三种基本状态的转换
  • 创建状态和终止状态
    • 五种基础状态及转换
  • 注意
    • 阻塞态->运行态和就绪态->阻塞态这二种状态转换不可能发生

挂起操作和进程状态的转换

  • 挂起操作的目的
    • 终端用户的需要: 修改、检查进程
    • 父进程的需要:修改、协调子进程
    • 负荷调节的需要:缓和系统中的负荷,保证系统正常运行
    • 操作系统的需要:检查和记录运行中的资源使用情况
  • 挂起原语操作后三个进程状态的转换
    • 活动就绪Readya->静止就绪Readys,处于Readys状态的进程不再被调度
    • 活动堵塞Blockeda->静止堵塞Blockeds,所期待的事件出现后,将会从静止堵塞转为静止就绪
    • 静止就绪->活动就绪,Readys状态用激活原语Active激活后转变为Readya状态
    • 静止堵塞->活动堵塞,同样使用Active能让Blockeds转变为Blockeda

进程管理中的数据结构

  • 进程控制块PCB的作用
    • 作为独立运行基本单位的标志
    • 能实现间断性运行方式
    • 提供进程管理所需要的信息
    • 提供进程调度所需要的信息
    • 实现与其他进程的同步与通
  • 进程控制块的信息
    • 进程标识符
      • 外部标识符PID
      • 内部标识符(端口)
    • 处理机状态
      • 通用寄存器
      • 指令计数器
      • 程序状态字PSW
      • 用户栈指针
    • 进程调度信息
      • 进程状态
      • 进程优先级
      • 进程调度所需的其他信息
      • 事件
    • 进程控制信息
      • 程序和数据的地址
      • 进程同步和通信机制
      • 资源清单
      • 链接指针
    • 进程控制块的组织方式
      • 线性方式
      • 链接方式
      • 索引方式

进程控制

操作系统内核

  • 两大功能
    • 支撑功能
      • 中断管理
      • 时钟管理
      • 原语操作
    • 资源管理功能
      • 进程管理:进程的调度和分派、创建和撤销、进程同步的原语等
      • 存储器管理:用户空间的逻辑地址转为物理地址、内存分配和回收、内存保护和对换等
      • 设备管理

进程的创建

  • 进程的层次结构
    • 父进程
    • 子进程
  • 引起创建进程的事件
    • 用户登录
    • 作业调度
    • 提供服务
    • 应用请求
  • 进程的创建过程
    1. 申请空白PCB
    2. 为新进程分配其运行所需的资源
    3. 初始化进程块PCB
    4. 如果进程就绪队列能够接纳新进程,便将新进程插入就绪队列

进程的终止

  • 引起进程终止的事件
    • 正常结束
    • 异常结束
    • 外界干预
  • 进程的终止过程
    1. 根据被终止进程的标识符,从该进程的PCB读出进程的状态
    2. 若被终止进程处于执行状态应立刻终止该进程执行,将调度标志置真,用于该进程重新调度
    3. 若该进程还有子孙进程,将所有子孙进程也终止
    4. 将被终止的进程所拥有的全部资源归还给父进程或者系统
    5. 被终止的进程(PCB)从所在队列或链表中移出,等待其他程序来收集信息

进程的阻塞与唤醒

  • 引起进程阻塞和唤醒的事件
    • 向系统请求共享资源失败
    • 等待某种操作完成
    • 新数据尚未到达
    • 等待新任务到达
  • 进程阻塞过程(自己阻塞自己)
  • 进程唤醒过程(系统或其他进程唤醒自己)

进程的挂起与激活

  • suspend
  • active

进程同步

基本概念

  • 两种形式的制约关系
    • 间接相互制约关系:互斥——竞争
    • 直接相互制约关系:同步——协作
  • 临界资源
  • 访问临界资源进程顺序
    1. 进入区enter section
    2. 临界区critical section
    3. 退出区exit section
    4. 剩余区remainder section
  • 同步机制应遵循的规则
    • 空闲让进
    • 忙则等待
    • 有限等待
    • 让权等待

进程同步机制

  • 软件同步机制:都没有解决让权等待,而且部分方法还会产生死锁的情况
  • 硬件同步机制
    • 关中断
    • 利用Test-and-Set指令实现互斥
    • 利用swap指令实现进程互斥

信号量机制

  • 整型信号量
  • 记录型信号量

    由于整型信号量没有遵循让权等待原则,记录型允许负数,即阻塞链表

  • AND型信号量
  • 信号量集

信号量的应用

  • 利用信号量进行进程互斥
  • 利用信号量实现前趋关系

管程机制

  • 定义:一个管程定义了一个数据结构和能为并发进程所执行的一组操作,这组操作能同步进程和改变管程中的数据。
  • 组成:
    • 管程名称
    • 局部于管程的共享数据结构说明
    • 对该数据结构进行操作的一组过程
    • 对局部于管程的共享数据设置初始值的语句
  • 条件变量

经典进程的同步问题

  • 生产者–消费者问题
  • 哲学家进餐问题
  • 读者–写者问题

进程通信

进程通信是指进程之间的信息交换,又称低级进程通信。
OS提高的高级通信工具特点:

  1. 使用方便
  2. 高效地传送大量数据

进程通信的类型

  • 共享存储器系统
    • 基于共享数据结构的通信方式,比如:生产者和消费者。通信效率底下,属于低级通信
    • 基于共享存储区的通信方式,数据形式和位置甚至访问控制由进程负责,属于高级通信
  • 管道通信系统(pipe)
  • 消息传递系统
    • 直接通信方式,利用OS提供的原语
    • 间接通信方式,通过共享中间实体的方式发送和接收
  • 客服机–服务器系统
    • 套接字(Socket)
    • 远程方法调用(Remote Procedure Call-RPC)

消息传递通信的实现方式

  • 直接消息传递系统
    • 直接通信原语
      1. 对称寻址方式
      2. 非对称寻址方式
    • 消息的格式
    • 进程的同步方式
    • 通信链路
      1. 单向通信链路,只允许进程向接收进程发送信息
      2. 双向通信链路
  • 信箱通信
    • 信箱结构:由信箱头和信箱体组成
    • 信箱的类型:
      • 私用信箱:进程创建,拥有者可以读信息,其他用户只能发送到该信箱
      • 公用信箱:操作系统创建,提供给系统中核准进程使用
      • 共享信箱:进程创建,可指出共享进程的名字,拥有者和共享者都可以读信息

线程的基本概念

线程的引入

  • 线程的引入正是为了减少程序在并发执行时所付出的时空开销,提高OS的并发性
  • 进程的两个基本属性
    • 一个拥有资源的独立单位,可独立分配系统资源
    • 一个可独立调度和分派的基本单位,PCB
  • 程序并发执行所需付出的时空开销
    • 创建进程
    • 撤销进程
    • 进程切换
  • 线程——作为调度和分派的基本单位
    • 进程是系统资源分配的单位,线程是处理器调度的单位
    • 线程表示进程的一个控制点,可以执行一系列的指令。通常,和应用程序的一个函数相对应
    • 进程分解为线程还可以有效利用多处理器和多核计算机

线程与进程的比较

  • 不同点
    • 调度的基本单位
    • 并发性
  • 相似点
    • 状态:运行、阻塞、就绪
    • 线程具有一定的生命期
    • 进程可创建线程,一个线程可创建另一个子线程
    • 多个线程并发执行时仍然存在互斥与同步

线程的实现

  • 线程的实现方式
    • 内核支持线程KST
    • 用户级线程ULT
    • 组合方式
  • 多线程OS中的进程属性
    • 进程是一个可拥有资源的基本单位
    • 多个线程可并发执行
    • 进程已不是可执行的实体
  • 线程的状态和线程控制块
    • 线程运行的三个状态
      • 执行状态
      • 就绪状态
      • 阻塞状态
    • 线程控制块TCB

课后习题

在操作系统中为什么要引入进程概念?它会产生什么样的影响?

答:为了使程序在多道程序环境下能并发执行,并对并发执行的程序加以控制和描述,在操作系统中引入了进程概念。
影响: 使程序的并发执行得以实行。

试说明PCB 的作用,为什么说PCB 是进程存在的惟一标志?

答:PCB 是进程实体的一部分,是操作系统中最重要的记录型数据结构。作用是使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位,成为能与其它进程并发执行的进程。OS是根据PCB对并发执行的进程进行控制和管理的。

为什么要在OS 中引入线程?

答:在操作系统中引入线程,则是为了减少程序在并发执行时所付出的时空开销,使OS具有更好的并发性,提高CPU的利用率。进程是分配资源的基本单位,而线程则是系统调度的基本单位。

试从调度性,并发性,拥有资源及系统开销方面对进程和线程进行比较。

答:
(1)调度性。线程在OS 中作为调度和分派的基本单位,进程只作为资源拥有的基本单位。
(2)并发性。进程可以并发执行,一个进程的多个线程也可并发执行。
(3)拥有资源。进程始终是拥有资源的基本单位,线程只拥有运行时必不可少的资源,本
身基本不拥有系统资源,但可以访问隶属进程的资源。
(4)系统开销。操作系统在创建、撤消和切换进程时付出的开销显著大于线程。

简答题

1、前趋图与程序执行
(1)前趋图与程序执行
(一)前趋图
描述:前一个做完,才到后一个做、禁止循环

(1)顺序执行
描述:一个跟一个
特征:顺序、封闭(独占资源)、可再现

(3)并发执行
描述:互不依赖才能并发执行
特征:间断、失去封闭、不可再现

2、进程的描述
(1)进程的定义和特征
进程实体:程序段、相关的数据段和PCB
定义:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
特征:动态、并发、独立、异步

(2)进程的基本状态及转换
进程的三基态:就绪(只欠CPU)、执行、阻塞(因故无法继续执行)
三态转换:如图
新增两态:创建状态、终止状态
五态转换:如图

(3)挂起操作和进程状态的转换
挂起原因:终端用户需要、父进程请求、负荷调节、操作系统需要
引入挂起后的三态转换:如图
引入挂起后的五态转换:如图

(4)进程管理中的数据结构
用于管理控制的数据结构:每个资源、进程都有一个数据结构用于表征实体——资源信息表、进程信息表,包括:标识、描述、状态等和一批指针,通过指针能够链接成队列,便于查找
分类:内存表、设备表、文件表、进程表
PCB的作用:作为独立运行基本单位的标识、能实现间断运行、提供进程管理所需的信息、实现与其他进程的同步与通信
PCB的信息:进程标识符(内外部)、处理机状态、进程调度信息、进程控制信息
PCB组织方式:线性方式、链接方式、索引方式

3、进程控制
(1)操作系统内核
描述:常驻内存的模块
目的:保护软件、提高OS运行效率
系统态、管态、内核态:高特权、访问所有寄存器.存储区、传统OS都在系统态运行
用户态、目态:低特权、执行指定指令.访问指定寄存器和存储区
支撑功能:中断处理、时钟管理、原语操作
资源管理功能:进程管理、存储器管理、设备管理

(2)进程的创建
层次结构:UNIX有父子关系,Windows只有控制与被控制关系
进程图:描述家庭关系的图
引起创建进程的事件:用户登录、作业调度、提供服务(譬如打印)、应用请求
进程的创建:申请空白PCB、分配物理.逻辑资源、初始化PCB、如果能插入就绪,就插

(3)进程的终止
引起进程终止的事件:正常结束、异常结束、外界干预
进程的终止过程:根据标识符、终止执行.立即调度、子孙终止、资源归还、移出队列

(4)进程的阻塞与唤醒
引起进程阻塞和唤醒的事件:向系统请求共享资源失败、等待某操作完成、新数据尚未到达、等待新任务到达
进行阻塞过程:发生上述的某事件,就进入block过程,主动将状态改为阻塞,PCB插入阻塞队列(分类插入),处理机分配给另一就绪进程,切换,并保留被阻塞进程的处理机状态
进程唤醒过程:由释放资源的进程调用wakeup原语,即移出阻塞队列,合作/相关的进程中安排wakeup

(5)进程的挂起与激活
进程的挂起:活动→静止,进程正在执行,就转向调度程序重新调度
进程的激活过程:从外存调入active原语到内存,检查进程现行状态,静止→活动
抢占调度策略:静止就绪进程→就绪队列,比较当前进程优先度,有机会立即剥夺当前进程运行

4、进程同步
描述:能够并发、改善利用率、提高吞吐量、但使系统复杂
(1)进程同步的基本概念
制约关系:间接相互制约关系、直接相互制约关系
间接相互制约关系:互斥共享
直接相互制约关系:合作共享,异步性要做好
临界资源:生产者-消费者问题、
临界区、:进入区、临界区、退出区、剩余区
同步机制应遵循的规则:空闲让进、忙则等待、有限等待、让权等待

(2)硬件同步机制
关中断:缺点多:滥用关中断.造成严重后果、关中断时间过长、不适用于多CPU系统(因为一个处理器关中断并不能防止进程在其他处理器上执行相同的临界段代码)
Test-and-Set:不断测试lock,如果是FALSE,就进入临界区,并lock == TRUE;否则测试到TS(s) == TRUE
Swap指令:一直等,直到key == TRUE
但以上都不符合“让权等待”原则

(3)信号量机制
整形信号量:S≤0,就一直等,直到释放互斥资源
记录型信号量:整形信号量不符合“让权等待”原则。如果有资源,就分配,如果无,就插入阻塞队列;释放资源,如果有等待,就激活
AND型信号量:一口气全分配
信号量集:有多个信号量(S信号量,至少要t个,每次分配d个)

(4)信号量的应用
利用信号量实现进程互斥:mutex = ( -1, 0, 1)= (无,一临一阻队, 一临一信队)
利用信号量实现前趋关系:需要的信号量被占用了,就这样实现

(5)管程机制
描述:为解决信号量机制分散、容易死锁的问题,发明新同步工具——管程
定义:定义一个数据结构和能为并发进程所执行(在该数据结构上)的一组操作,这组操作能同步进程和改变管程中的数据
组成:管程名称、数据结构的说明、对数据结构进行操作的过程、初始化的语句
特性:模块化、抽象数据类型、信息掩蔽
管程与进程不同:都有数据结构,一个公.一个私、管程操作同步.初始化.进程顺序执行、管程为解决互斥资源.进程实现并发性、进程调用管程.进程主动.管程被动、管程不能并发.进程能并发、管程是OS的一个资源管理模块.进程有动态性
条件变量:增加一个条件变量,万一发生意外,在管程中被挂起或被阻塞,下一个进程都可以继续执行

5、经典进程的同步问题
(1)生产者-消费者问题
记录型信号量解决:如果缓冲区空,而且能够获取信号量,就投放产品;如果缓冲区有产品,而且能够获取信号量,就消费
AND信号量解决:一口气全分配
管程解决:利用管程只有一个进程能够使用的属性

(2)哲学家进餐问题
记录型信号量解决:先拿左.后那右、先放左.后放右
解决死锁:最多4人取筷子、先检查.有左右筷子才能取、奇左右.偶右左
AND信号量解决:一口气全分配

(3)读者-写者问题
描述:可以多读一、一旦开始写.就不能读或写
记录型信号量解决:
读操作:等rmutex就是为了改readcount→无人读?看看是否在写.等wmutex→readcount++→自增完成.rmutex还你→读读读→等rmutex为了自减readcount→无人读?可以写了.还你wmutex
写操作:等wmutex.即无读无写→写完.还你wmutex
利用信号量集机制:
读:限制reader个数→如果mx是1.就读→最后释放一个reader个数
写:如果mx是1.并且读者数为0.就写→写完释放mx

6、进程通信
(1)进程通信类型
共享存储器系统:某些数据结构和共享存储区、管道通信系统、消息传递系统、C-S系统

(2)消息传递通信的实现方式
①直接消息传递系统
1)直接通信原语:对称寻址方式、非对称寻址方式
2)消息格式:较短的减少系统处理和存储的开销、较长可以方便
3)进程同步方式:发塞收塞(进程间紧密同步.无缓冲)、发通收塞(平常状态)、发通收通(发生某事件无法继续运行)、(无发塞收通)
4)通信链路:用“建立连接”原语建立通信链路.用完拆、用“发送命令”原语建立链路,还分单向和双向
②信箱通信(间接)
1)定义:是数据结构.分信箱头和信箱体
2)原语:创建和撤销. 发送和接收
3)类型:私用、公用(操作系统创建)、共享(进程创建)
4)进程之间的关系:一对一、多对一、一对多、多对多

(3)直接消息传递系统实例
消息缓冲队列通信机制中的数据结构:利用数据结构式消息缓冲区、在PCB增加有关通信的数据项
原语:设置发送区、申请PCB(B)的缓冲区i、复制到缓冲区、插入消息队列、移出消息队列、复制到接收区、释放缓冲区

7、线程的基本概念
描述:就是为了提高程序并发执行的程度
(1)线程的引入
进程的两个基本属性:进程是一个可拥有资源的独立单位、进程同时是一个可独立调度和分派的基本单位
进程并发执行所需的时空开销:创建进程、撤销进程、进程切换
线程——作为调度和分派的基本单位:线程轻装上阵

(2)线程与进程比较
调度的基本单位:线程是调度和分派的基本单位、跨进程,会切换进程
并发性:线程的合作.能够并发
拥有资源:有TCB.但只是必不可少、保证独立运行的资源
独立性:同一进程的不同线程共享进程的内存地址空间和资源
系统开销:因为轻装.所以减少开销、提升速度
支持多处理机系统:对多线程进程,多个线程可以分配到多个处理机上

(3)线程的状态和线程控制块
线程运行的三个状态:和进程一样
线程控制块TCB:标识符、一组寄存器、运行状态、优先级、线程专有存储区、信号屏蔽、堆栈指针
多线程OS中的进程属性:进程是可拥有资源的基本单位、多个线程可并发执行、进程已不是可执行的实体

8、线程的实现
(1)线程的实现方式
内核支持线程KLT:
优点:内核调度同一进程多个线程并行执行、一个线程阻塞.其他线程占有处理机、支持小数据结构和堆栈.切换较快开销小、内核本身采用多线程技术.提高系统执行速度和效率
用户级线程ULT:
优点:无需内核.节省模式切换的开销、调度算法进程专用、与OS无关.甚至可以在操作系统平台实现
缺点:一个线程阻塞.同进程的其他线程都会塞、只有一个CPU.只有一个线程能执行、按进程分配.不公平
组合方式:
多对一模型:优点:开销小、缺点:一塞进程全塞、只有一线程访问内核、多线程不能同时在多个处理机上运行
一对一模型:一个用户级线程映射到一个内核支持线程
多对多模型:一对一和多对一的结合

(2)线程的实现
内核支持线程的实现:创建线程、保存信息、调度和切换线程、撤销线程、回收资源
用户级线程的实现:
运行时系统:用于管理和控制线程的函数的集合,这些函数驻留用户空间.并作为用户级线程与内核之间的接口
内核控制线程:连接到LWP,连接到LWP的线程才能与内核通信

(3)线程的创建和终止
线程的创建:初始化线程、创建后返回线程标识符
线程的终止:终止线程用函数或系统调用终止操作.但有些线程被建立就会一直执行。大多数OS,线程被中止后并不立即释放所占资源,只有“其他线程”执行分离函数才会分离资源,才能被其他线程利用。虽然未释放的资源也可以被其他线程使用,但要有个“等待线程终止”的连接命令作保险.否则一直阻塞