操作系统学习笔记

本文概述了操作系统的基础知识,包括其作为资源管理者的角色、并发与并行的概念、进程的创建与销毁、线程的区别与同步、处理机调度算法以及内存和文件管理策略。还详细讨论了虚拟内存、中断处理、进程通信以及I/O管理中的缓冲技术。内容涵盖了从进程控制块到磁盘调度算法等多个方面。

声明:

本文基于平台点击量较高的几个笔记,王道考研课件以及本校老师的讲解与大黑书相结合而成。

本文将按照书上的结构分为:

1.导论        2.进程管理        3.内存管理        4.文件管理        5.I/O管理

在开始之前,先介绍如下概念:

文件:对 I/O 设备的抽象;

虚拟内存:程序存储器的抽象;

进程:一个正在运行的程序的抽象;

虚拟机:它提供对整个计算机的抽象,包括操作系统、处理器和程序。

多道程序:多道程序设计(Multiprogramming)是一种操作系统的特性,它允许多个程序同时存在于计算机系统中,并共享计算机的资源。

并发:在同一时间段内,有多个任务在交替执行

并行:在同一时间段内,有多个任务同时执行

1.导论

1.1概论

1.1.1操作系统是什么?

操作系统是一组有效控制和管理计算机系统的硬件和软件资源、合理地组织计算机工作流程以及方便用户 的程序集合。——很多中文书的描述
用户通过 命令接口,系统调用 来使用操作系统

1.1.2操作系统的基本特征有哪些?

1.并发        2.共享        3.虚拟        4.异步

1.1.3操作系统的类型包括哪些?

操作系统的类型
手工操作操作系统

优点

没有优点

缺点

速度慢,CPU利用不充分

批处理操作系统无优点没有人机交互
分时操作系统用户请求被及时响应,多个用户可以同时使用一台计算机不能优先处理一些紧急任务
实时操作系统能够极快的解决错误

 1.1.4CPU有哪两种状态?

1.用户态        2.内核态

1.1.5中断是什么?有哪些类型?简述中断处理的过程?

中断:CPU对系统中发生的异步事件的响应

类型:按中断方式划分:1.强迫中断        2.自愿中断                

           按功能划分:1.机器故障中断        2.I/O中断        3.外部中断        4.程序性中断       

                                 5.访管中断

中断处理的过程:

不同的中断信号,需要用不同的中断处理程序来处理。当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。在中断相关操作中,保存被中断的断点/PC里面的内容是由硬件自动完成的。

用户态→核心态”是通过中断实现的,并且中断是唯一途径。“核心态→用户态”的切换是通过执行一个特权指令,将程序状态字( PSW)的标志位设置为 “用户态”。

1.2操作系统的结构

1.2.1操作系统的结构

操作系统的结构
优点缺点
简单结构
分层结构(层次化结构)分层结构是一种将操作系统功能划分为多个层次的组织方式。每个层次负责特定的功能,层与层之间通过接口进行通信。易于调试和验证
易扩充和易维护
仅可调用相邻层
效率低,不可跨层调用
模块化可以将复杂的系统分解为独立的、可重用的模块。每个模块负责特定的功能,且模块之间通过定义好的接口进行通信,易于维护,逻辑清晰
各模块之间直接调用
难以调式和验证
大内核内核是指将所有的核心操作系统功能集中在一个单一的内核中。性能高,内核个功能直接调用复杂,难以维护,一个功能坏全部瘫痪(可靠性低)
微内核微内核结构将操作系统的核心功能分为不同的模块,并通过最小化的内核提供基本的服务。功能少,易于维护
某个出错不会导致整个崩溃
性能低,需要频繁切换状态
外核外内核结构将操作系统内核的功能最小化,提供的服务仅限于硬件抽象,如内存管理和进程间通信。应用程序可直接访问底层硬件和资源更灵活使用硬件资源
减少资源的映射层提升效率
使系统更加复杂
降低系统的一致性
混合系统

