首页 > 其他分享 >操作系统学习笔记-5.2设备独立性软件

操作系统学习笔记-5.2设备独立性软件

时间:2024-11-10 16:51:08浏览次数:3  
标签:控制 5.2 操作系统 系统 控制器 笔记 缓冲区 分配 设备

文章目录

假脱机技术

假脱机技术(Spooling)是一种用于管理输入/输出操作的技术,常用于缓解输入/输出设备与处理器之间速度差异的问题。本质上是一种队列管理技术,主要应用于打印作业、磁盘读写等场景。

1. 假脱机技术的基本概念

  • 定义:假脱机技术通过将输入/输出请求缓存在中间存储区域(如硬盘或内存)中,实现数据的排队处理,使得计算机的处理器不必等待输入/输出设备完成任务即可继续处理其他任务。

2. 工作原理

假脱机技术的工作过程包括以下几个步骤:

  1. 数据接收:应用程序将需要处理的数据发送给假脱机系统。
  2. 缓存存储:假脱机系统将数据临时存放在缓冲区中,通常在硬盘或内存中进行缓存。
  3. 资源调度:假脱机系统按照一定的调度策略将缓冲区中的数据传送给相应的输出设备(如打印机)。
  4. 输出设备处理:输出设备从缓冲区中读取数据并进行实际的输出操作(如打印文档)。
  5. 任务完成:输出任务完成后,假脱机系统将该任务从缓冲区中移除。
    在这里插入图片描述

4. 典型应用场景

  • 打印作业:在办公环境中,多个用户可以将文档发送至同一台打印机进行打印。打印机通过假脱机技术处理排队任务,确保每个任务按顺序打印。
    打印机一定是独占式设备,用spooling实现共享。在磁盘输出井重申请空闲缓冲区,申请空白的打印请i去表,将用户的大一请求填入表中,将表挂到假脱机的文件队列上。
  • 磁盘读写:假脱机技术可以用在磁盘 I/O 操作中,提升磁盘读写效率,使得处理器不必因等待磁盘操作而停滞。
  • 批处理系统:在批量数据处理系统中,假脱机技术可以用来暂存需要处理的数据,再按顺序处理。

设备的分配和回收

设备分配方式

  • 独占设备:一次只能被一个进程使用。例如,打印机在打印时只能由一个进程占用。
  • 共享设备:多个进程可以同时访问,如硬盘驱动器、网络接口等。
  • 虚拟设备:通过软件和硬件的协作,将一个物理设备虚拟化为多个逻辑设备,以支持并发访问。

SPOOLING技术将独占设备虚拟成共享设备。

安全分配模式和不安全分配模式

1. 安全分配模式

安全分配模式是指系统在分配资源时,能够保证当前和未来状态都不会进入死锁状态。此时,系统能找到至少一种资源分配顺序,使得每个进程都能顺利完成而不会因等待资源而陷入死锁。

2. 不安全分配模式

不安全分配模式是指系统在分配资源后,可能无法保证不进入死锁状态。即使系统在某个时间点没有死锁,未来的资源请求可能会使系统陷入死锁。

3. 安全与不安全模式的区别

特性安全分配模式不安全分配模式
死锁风险无死锁风险存在潜在死锁风险
安全序列存在不存在
资源分配条件系统分配资源前确保安全可能在分配后无法保证安全
实施策略使用如银行家算法等死锁预防策略需要更复杂的死锁检测和恢复机制

分配策略

  • 静态分配:在进程运行之前,设备就已经分配给进程,适合任务执行过程中一直需要使用设备的应用。例如,某些实时系统中会提前为关键任务分配设备。注意不会发生死锁。
  • 动态分配:在进程运行过程中,根据需要动态分配设备。提高了资源利用率,但需要更复杂的管理。
  • 按需分配:设备在被请求时分配,释放后其他进程才能使用。
