操作系统复习

进程与线程

通道和中断技术出现,才有了并发。(通道可以使IO设备无需CPU即可运行,但是需要不断轮询。中断解决了轮询问题。

基础

进程:PCB进程控制块、程序段、数据段

进程组织:链接方式、索引方式 (一般是链接方式:就绪队列、阻塞队列

进程的控制:就绪、运行、阻塞

​ 调度:决策行为

​ 切换:执行行为

进程通信:因为一个进程不能直接访问另一个进程的地址空间

​ 共享存储:设置一个共享的空间

​ 管道通信:类似于缓存机制,没写满就不能读,没空不能写。

​ 消息传递:挂到对方的消息队列里

传统:进程是资源分配、调度的基本单位。

线程:处理机调度的单位 (TCB是线程控制块

进程:资源分配的单位 (统一进程的线程共享资源

线程:为了增加进程的并发度(有的进程可能需要同时做很多事(传统的进程是程序执行流的最小单位,现在是线程

多线程模型:多对一(并发度不高)、一对一(一个进程占用太多内核级线程,切换开销大)、多对多

调度

处理机调度:作业调度、内存调度、进程调度

调度算法的评价指标:CPU利用率、吞吐量、周转时间、等待时间、响应时间

​ 周转时间中有带权周转时间。代权周转和周转时间越短越好。

调度算法:先来先服务(短作业不利)、短作业优先(容易饥饿)、高响应比优先 (等待时间+预计运行时间)/预计运行时间 1+等待/运行

​ 以上三种算法不适用于交互式系统,适用于早期批处理系统。

调度算法:时间片轮转(不区分优先级)、优先级调度(可能导致饥饿)、多级反馈队列调度

同步、互斥

同步:A做完之后,B才能做

异步:A、B并发时独立的。

临界资源:一个时间段,只允许一个进程使用

临界区:一段互斥的执行程序。进程进入到临界区才可以使用临界资源

互斥访问原则:空闲让进、忙则等待、有限等待、让权等待

信号量机制:解决进程互斥与同步问题

信号量:一个变量,表示系统某种资源的数量

实现互斥:初值1、临界区之前P、临界区之后V

进程同步:初值0、前操作之后V、后操作之前P(这样可以实现前驱关系(如果要交替,则使用两个信号量

互斥同步使用:互斥在同步之后。(如果同步之前先加了锁,则生产者进不去,也就生产不了资源。

管程机制:

类似于class类,共享数据结构是类里面的变量,操作可以看做类里面的函数。

死锁:互斥、不剥夺、请求和保持、循环等待

预防死锁:破坏条件(互斥spooling、

避免死锁:防止系统进入不安全状态(银行家算法 → 安全序列

检测死锁:检测系统有无死锁发生

解除死锁:采取某种措施解除死锁(资源剥夺、进程撤销、进程回退

内存(页面)

代码程序运行:编译、链接、装入(装入内存)

链接方式:静态链接、装入时动态链接、运行时动态链接

装入:绝对装入、静态重定位、动态重定位

内存分配

连续分配:

​ 单一连续分配(只能有一道用户程序,独占整个内存的用户区)、

​ 固定分区分配(分区固定,会产生内部碎片)、

​ 动态分区分配(根据进程大小动态建立分区)

记录内存使用情况:空闲分区表(放入表、空闲分区回收)、空闲分区链(删除节点)——分配和回收的问题

内部碎片:分配给某进程的内存区域中,有些部分没有用上

外部碎片:内存中某些空闲分区太小而难以利用

四种动态分区分配算法:首次适应算法、最佳适应算法、最坏适应算法、邻近适应算法

非连续分配:

​ 基本分页存储管理

​ 基本分段存储管理

​ 段页式存储管理

内存空间分为许多相等的分区(分区、页框、页帧、内存块、物理块)

​ 每个页框有一个编号(页框号、内存块号、页帧号、物理块号)

用户进程的地址空间分为与页框大小相等的一个个区域(页、页面)

​ 每个页面一个编号(页号)

OS以页框为单位,给进程分配空间。页框与页一一对应。

逻辑地址→物理地址:

​ 计算页号、页偏移量:

​ 页号 = 逻辑地址 / 页面长度

​ 偏移量 = 逻辑地址 % 页面长度

​ 二进制表示:页面长度2的K次bit。 逻辑地址末尾K位表示偏移,前面的部分是页号。

​ 逻辑结构: image-20210630122632720

​ 页表: image-20210630122812137

​ 页表寄存器:存放 页表在内存中的起始地址F,页表长度M。

​ 页号二对应第三块内存块。因此直接取商就好。商就是页号。

image-20210630123301995

​ 越界中断:P>=M 页号在页表中不存在。

​ 缺页中断:页框已经分配给进程了,但是进程还没有装入这个页面。

文件、磁盘

文件的逻辑结构

​ 无结构:流式文件

​ 有结构:记录式文件。由一组相似记录组成,每条记录又由若干数据项组成。

​ 顺序文件、索引文件、索引顺序文件、多级索引顺序文件(100个记录为1组,每组平均查找50次)

目录结构

一个文件对应一个FCB,一个FCB就是一个目录项。多个FCB组成文件目录。

目录结构:单级目录、两级目录、多级目录、无环图目录

image-20210630143712984

​ 删除时,只是删除该用户的FCB,并且使共享计数器减一。 只有共享计数器为0时,才能删除文件。

文件的物理结构

磁盘中存储单元也被分块,与页面(内存块)大小相同。

分配方式:连续分配、链接分配、索引分配

image-20210630144328836

磁盘

一次读写时间:寻道时间、延迟时间

磁盘调度算法:先来先服务、最短寻找时间优先算法、扫描算法、循环扫描算法(快速到达起始端)

IO

IO设备:机械部件、电子部件

电子部件:IO控制器(CPU → IO控制器 → 设备的机械部件

IO控制器的两种期存器编址方式:内存影响、寄存器独立编址

IO控制方式:程序直接控制方式、中断驱动方式、DMA方式、通道控制方式

​ 程序直接控制方式:在IO的过程中,CPU需要不断轮询检查

​ 中断驱动方式:CPU可和IO并行 但是每个字传输需要经过CPU,这样的中断处理太消耗时间(每次只能读写一个字

​ DMA方式:数据传送单位由字变成块 数据直接从设备到内存,或内存到设备。不需要CPU传递。

​ 但如果读写多个离散存储的数据块,或者将数据分别写入到不同

​ 的区域内存时,CPU需要发出多次IO指令,进行多次中断处理。

​ 通道控制方式:通道是硬件,“弱鸡CPU”。 每次读写一组数据块。

image-20210701170220786

IO软件层次:用户层软件、设备独立性软件、设备驱动程序、中断处理程序、硬件

​ 用户层软件:用户使用库函数进行IO操作

​ 设备独立性软件:实现与设备的硬件无关的功能。

​ 1)向上层提供调用接口 2)设备保护 3)差错处理 4)设备的分配与回收 5)数据缓冲区管理

​ 6)建立逻辑设备到物理设备的映射、根据类型选择驱动(逻辑设备表LUT)

​ 设备驱动程序:对设备进行具体控制。

​ 库函数翻译、设置设备寄存器、检查设备状态

​ 中断处理程序:进行中断处理

​ 用户层软件通过systemcall请求设备独立性软件层的服务。

​ 设备独立性软件层根据LUT调用设备对应的驱动。

​ 驱动程序向IO控制器发出命令。

​ 等待IO完成的进程会被阻塞。因此需要进程切换。进程切换需要中断。

​ IO任务完成时,IO控制器发出中断信号。系统根据中断信号类型,找到相应的中断处理程序并执行。

image-20210701171249497

IO核心子系统

IO的软件层次中,除了用户层,其他的是IO系统。

image-20210701172042150

​ 用户层软件:假脱机技术(SPOOLing)

​ 设备独立性软件:IO调度(如:磁盘调度)、设备保护(UNIX中,设备被看做文件,有对应的FCB,判断用户是否有访问权限)

脱机:脱离主机控制,进行输入输出。

​ 磁盘:输出井、输入井

​ 内存:输入缓冲区、输出缓冲区(输入进程、输出进程分别模拟脱机输入的外围控制机

​ IO设备 ←→ 内存 ←→ 磁盘

​ SPOOLing技术可以把独占式设备改为共享设备。

IO设备的分配与回收

​ 设备控制表:DCT 每个设备一张,用于记录设备情况

​ 控制器控制表:COCT 每个设备控制器一张,OS根据COCT对控制器进行操作、管理。

​ 通道控制表:CHCT 每个通道一张,OS根据CHCT对通道进行操作、管理。

​ 系统设备表:SDT 记录了系统中全部设备的情况。

​ 设备分配步骤:

​ 根据设备名找SDT

​ 根据SDT,找DCT 分配设备给进行

​ 根据DCT,找COCT 分配控制器给进程

​ 根据COCT,找CHCT 分配通道给进程

缓冲区管理

​ 缓冲区充满后,才能把缓冲区的数据传出。

​ 单缓冲、双缓冲、循环缓冲、缓冲池(h,s)

image-20210701173925527

image-20210701173941399

posted @ 2021-07-01 18:52  zyzhang_3  阅读(163)  评论(0)    收藏  举报