1.2.2虚拟机

d422d51076564a0b9442972492ce04bd.png

2.进程管理

2.1进程

2.1.0并发并行的概念,特点及好处

并发:在同一时间段内,有多个任务在交替执行

并行:在同一时间段内,有多个任务同时执行

特点和带来的好处:

  • 并发的特点是多个任务可以同时进行,通过时间片轮转或者优先级调度等方式实现任务的并发执行。它可以提高系统的资源利用率,充分利用计算机系统的处理能力,优化任务的执行顺序,减少用户等待时间,提高系统的并发性和响应性。
  • 并行的特点是多个任务可以同时在多个处理器或计算单元上执行,同时进行计算和求解。它可以加速整体计算过程,提高计算的速度和效率,特别适用于需要大量计算和处理的任务,如科学计算、图像处理和数据分析等领域。
  • 并发和并行的好处包括提高系统的性能和效率,加快任务的执行速度,解决高负载和密集计算需求,提高用户体验和响应性,实现资源的合理分配和利用,提高系统的可扩展性和可靠性。

需要注意的是,并发和并行并不完全等同,它们解决了不同的问题和需求。并发注重任务的协调和资源利用率,而并行注重任务的同时执行和计算速度。在实际应用中,可以根据任务的特性和系统的需求选择并发和并行的模型或策略,以获得最佳的性能和效果。

2.1.1进程的基本概念

1)顺序执行的特征:

1.顺序性        2.封闭性        3.可再现性

并发执行的特征:

1.间断性:

        程序共享系统的资源,以及为完成同一个任务共同合作,并发执行的程序之间相互制约,(不是运行完一个在运行另一个)

2.非封闭性:

        各程序共享系统资源,资源的状态由各程序所决定。

3.不可再现性:

        为了提高效率于是采用间断执行的手段,但是间断执行就导致数据不能封闭,因为数据可能会被其他程序更改,于是结果不可再现。不可再现性是要避免的。

2)进程的构成:

PCB(进程控制块)PCB是进程存在的唯一标识

所谓创建进程,实质上是创建进程实体中的PCB;而撤销进程,实质上是撤销进程实体中的PCB.

与进程共存亡,用于记录进程的基本情况和活动过程,一般常驻内存

序段

据段

3) 进程的特性:

1.动态性        2.并发性        3.独立性        4.异步性

进程的创建和销毁:

进程创建的过程:

  1. 分配空间:操作系统为新进程分配必要的资源,包括内存空间、文件描述符、数据结构等。这些资源的分配通常在操作系统内部的进程表中进行记录。

  2. 设置上下文:操作系统为新进程设置执行环境,包括设置程序计数器、栈指针、寄存器和其他执行状态的属性。这些属性的设置可以使进程开始执行指定的程序代码。

  3. 加载代码:操作系统将新进程的执行代码从磁盘或其他存储介质加载到内存中。这可能涉及到读取可执行文件、动态链接库和其他相关资源。

  4. 初始化状态:操作系统对新进程进行初始化,设置进程的初始状态,如就绪态或阻塞态。进程初始化后,它可以等待操作系统的调度和开始执行。

  5. 用户空间初始化:在某些操作系统中,新进程还需要进行用户空间的初始化,包括创建堆和栈,初始化全局变量和数据结构等。

进程撤销的过程:

  1. 释放资源:当需要撤销一个进程时,操作系统首先释放该进程所占用的资源,包括内存空间、文件描述符、打开的文件、I/O缓冲区和其他系统资源。

  2. 终止执行:操作系统发送一个终止信号给被撤销的进程,通知它结束执行。进程可以处理这个信号,并进行一些清理和保存工作,然后正常地退出。

  3. 回收资源:操作系统回收被撤销进程所占用的资源,并更新对应的进程表和其他系统数据结构。这样,被撤销的进程所占用的资源可以被重新分配给其他进程使用。

2.1.2进程的控制及转换

fe6d14f7925e416d9f7f8f6a4fe982c9.png