1.3 分配方法
  • 直接分配:操作系统直接分配设备给请求的进程。
  • 队列分配:当多个进程请求同一设备时,使用队列来管理设备请求。例如,打印机使用打印队列来处理多个打印任务。
  • 资源分配图:使用图形结构管理资源分配和避免死锁,其中节点表示进程和设备,边表示资源请求和分配。

数据结构

设备控制表 (DCT)

设备控制表(Device Control Table,DCT)是操作系统用于管理和跟踪系统中所有硬件设备的信息结构。它保存了有关设备状态、当前使用情况和分配情况等关键信息,以便操作系统能够有效地控制和分配设备。每个设备都有一个或多个设备控制表,用于管理其状态和操作。

设备控制表的组成

设备控制表通常包含以下几个关键字段:

字段名称描述
设备标识符唯一标识设备的编号或名称。
设备状态设备的当前状态,如空闲、忙碌或故障。
分配信息记录设备是否被分配,分配给哪个进程或任务。
控制信息控制设备的操作信息,如设备控制寄存器的地址。
数据缓冲区用于临时存储设备输入/输出的数据。
I/O 请求队列等待使用设备的进程或任务的队列。
错误信息记录设备操作中的错误状态或错误代码。
设备驱动程序指针指向与设备相关的驱动程序,用于控制设备操作。

控制器控制表(COCT)

控制器控制表(Controller Control Table)是操作系统用于管理和跟踪计算机系统中硬件控制器(如磁盘控制器、网络控制器等)相关信息的数据结构。

控制器控制表的组成

控制器控制表通常包含以下字段:

字段名称描述
控制器标识符唯一标识硬件控制器的编号或名称。
设备列表由该控制器管理的设备列表(指向相关设备控制表的指针)。
控制器状态当前控制器的状态,如空闲、忙碌、错误等。
I/O 操作队列当前控制器正在处理或等待处理的 I/O 请求队列。
寄存器信息与控制器交互的寄存器地址或内存映射 I/O 信息。
当前操作控制器正在执行的具体任务描述,如读取、写入等。
错误标志和处理信息控制器错误状态的标志和错误处理机制。
驱动程序指针指向与控制器关联的设备驱动程序,用于控制具体的操作。

2. 控制器控制表的作用

  • 管理多设备:控制器控制表用于管理连接到同一控制器的多个设备,协调和调度它们的操作。
  • 简化 I/O 操作:通过控制器控制表,操作系统可以高效地调度和控制多个设备的输入/输出操作。
  • 错误检测与恢复:通过记录和监控控制器状态及错误标志,操作系统能够识别并处理硬件故障。
  • 资源分配:提供当前控制器的状态和分配情况,帮助操作系统合理分配和使用控制器资源。

通道控制表(CHCT)

1. 通道控制表的组成

通道控制表通常包含以下字段:

字段名称描述
通道标识符唯一标识通道的编号或名称。
通道状态通道的当前状态,如空闲、忙碌、传输中或出现故障。
设备列表与该通道相关联的设备列表(指向设备控制表的指针)。
当前任务信息当前通道正在执行的任务信息,如读取或写入的任务描述。
传输缓冲区数据传输过程中使用的缓冲区信息。
命令链指针指向包含 I/O 命令的命令链表,用于管理多步骤的 I/O 操作。
优先级和调度信息表示通道的调度优先级,以便在多个 I/O 请求间进行调度。
错误信息和标志记录和标识与通道操作有关的错误状态和处理标志。

系统设备表(SDT)

系统设备表(System Device Table, SDT)是操作系统中用于管理和跟踪系统内所有设备的信息的数据结构。它帮助操作系统识别和调度设备,确保硬件资源的有效使用和分配。

系统设备表的组成

系统设备表通常包括以下信息:

字段名称描述
设备标识符唯一标识设备的编号或名称,方便操作系统识别设备。
设备类型指定设备的类型,如存储设备、输入设备、输出设备、网络设备等。
设备状态设备的当前状态,如空闲、忙碌、在线或离线。
设备地址设备的物理地址或 I/O 端口地址,便于系统与设备进行交互。
驱动程序指针指向与设备关联的驱动程序,操作系统通过该指针调用设备驱动程序。
分配信息当前设备的使用情况,如是否正在被分配、分配给哪个进程等。
错误状态记录设备操作中的错误信息,以便于故障诊断和处理。
系统设备表、设备控制表、通道控制表和控制器控制表对比
比较维度系统设备表 (SDT)设备控制表 (DCT)通道控制表 (CCT)控制器控制表 (CTL)
作用跟踪和管理系统中所有设备的全局信息记录单个设备的详细信息管理和调度与通道相关的设备和数据传输管理和控制设备控制器的信息及操作
信息字段设备标识符、设备类型、状态、地址、驱动程序指针等设备状态、错误信息、使用历史、I/O 操作细节通道标识符、设备列表、数据传输状态控制器标识符、连接的设备信息、操作模式
作用范围系统级别,概括整个系统内的设备管理单个设备的详细级别,提供设备特定信息多个设备通过同一通道时的管理控制器下的设备管理和控制
主要用途设备资源分配、状态跟踪、调度管理设备使用、操作细节和错误诊断数据传输路径管理,协调设备的使用控制器之间和设备的交互,提供低级操作控制
更新频率随设备的分配、释放或状态变化而更新设备操作、故障或状态变化时更新通道操作或传输任务变化时更新控制器执行任务或状态变化时更新
示例应用检查设备是否空闲、分配设备资源读取设备特定的错误状态或操作记录管理一条数据总线上传输的多个设备管理与磁盘控制器或网络适配器相关的操作
与其他结构的关系连接 PCB、DCT 等结构以跟踪设备的全局使用情况与系统设备表和进程 PCB 关联,用于具体设备操作管理与系统设备表结合,以协调设备访问与设备控制表结合以管理具体设备和控制器间的交互

总结

用于设备分配的数据结构有系统设备表(SDT)、设备控制表(DCT)、控制器控制表(COCT)和通道控制表(CHCT)。

  • 系统设备表 (SDT) 整个系统中只有一张,提供了所有设备的概述和资源管理信息。
  • 设备控制表 (DCT) 每个设备有一张,包含设备的详细信息,便于进行特定设备的操作和管理。
  • 通道控制表 (COCT) 每个控制器有一张,主要用于数据通道的调度和管理,适用于涉及多个设备的传输场景。
  • 控制器控制表 (CHTL) 系统为每个通道配置一张 CHCT,用于与具体控制器打交道,协调设备的低级操作和控制。

SDT中每个表目有一个指向 DCT的指针,DCT中的每个表目有一个指向 COCT的指针,COCT 中有一个 CHCT指针,CHCT中有一个 COCT指针。

设备分配

硬件资源以满足请求的流程。这个过程确保系统资源能够被合理使用,防止资源冲突,并提供必要的同步机制以实现资源共享。

设备分配过程的基本步骤

设备分配过程一般分为以下几个步骤:

步骤描述
1. 请求设备进程通过系统调用向操作系统请求使用某个设备。
2. 检查设备表操作系统查询系统设备表,检查该设备是否存在以及其当前状态(如是否可用或正在使用中)。
3. 检查权限操作系统验证进程是否有权使用该设备,以确保设备访问权限符合安全和权限要求。
4. 分配设备如果设备是空闲且权限验证通过,操作系统将设备分配给请求的进程,并更新设备状态为“忙碌”。
5. 更新信息更新系统设备表中的分配信息,记录设备已被分配给哪个进程以及其状态变更。
6. 通知进程操作系统将设备分配结果通知请求的进程,使其可以继续执行并访问该设备。
7. 使用设备进程使用分配到的设备进行 I/O 操作,完成后通过系统调用释放设备。
8. 设备释放操作系统收到设备释放请求后,将设备状态更新为“空闲”,从而允许其他进程请求使用该设备。

