操作系统第五章_04 设备的分配与回收

简介: 操作系统第五章_04 设备的分配与回收
🏫中北大学软件学院

@[Toc]

知识总览

在这里插入图片描述

设备分配时应考虑的因素

在这里插入图片描述
设备的固有属性可分为三种:独占设备、共享设备、虚拟设备。
独占设备——一个时段只能分配给一个进程(如打印机)
共享设备——可同时分配给多个进程使用(如磁盘),各进程往往是宏观上同时共享使用设备,而微观上交替使用。
虚拟设备——采用 SPOOLing 技术将独占设备改造成虚拟的共享设备,可同时分配给多个进程使用(如采用 SPOOLing 技术实现的共享打印机)

设备的分配算法:
先来先服务
优先级高者优先
短任务优先

从进程运行的安全性上考虑,设备分配有两种方式:
安全分配方式:为进程分配一个设备后就将进程阻塞,本次I/O完成后才将进程唤醒。(eg:考虑进程请求打印机打印输出的例子)一个时段内每个进程只能使用一个设备
优点:破坏了“请求和保持”条件,不会死锁
缺点:对于一个进程来说,CPU和I/O设备只能串行工作
不安全分配方式:进程发出I/O请求后,系统为其分配I/O设备,进程可继续执行,之后还可以发出新的I/O请求。只有某个I/O请求得不到满足时才将进程阻塞。
一个进程可以同时使用多个设备
优点:进程的计算任务和I/O任务可以并行处理,使进程迅速推进
缺点:有可能发生死锁(死锁避免、死锁的检测和解除)

静态分配和动态分配

静态分配:进程运行前为其分配全部所需资源,运行结束后归还资源,破坏了“请求和保持”条件,不会发生死锁
动态分配:进程运行过程中动态申请设备资源

设备分配管理中的数据结构

“设备、控制器、通道”之间的关系:
在这里插入图片描述
一个通道可控制多个设备控制器,每个设备控制器可控制多个设备。

设备控制表(DCT)

系统为每个设备配置一张DCT,用于记录设备情况

在这里插入图片描述

控制器控制表(COCT)

每个设备控制器都会对应一张COCT。操作系统根据COCT的信息对控制器进行操作和管理。

在这里插入图片描述

通道控制表(CHCT)

每个通道都会对应一张CHCT。操作系统根据CHCT的信息对通道进行操作和管理。
在这里插入图片描述

系统设备表(SDT)

记录了系统中全部设备的情况,每个设备对应一个表目。

在这里插入图片描述

设备分配的步骤

①根据进程请求的物理设备名查找SDT(注:物理设备名是进程请求分配设备时提供的参数)
②根据SDT找到DCT,若设备忙碌则将进程PCB挂到设备等待队列中,不忙碌则将设备分配给进程。
在这里插入图片描述
③根据DCT找到COCT,若控制器忙碌则将进程PCB挂到控制器等待队列中,不忙碌则将控制器分配给进程。
④根据COCT找到CHCT,若通道忙碌则将进程PCB挂到通道等待队列中,不忙碌则将通道分配给进程。
在这里插入图片描述

知识总览

在这里插入图片描述

相关文章
|
编解码 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)1
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)
849 1
|
2月前
|
监控 Linux 开发者
理解Linux操作系统内核中物理设备驱动(phy driver)的功能。
综合来看,物理设备驱动在Linux系统中的作用是至关重要的,它通过与硬件设备的紧密配合,为上层应用提供稳定可靠的通信基础设施。开发一款优秀的物理设备驱动需要开发者具备深厚的硬件知识、熟练的编程技能以及对Linux内核架构的深入理解,以确保驱动程序能在不同的硬件平台和网络条件下都能提供最优的性能。
103 0
|
编解码 开发工具 Android开发
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
Android获取设备各项信息(设备id、ip地址、设备名称、运行商、品牌、型号、分辨率、处理器、国家码、系统语言、网络类型、oaid、android版本、操作系统版本、mac地址、应用程序签名..)2
769 2
|
存储 缓存 算法
OS—设备独立性软件
OS—设备独立性软件
344 0
|
传感器 物联网 Linux
物联网设备的操作系统之争:Linux vs RTOS
【6月更文挑战第4天】在遥远的数码星球,物联网城中的Linux先生与RTOS小姐展开激烈角逐,分别在操作系统领域各显神通。Linux先生以其开源、兼容性强、功能丰富占据服务器、桌面及嵌入式设备市场,适合处理复杂任务和需要强大计算能力的设备。而RTOS小姐以实时性、高效响应和低资源占用见长,适用于资源有限、强调实时性的物联网设备。设备制造商在两者间抉择,引发物联网设备操作系统的选择大战。通过Python与FreeRTOS示例,展现了两者在智能家居和生产线控制等场景的应用。在物联网世界,Linux与RTOS共同推动设备智能化,为生活带来更多便捷。
632 3
|
存储 算法 程序员
操作系统(12)----页面分配策略
操作系统(12)----页面分配策略
415 1
【操作系统】实验九 写一个设备驱动程序
【操作系统】实验九 写一个设备驱动程序
323 1
|
存储 Linux Windows
【操作系统】实验十 设备驱动程序设计
【操作系统】实验十 设备驱动程序设计
258 0
|
Rust 安全 开发者
Rust在操作系统组件开发中的应用:设备驱动与系统服务
本文探讨了Rust在系统级开发中的潜力,特别是针对操作系统组件如设备驱动和系统服务的开发。我们将分析Rust为何适合这些任务,展示其在实际项目中的应用,并讨论其面临的挑战和未来的可能性。
|
存储 数据管理 调度
鸿蒙操作系统如何支持不同设备的适配和兼容性?
鸿蒙操作系统如何支持不同设备的适配和兼容性?
1512 2

热门文章

最新文章

推荐镜像

更多