另外还有两种状态,他们并不是最基本的状态:

创建态:进程正在创建,操作系统为进程分配资源,初始化PCB

终止态:进程正在被撤销,系统收回分配资源,撤销PCB

770641d9ad6b49d2a771e3471a8537bc.png

454558d088864e3d9f03a58850600321.png

2.1.3进程通信

为什么进程通信需要有操作系统的支持?

进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间。

1)共享内存

设置一个共享内存区域,并映射到进程的虚拟地址空间,要互斥的访问共享空间,有基于数据结构(低级)的共享基于存储区的共享(高级)

2)消息传递

        传递结构化的消息,系统提供“发送/接受原语”

两种通信方式:直接通信,间接通信

直接通信方式:将消息直接挂到接受进程的消息队列里

间接通信方式:将消息先发送到中间体

3)管道通信

设置一个管道,其实就是一个内存缓冲区,一个管道只能实现半双工通信,实现双向同时通信要建立两个管道,各各进程之间要互斥访问。

一个管道只能有一个读进程,但能有多个写进程。当管道为空时,读进程阻塞;当管道不为空时,写进程阻塞。

共享内存

1.基于数据结构的共享

2.基于存储空间的共享

消息传递

1.直接通信的方式:消息直接挂到接收进程的消息缓冲队列上

2.间接通信的方式:消息要先发送到中间实体(信箱)当中

                                (所以也叫信箱通信方式)

管道通信

本质是在内存中开辟一个大小固定的一个缓冲区

单向传输;没写满不允许读,没读空不允许写。     

2.2线程

2.2.0线程和进程的区别

1.根本区别:进程是操作系统进行资源分配的最小单元,线程是操作系统进行运算调度的最小单元。

2.从属关系不同:进程中包含了线程,线程属于进程。

3.开销不同:进程的创建、销毁和切换的开销都远大于线程。

4.拥有资源不同:每个进程有自己的内存和资源,一个进程中的线程会共享这些内存和资源。

5.控制和影响能力不同:子进程无法影响父进程,而子线程可以影响父线程,如果主线程发生异常会影响其所在进程和子线程。

6.CPU利用率不同:进程的CPU利用率较低,因为上下文切换开销较大,而线程的CPU的利用率较高,上下文的切换速度快。

7.操纵者不同:进程的操纵者一般是操作系统,线程的操纵者一般是编程人员。

2.2.1线程的概念

1)引入线程后,线程成为了程序执行流的最小单位

2.2.2线程的分类

1)用户级线程

1.线程的管理工作由准来完成?

2.线程切换是否需要CPU变态?

3.操作系统是否能意识到用户级线程的存在?

4.这种线程的实现方式有什么优点和缺点?

1.用户级线程由应用程序通过线程库实现,所有的线程管理工作都由应用程序负责(包括线程切换)。

2.用户级线程中,线程切换可以在用户态下即可完成,无需操作系统干预

3.在用户看来,是有多个线程。但是在操作系统内核看来,并意识不到线程的存在。“用户级线程”就是“从用户视角看能看到的线程”。

4.优缺点

优点:用户级线程的切换在用户空问即可完成,不需要切换到核心态,线程管理的系统开销小,效率高。

缺点:当一个用户级线程被阻塞后,整个进程都会被阻塞,并发度不高。多个线程不可在多核处理机上并行运行。

2)内核级线程

1.内核级线程的管理工作由操作系统内核完成。

2.线程调度、切换等工作都由内核负贵,因此内核级线程的切换必然需要在核心态下才能完成。

3.操作系统会为每个内核级线程建立相应的TCB(Thread Control Block,线程控制块),通过TCB对线程进行管理。“内核级线程”就是“从操作系统内核视角看能看到的线程”。

操作系统只“看得见”内核级线程,因此只有内核级线程才是处理机分配的单位

4.优缺点

优点:当个线程被阻塞后,别的线程还可以继续执行,并发能力强。多线程可在多核处理机上并行执行。