2. 设备分配的策略

设备分配可以采用不同的策略,以便提高系统的性能和资源利用率。常见的策略包括:

  • 固定分配:为每个进程预先分配特定的设备,该设备只供该进程使用。此方法确保了稳定的设备访问,但灵活性较低。
  • 动态分配:设备根据当前的请求情况进行动态分配。此方法提高了资源的利用率,但需要更复杂的管理和调度。
  • 优先级分配:根据进程的优先级,操作系统可以优先将设备分配给高优先级的进程,以保障关键任务的执行。

缓冲区管理

缓冲区在计算机系统中用于临时存储数据,尤其是输入和输出操作的过渡数据。不同类型的缓冲区机制有助于提高程序的性能和响应速度。非空不能写,非满不能读。

单缓冲 (Single Buffer)

单缓冲是最简单的缓冲区机制。只有一个缓冲区用于存储数据。在数据传输过程中,程序需要等待数据完全处理完后才能继续执行下一个操作。因为只有一个缓冲区,所以在读写操作中会发生阻塞。工作区满,缓冲区空,就是工作时间爱。

优缺点:

  • 优点:实现简单,开销较小。
  • 缺点:效率较低,因为每次操作都需要等待当前缓冲区的数据处理完。只能单向传输

双缓冲 (Double Buffer)

双缓冲使用两个缓冲区来进行数据存储。在一个缓冲区处理数据的同时,另一个缓冲区用于存储新的输入数据。当一个缓冲区完成处理时,另一个缓冲区的数据被立刻加载并处理,从而减少了等待时间,提高了效率。

优缺点:

  • 优点:避免了单缓冲的阻塞,提高了数据处理效率。
  • 缺点:需要更多的内存资源和管理开销。

循环缓冲 (Circular Buffer)

循环缓冲(又称环形缓冲区)使用一个固定大小的缓冲区,读取指针和写入指针在缓冲区中循环移动。当缓冲区满时,写入指针会回绕到缓冲区的开头。如果缓冲区的内容被读取,读取指针会前移。它适用于流式数据的处理,例如音频、视频数据流等。

优缺点:

  • 优点:有效利用固定大小的内存资源,避免了内存溢出和浪费。
  • 缺点:需要管理读写指针,且在缓冲区满或空时的处理需要特别注意。

缓冲池 (Buffer Pool)

缓冲池是一组缓冲区的集合,用于存储不同大小的缓冲区,可以根据需要动态分配。这种机制通常用于数据库或大规模数据处理场景中,可以根据数据大小和访问模式优化缓冲区的使用。

优缺点:

  • 优点:缓冲池能够高效管理多个缓冲区,适用于需要动态调整缓冲区大小和频繁读取写入数据的场景。
  • 缺点:管理复杂,可能带来较大的系统开销。

对比表

特性单缓冲双缓冲循环缓冲缓冲池
内存使用最小较大固定大小动态分配,根据需求
效率高,适合流式数据高,根据数据访问模式
实现复杂度简单较复杂中等
阻塞存在阻塞无阻塞无阻塞,循环读取无阻塞,动态管理
适用场景简单应用数据处理较快的应用流式数据处理(音视频)大规模数据处理,数据库

标签:控制,5.2,操作系统,系统,控制器,笔记,缓冲区,分配,设备
From: https://blog.csdn.net/zxjiaya/article/details/143642091