缺点:一个用户进程会占用多个内核级线程,线程切换由操作系统内核完成,需要切换到核心态,因此线程管理的成本高开销大

2.2.3多线程模型

dabe33645b564698961b0e1638c13640.png

f16d6e3af5f944ecbeaa84c35598926e.png

2.3处理机调度

2.3.1调度的分类

1)高级调度(作业调度):从后备队列中调入一个作业进入就绪队列中。

2)中级调度(内存调度):中级调度实际上是外存与内存之间的调度。把进程从外存调入。

3)低级调度(进程调度):从就绪队列中选取一个进程,然后使其由就绪态变为执行态。

1f79b100c97a4da8b88a41936a9114c2.png

2.3.2调度算法:FCFS  ||  SJF  ||  HRRN  ||  RR ||  priority

9b25d332a36f4caaab047a1c3b29a592.png

  1)先来先服务 FCFS

5dbb600f6eed450eb00451ab8feeb449.png

2) 短作业优先 SJF

03228d3ad8b74b33aeb852ef8e601b61.png

 3)高响应比优先 HRRN

193d4a4daf1446a7a53910c2e03e0dce.png

4)时间片轮转调度 RR

ad4a3d997d394e68b923706ab443d26e.png

5)优先级调度算法

6af560457e3c4ac8afdd8e8e49afd937.png

6.多级反馈队列调度算法

770c1e50795445ac990217663c991aaa.png

2.4同步和互斥

2.4.1同步与互斥的概念:

同步:直接制约        互斥:间接制约

1)同步:

同步:

进程间共同完成一项任务时直接发生相互作用的关系

进程同步的目的

1)按照一定的规则共享系统资源;2)对多个相关进程在执行次序上进行协调,是程序具有可再现性。

2)互斥:

互斥:并发的多个进程由于竞争同一资源而产生的相互排斥的关系

3)两个进程同时进入临界区,同步机制应遵循以下准则:

  • 空闲让进。临界区空闲时,可以允许一个请求进入临界区的进程立即进入临界区。
  • 忙则等待。当已有进程进入临界区时,其他试图进入临界区的进程必须等待。
  • 有限等待。对请求访问的进程,应保证能在有限时间内进入临界区。
  • 让权等待。当进程不能进入临界区时,应立即释放处理器,防止进程忙等待

2.5信号量机制

信号量被广泛用于同步,互斥和描述前驱关系

2.6死锁

2.6.1死锁产生的条件

互斥条件:资源是互斥使用的

不剥夺条件:进程只能由自己释放

请求和保持:已获得资源同时,还在请求另外一个资源

循环等待:存在一个循环等待链

2.6.2死锁的预防

fd9f59cf9ecc44f69f89486c30e2fe51.png

2.6.3死锁预防的算法

3.内存管理

3.1概念

程序执行时会进行如下步骤:

1.编译:把你写的代码文件生成目标模块,也就是机器语言

2.连接:把你写的各种文件给连接起来,即由目标模块生成为装入模块,也就是为装入内存做准备

3.装入:这个很简单了,就是将装入模块装入内存,形成物理地址

接下来我们将详细介绍程序的连接和装入

3.1.1连接的方式

1.静态连接:把所有文件在装入前,一股脑先全部连接起来(造成内存资源的浪费)

2.装入时动态连接:采用边装入边连接。(优点:便于修改和更新,便于实现对目标模块的共享。        缺点:同上)

3.运行时动态连接:需要运行目标模块才连接装入。(优点:装入速度快,还可以节省大量的内存空间。)

3.1.2装入的方式

2effd6a2d25446ed822365da79102f3d.png

3.2内存管理策略

内部碎片:就是已经被分配出去(能明确指出属于哪个进程)却不能被利用的内存空间

外部碎片:指的是还没有被分配出去(不属于任何进程),但由于太小了无法分配给申请内存空间的新进程的内存空闲区域。

3.2.1连续分配