相关文章

  • %windir% 是一个环境变量,它指向当前操作系统中 Windows 安装目录的路径。它常用于批处
    %windir%是一个环境变量,它指向当前操作系统中Windows安装目录的路径。它常用于批处理文件、命令行或者脚本中,帮助系统或用户快速定位Windows系统文件夹的路径。类似的环境变量还有很多,它们通常用于在操作系统中快速访问重要的文件夹和目录,避免硬编码路径,从而提高脚本的可移植......
  • Python爬虫学习笔记
    目录基础篇:HTTP:HTTP请求:请求行:请求头:请求体:HTTP响应:状态行:响应头:响应体:Requests库:GET请求:POST请求:HTML:HTML网页结构:HTML标签:网页解析:RegularExpression:元字符:量词:正则表达式:Re解析:实战案例:BeautifulSoup:安装:成员属性/函数:实战案例:Xpath:XML:语法:进阶篇:Cookie处理:防盗链:代理(很刑):飞......
  • Linux 操作系统下 edquota 命令介绍和使用案例
    Linux操作系统下edquota命令介绍和使用案例edquota命令是Linux系统中用于管理用户或组的磁盘配额的工具。通过该命令,系统管理员可以设置和编辑用户或组在文件系统中使用的磁盘空间限制edquota命令简介功能:edquota允许管理员为指定用户或组设置磁盘配额,限制他们可以......
  • 轻松理解操作系统 - Linux的数据块是如何储存数据的?
    python入门C++入门Linux由于其开源、比较稳定等特点统治了服务端领域。也因此,学习Linux系统相关知识在后端开发等岗位中变得越来越重要,甚至可以说是必不可少的。因为它的广泛应用,所以在程序员的日常工作和面试中,它都是经常出现的。它的开源特性也让它适合于让对于计算......
  • 单调队列笔记
    单调队列笔记双端队列deque维护一个严格单调变化的组,可以称为一个单调队列单调队列因为可以直接对组的两端进行操作,所以可以有效的降低时间复杂度用单调队列来解决问题,一般是需要得到的某个范围内的最小值或最大值这里以一道经典的单调队列的题目为例:题目描述有一个长为\(......
  • FWT 学习笔记
    快速沃尔什变换模板题给定长度为\(2^n\)两个序列\(A,B\),设\[C_i=\sum_{j\oplusk=i}A_j\timesB_k\]分别当\(\oplus\)是or,and,xor时求出\(C\)。FWT,中文名称:快速沃尔什变换。因为已经有FFT和NTT基础,所以直接考虑构造FWT的变换。不失一般性,先考虑\(n=......
  • 【吴恩达机器学习笔记】10-正则化解决过拟合问题
    过拟合是机器学习中一个常见的问题,它发生在模型在训练数据上表现得很好,但在未见过的测试数据上表现不佳时。这通常是因为模型过于复杂,捕捉到了训练数据中的噪声和细节,而没有学习到数据的一般模式。过拟合的定义过拟合是指模型在训练数据上能够获得比其他假设更好的拟合,但在训......
  • 新手上云实践:在腾讯云CVM上使用Docker部署Leanote开源笔记工具
    新手上云实践:在腾讯云CVM上使用Docker部署Leanote开源笔记工具前言一、云服务器CVM介绍1.1CVM简介1.2CVM主要特点1.3CVM主要使用场景二、本次环境规划2.1本次实践简介2.2本次环境规划三、购买CVM云服务器3.1腾讯云双十一活动3.2购买云服务器CVM3.3检查CVM云服......
  • 平板 在实际生活中具体有什么用途?学习记笔记
    平板在实际生活中具体有什么用途?学习记笔记--------------我的ipad就是。。上课/开会的时候,打开Notability,开启新页面,点击录音,开始做笔记。——不过实际上用到录音的机会也就5次左右,笔记看的也不多。主打一个自欺欺人了属于是。哦,还有ipad远程到电脑,临时改一下代码。。。https:......
  • 通过C++跨平台的预编译宏来区分不同的操作系统:Win32/Win64/Unix/Linux/MacOS
    因为C++具有跨平台的特性,所以有些需求一套代码就多端使用,比如我最近在学习的OpenGLES。但是,不同平台还是具有一定差异性,所以我们首先得判断出是什么平台?比如iOS系统和Android系统。那么如何判断呢?我们接着往下看!要检查C或C代码中主机的操作系统,我们需要检查编......