1)单一连续分配

这种分配方式下,内存被分成系统区和用户区。内存中只能有一道用户程序,用户程序独占整个用户空间。

优点:

1.实现简单,没有外部碎片(因为每次就给一个程序分配空间,当他运行完成,把空间释放,又还是一个完整的没有被分配的空间)

2.不一定需要内存保护

缺点:

一道程序在内存中,内存浪费严重(因为每次就一个程序在里面运行,会导致分配给他的空间有很多一部分他根本就用不上,因此会导致大量的内部碎片)

2)固定分区分配

为了能让多个程序运行,并且让他们在运行的时候不会相互干扰,所以把用户空间分成多个固定大小的分区,每一个分区只存入一个作业。

优点:

实现简单,没有外部碎片

缺点:

当用户程序太大的时候,会降低性能,并且会产生内部碎片

3)动态分区分配

会根据进程的大小来进行动态的分区分配,不预先划分内存分区,只是在进程装入内存的时候再建立分区。

*动态分配算法:

4f4c83257342401e932e6ee981287340.png

3.2.2非连续分配

1)分页管理(普通表,快表,二级表)

普通表:

d299621d1dc046309719189b0beb8bf9.png

地址=页地址+偏移量

快表:

快表,又称联想寄存器(TLB),是一种访问速度比内存快很多的高速缓冲存储器,用来存放当前访问的若干页表项,以加速地址变换的过程。与此对应,内存中的页表常称为慢表(这个是局部性原理的应用!!!

7a403c9d2e794d239a615d4058db3755.png

 两级表:

两级页表的出现主要是为了解决单级页表的问题。那么单级页表有什么问题呢?

问题一:页表必须连续存放,因此当页表很大时,需要占用很多个连续的页框。
问题二:没有必要让整个页表常驻内存,因为进程在一段时间内可能只需要访问某几个特定的页面。

解决方法:

1.

80ddf76077f141e2ae0ae921f4eec90b.png

2.38ffd5e9ca624a318b3ebc6847bcba7e.png

2)分段管理

地址=段号+偏移量

c027a36aecaa4e13b81625f0007b51e9.png

3)段页式管理

19823a1ce63d43418a8318c4a8f5ab35.png

 访问一个逻辑地址需要访存三次:

第一次访问段,第二次访问页,第三次访问表。

3.3虚拟内存管理

思想:基于局部性原理,在程序装入时,可以将程序中很快会用到的部分装入内存,暂时用不到的部分留在外存,就可以让程序开始执行。在程序执行过程中,当所访问的信息不在内存时,由操作系统负责将所需信息从外存调入内存,然后继续执行程序。若内存空问不够,由操作系统负责将内存中暂时用不到的信息换出到外存。在操作系统的管理下,在用户看来似乎有一个比实际内存大得多的内存,这就是虚拟内存。

3.3.1请求分页管理方式

一.页表机制

b5587a8c033b4babb83627fe3f1d4f81.png

添加了:

  • 状态位:是否已调入内存
  • 访问字段:记录最近被访问的时间
  • 修改位:页面调入内存后是否被修改
  • 外存地址:页面在外存中存放的位置

二.页面置换算法

d90dc64b7a234b4dad8cd5bb6c86c923.png

8d87ba74f4604306a38c0319a6db9029.png

3.3.2页面分配策略 

①驻留集:只请求分页存储管理中给进程分配的物理块的集合。在采用了虚拟存储技术的系统中,驻留集的大小一般小于进程的总大小。

太小,会导致缺页频繁,系统要花大量时间去处理缺页

太大,则会导致多道程序并发度下降(并发度下降CPU休息就多了)

②固定分配:操作系统为每个进程分配一组固定数目的物理块,在进程运行过程中,物理块大小不变。

③可变分配:先为每个进程分配一定数目的物理块,在进程运行期间,可根据情况做适当的增加或减少。

④局部置换:发生缺页时准选进程自己的物理块进行置换。

⑤全局置换:可以将操作系统保留的空闲物理块分配给缺页进程,也可以将别的进程持有的物理块置换到外存,再分配给缺页进程。

⑥抖动现象:刚刚换出的页面马上又要换入内存,刚刚换入的页面马上又要换出外存,这种频繁的页面调度行为称为抖动。主要原因就是分配的物理块太少。但给的多了,会降低并发度,所以给多少就要研究了。(这里涉及工作集,自行百度了解一下即可)

固定分配VS可变分配:区别在于进程运行期间驻留集大小是否可变。

局部置换VS全局置换:区别在于发生缺页时是否只能从进程自己的页面中选择一个换出。

①固定分配局部置换:物理块在整个运行期间都不改变。若进程在运行中发生缺页,则只能从该进程在内存中的页面中选出一页换出,然后再调入需要的页面。这种策略的缺点是:很难在刚开始就确定应为每个进程分配多少个物理块才算合理。(采用这种策略的系统可以根据进程大小、优先级、或是根据程序员给出的参数来确定为一个进程分配的内存块数)

②可变分配全局置换:刚开始会为每个进程分配一定数量的物理块,操作系统会保持一个空闲物理块队列。岂某进程发生缺页时,从空闲物理块中取出一块分配给该进程;若已无空闲物理块,则可选择一个未锁定的页面换出外存,再将该物理块分配给缺页的进程。采用这种策略时,只要某进程发生缺页都将获得新的物理块,仅当空闲物理块用完时,系统才选择一个未锁定的页面调出。被选择调出的页可能是系统中任何一个进程中的页,因此这个被选中的进程拥有的物理块会减少,缺页率会增加。(只要缺页就加新的物理块,壕!!但会影响其他进程)

③可变分配局部置换:刚开始会为每个进程分配一定数量的物理块。当某进程发生缺页时,只允许从该进程自己的物理块中选出一个进行换出外存。如果进程在运行中频繁地缺页,系统会为该进程多分配几个物理块,直至该进程缺页率趋势适当程度:反之,如果进程在运行中缺页率特别低,则可适当减少分配给该进程的物理块。(根据发生的缺页率来动态增加或减少进程的物理块,像屌丝,有多少用多少!)

4.文件管理

36510fb6b0ed48c6bef231c1caa13d73.png

为了允许不同用户的文件具有相同的文件名,通常在文件系统中采用重名翻译

4.1磁盘

这里计算机组成原理学过加之内容也并不是很难,就讲几个算法。

先来先服务算法(FCFS)

算法思想:根据进程请求访问磁盘的先后顺序进行调度。

优点:公平;如果请求访问的磁道比较集中的话,算法性能还算可以

缺点:如果大量进程竞争使用磁盘,请求访问的磁道很分散,FCFS在性能上很差,寻道时间长

564fdd1d06d945eca3c11c2b0a58d82e.png

最短寻找时间优先(SSTF)

算法思想:优先处理的磁道是与当前磁头最近的磁道。可以保证每次寻道时间最短,但是不能保证总的寻道时间最短。(其实是贪心算法的思想,只是选择眼前最优,但是总体未必最优)

优点:寻道时间很短。

缺点:可能产生饥饿现象。

 b217f62af5bf4ff0bc9e7c34da0a2c7d.png

扫描算法/电梯算法(SCAN)

算法思想:磁头扫描到最边上才能往回移动。

优点:性能较好,平均寻道时间较短,不会产生饥饿现象。

缺点:有时候请求到不了磁盘两边,但是磁头要扫描到两边。对各磁道的响应不平均

 836972a0245c4e73a588d4e49ef2cf6d.png

LOOK调度算法(边移动边观察)

算法思想:如果移动方向上已经没有别的请求,就可以立即改变磁头的移动方向。

优点:比起SCAN算法来说,不需要每次都移动到最外侧或最内侧才改变磁头方向,使得寻道时间进一步缩短。

 e741a437926341f4a6f20543edb8b9a6.png

-LOOK调度算法

算法思想:解决C-SCAN问题,如果磁头移动方向上没有访问请求,则立即返回,并且磁头只需返回到有磁道访问请求的位置即可。

优点:进一步改进C-SCAN算法,使得寻道时间进一步缩短。

format,png

5.输入输出(I/O)管理

5.1概念

5.1.1组成及作用

3b841646547c45de8563422922f104c7.png

171e20c0b69442cd8e719ba2a32a420b.png

 5.2控制方式

447faaae4250468e967571f84bf67048.png

5.3设备独立性软件

一、高速缓存和缓冲区

Ⅰ、目的:缓解CPU与设备的速度矛盾、减少对CPU的中断频率、解决数据粒度不匹配的问题、提高CPU与/IO设备之间的并行性。

引入缓冲的目的:

1.缓和CPU与I/O设备间的速度不匹配的矛盾

2.减少对CPU的中断频率,放宽对CPU中断相对应时间的限制

3.解决基本数据单元大小(即数据粒度)不匹配的问题

4.提高CPU和I/O设备间的并行性

提高I/O性能的方案

1.异步I/O方式

2.DMA方式

3.缓冲技术

Ⅱ、实现方法

①单缓冲

假设某用户进程请求某种块设备读入若干块的数据。若采用单缓冲的策略,操作系统会在主存中为其分配一个缓冲区(若题目中没有特别说明,一个缓冲区的大小就是一个块)

注意:当缓冲区数据非空时,不能往缓冲区冲入数据,只能从缓冲区把数据传出;当缓冲区为空时,可以往缓冲区冲入数据,但必须把缓冲区充满以后,才能从缓冲区把数据传出。

处理一块数据平均使用的时间(常考)

①T>C(输入时间大于处理时间)

adbbfaf51a7af22ebc2ff7161c45eb3f.png

②T<C(输入时间小于处理时间)

format,png

结论:采用单缓冲策略,处理一块数据平均耗时Max(C,T)+M

②双缓冲

操作系统为其分配两个缓冲区

41f9c98d7a442f6913e0964861f5832c.png

处理一块数据平均使用时间

双缓冲题目巾,假设初始状态为:工作区空,其中·个缓冲区满,另·个缓冲区空。

结论:采用双缓冲策略,处理一个数据块的平均耗时为Max(T,C+M)

③循环缓冲

format,png

④缓冲池

缓冲池由系统中共用的缓冲区组成。这些缓冲区按使用状沉可以分为:空缓冲队列、装满输入数据的缓冲队列(输入队列)、装满输出数据的缓冲队列(输出队列)

另外,根据一·个缓冲区在实际运算巾扮演的功能不同,又设置了四种工作缓冲区:用于收容输入数据的工作缓冲区(hin)、用于提取输入数据的工作缓冲区(si)、用于收容输出数据的工作缓冲区(hout)、用于提取输出数据的工作缓冲区(sout)

a87933c2211646b0a2797383741a99bb.png

766e4697eb6cb088bad337f0ad717f73.png

三、高速缓冲和缓冲区的对比

42ff8894799ed56a70de5c145140df21.png

四、SPOOLing技术(假脱机技术)

SPOOLING 技术是一种虚拟设备技术,它可以把一台独占设备改造成为虚拟设备,在进程所需的
物理设备不存在或被占用的情况下,使用该设备。 SPOOLING 技术是对脱机输入,输出系统的模拟,又称为假脱机操作。
 SPOOLING 系统主要由三部分组成输入井和输出井输入缓冲区和输出缓冲区输入进程和输出进程

五、静态分配和动态分配

对独占型设备一般采用静态分配,即在作业级进行的分配,当一个作业运行之前由系统一次分配满足需要的全部设备,这些设备一直为该作业占用,直到作业撤消。这种分配不会出现死锁,但设备的利用效率较低。而共享设备一般采用的事动态分配。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艺成超爱牛肉爆大虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值