大数据分布式调度系统通天_操作系统-First

操作系统起手式

操作系统的历史

  • 第一阶段:无操作系统,计算机通过人工操作,一个用户独占一台计算机,CPU需要等待人工操作。
  • 第二阶段:批处理系统。无需等待人工操作,用户可以批量导入任务。出现了“多道程序设计”。
  • 第三阶段:分时系统。人机可以交互,可以做到及时调整程序;计算机多用户共享。

多道程序设计

定义:计算机内存中同时存放多个程序,在计算机的管理程序之下,程序可以相互穿插运行。

作用:早期的批处理系统只能一次处理一个任务,多道程序设计使得一次可以处理多个任务。

计算机的5大功能

  • 进程管理
  • 存储管理
  • 作业管理
  • 文件管理
  • 设备管理

操作系统概览

定义

操作系统是管理计算机硬件和软件资源的计算机程序。

为什么需要操作系统?

  1. 用户不能直接操作计算机硬件
  2. 计算机的种类繁多,用户需要统一的界面
  3. 操作系统的简易性可以使更多的用户操作计算机

作用

  1. 通过管理配置内存、决定资源供需顺序、控制输入输出设备等等。
  2. 提供用户和系统交互的操作界面。

操作系统的基本功能

  1. 用户无需面向硬件接口编程就可管理硬件资源,有处理器资源、存储器资源、IO设备资源、文件资源,比如IO设备管理软件,提供了读写接口
  2. 通过管理软件,实现了对计算机资源的抽象
  3. 提供了用户与计算机之间的接口

计算机的层次结构

464d6a5612c08daaf6a1681f5ea4491b.png

操作系统的特点

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

并发性

并行:两个或者多个事件可以在同一个时刻发生。

并发:两个或者多个事件可以在同一个时间间隔内发生。

共享性

操作系统中的资源可供多个并发的程序共同使用。如下图:主存被程序A和程序B共同使用

0d103e62e6720c329b843041fb0d2eb5.png

资源共享根据属性可以分为:互斥共享形式、同时访问形式。互斥共享形式,如果资源被程序A占用,其他程序若想使用,就只能等待。同时访问形式,某种资源在一段时间内可以并发地被多个程序访问,从宏观上来看,这种资源可以被同时访问。

虚拟性

表现为把一个物理实体转变为若干个逻辑实体。虚拟的技术主要分为时分复用技术、空分复用技术。

时分复用技术,资源在时间上进行复用,不同程序并发使用。多道程序分时地使用计算机资源,从而提高资源的利用率。包含了虚拟处理器技术、虚拟设备技术。虚拟处理器技术,借助多道程序设计技术,为每个程序建立进程,多个程序分时复用处理器。虚拟设备技术,将物理设备虚拟为多个逻辑设备,每个程序占用一个逻辑设备,多个程序通过逻辑设备并发访问。

空分复用技术,用来实现虚拟磁盘、虚拟内存,提高资源利用率和编程效率。包含了虚拟磁盘技术、虚拟内存技术。将物理的磁盘虚拟为逻辑磁盘,比如电脑的C、D、F等等。虚拟内存技术,在逻辑上扩大了程序的存储容量,从而使用比实际内存更大的容量。

异步性

在多道程序的环境下,允许多个程序并发执行。进程在使用资源时,可能需要等待或者放弃。进程的执行不是一气呵成的,而是以走走停停的形式推进的。由于我们不知道程序何时执行、何时暂停、何时执行完,从而导致了操作体统的异步性。

进程管理之进程实体

进程

系统进行资源分配和调度的基本单位。进程作为程序独立运行的载体,保障程序正常执行。使操作系统资源的利用率大幅提升。

进程的实体

在主存中,进程是一段连续存储的空间,称之为称之为进程控制块,PCB。

PCB的作用

  • 用来描述和控制进程运行的通用数据结构。
  • 记录进程当前的状态和控制进程运行的全部信息。
  • 使得进程是能够独立运行的基本单位

PCB的特点

由于PCB是操作系统进行调度经常会被读取的信息,因此PCB常驻内存,存放在系统专门开辟的PCB区域内。如图:PCB内部的结构

37c524bed2f29b28ec7f5597ec6d3a02.png

相关的概念

  • 标识符:唯一标记进程的符号,用来区别进程。
  • 状态:标记进程的状态。
  • 程序计数器:指向进程要执行的下一条指令的地址。
  • 内存指针:程序代码、进程数据相关的指针。
  • 上下文数据:进程执行时,处理器存储的数据。
  • IO状态信息:被进程IO操作所占用的文件列表。
  • 记账信息:记录进程使用处理处理器的时间,时钟数总和等等。

进程与线程

一个进程里面有一个线程或者多个线程,线程是操作系统运行调度的最小单位。也可说,操作系统对进程的调度,实际上是对线程的调度。一个进程可以并发多个线程,每个线程执行不同的任务。进程中的线程共享进程的资源。

如图:进程与线程的关系模型

e4cb4dd0b444684178bd08b6b7741088.png

如图:进程与线程不同属性对比

a7553ee2f0c01f82b605098b8c7b7bd3.png

进程管理之五状态模型

状态

就绪、阻塞、执行、创建、终止

就绪状态

当进程被分配到除了CPU以外的所有必要资源后,其他的资源都准备好,只差CPU资源的状态为就绪状态。在操作系统中,多个处于就绪状态的进程会排成一个队列,这个队列称之为就绪队列。图示:

c43fea9b47d2ef18d0ffa940d68feecf.png

执行状态

进程获得CPU,程序正在执行的状态,称之为执行状态。如果CPU是单核的(单处理机),在某个时刻只能有一个进程处于执行状态。

阻塞状态

进程由于某种原因,而放弃CPU的状态。如图:类似于就绪队列,阻塞队列

143bfbaabb41b6cdd3b1572e9b2b10a9.png

如图:就绪状态、执行状态、阻塞状态的相互转换

aad0aac324178bdfd58aac81428825d8.png

创建状态

定义

操作系统提供fork函数接口创建进程,创建进程时,拥有PCB但其他资源尚未就绪的状态,称之为创建状态。

步骤

第一步,分配PCB;第二步,插入就绪队列。

终止状态

定义

定义:进程结束,由系统清理或者归还PCB的状态称之为终止状态。

步骤

第一步,系统清理;第二步,归还PCB。

如图:五种状态之间的转换模型

72c0ee561918a552152abfea4a5d6bc6.png

进程管理之进程同步

生产者-消费者模型

d6a395fa8f6720ea76e6de01a3e2f9b8.png

首先,缓冲是在高速缓存或者主存上的,操作缓冲需要三个步骤:

  1. 把缓冲里的数据取出来,放到寄存器里面
  2. 把寄存器里面的数据-1
  3. 把寄存器里面的数据放到缓存里面

图示:缓冲区的原理

144749a6fcc194b017c02cd30d9f3d34.png

生产者-消费者模型的问题:这个模型从宏观来看,没有问题。但是,生产者和消费者并发执行的时候,可能会出差错。原因是,进程之间没有通信。因此,需要进程之间的同步。

进程间的同步的定义

对竞争资源在多进程间进行使用次序的协调,使得并发执行的多个进程之间可以有效地使用资源和相互合作。

进程间同步的原则

  1. 空闲让进:资源无占用,允许使用
  2. 忙则等待:资源有占用,请求进程等待
  3. 有限等待:保证有效的等待时间,能够使用资源
  4. 让权等待:等待时,进程需要让出CPU,使进程从运行状态进入阻塞状态

临界资源:一些虽然作为共享资源,但却无法同时被多个线程共同访问的共享资源,生产者-消费者模型的缓冲区就是临界资源。当有进程使用临界资源时,其他的进程必须等待该进程释放临界资源,才可以竞争、使用资源。

进程间同步的方法

  1. 消息队列
  2. 共享存储
  3. 信号量

由于进程的线程共享进程的资源,因此进程内的多线程也需要同步。

线程同步的方法:

  1. 互斥量
  2. 读写锁
  3. 自旋锁
  4. 条件变量

Linux的进程管理

进程的类型

  1. 前台进程:具有终端,可以和用户交互的进程。
  2. 后台进程:没有占用终端,后台程序基本不和用户交互,优先级比前台进程低。需要执行的命令,以"&"结束。
  3. 守护进程:进程名字以"d"结尾的一般都是守护进程,是特殊的后台进程。在系统引导的时候启动,一直运行,直到系统关闭。例如,crond,httpd,sshd等等。

进程ID:进程的唯一标记,每一个进程都拥有不同的ID,表现为一个非负整数,最大值由操作系统限定。

进程A调用fork接口创建了进程B,进程A和进程B之间就是父子进程的关系。

进程举例

  1. ID为0的进程,idle进程,是系统创建的第一个进程
  2. ID为1的进程,init进程,是0号进程的子进程,完成系统的初始化。也是所有用户进程的祖先进程。

如图:Linux系统的状态符号以及状态

8eb52eafd1a4e3abceeeda8790b837bc.png

Linux命令

  • ps命令:查看进程状态
  • top命令:Linux使用内存
  • kill命令:发指定信号给进程

作业管理之进程调度

进程调度的定义

计算机通过决策决定哪个就绪进程可以获得CPU的使用权

进程调度的作用

  1. 保留旧进程的运行信息,请出旧进程
  2. 选择新进程,准备运行环境,并且分配CPU

进程调度的机制

  1. 就绪队列的排队机制:将就绪进程按照一定的方式排成队列,以便调度程序可以最快找到就绪进程。
  2. 选择运行进程的委派机制:调度程序以一定的策略选择就绪进程,将CPU资源分配给它
  3. 新老进程的上下文切换机制:将当前进程的上下文信息存到主存中,将新的进程上下文信息装到CPU的高速缓存中。根据老的进程有没有执行完,进程调度分为:非抢占式调度、抢占式调度。

非抢占式调度

CPU一旦分配给某个进程,就要让该进程一直使用下去,调度程序不能以任何原因抢占正在被使用的CPU。除非,进程完成工作或者IO阻塞才让出CPU。

抢占式调度

允许调度程序以一定的策略暂停当前运行的进程,然后保存好旧进程的上下文信息,分配处理器给新的进程。

非抢占式调度与抢占式调度对比

14fe20ed18dd3f986fbeafbb54e490ac.png

进程调度的算法

  • 先来先服务调度算法:按照顺序分配CPU的资源。
  • 短进程优先调度算法:调度程序优先选择就绪队列中估计运行时间最短的进程,该算法不利于长作业的进程执行。
  • 高优先权优先调度算法:进程附带优先权,调度程序优先选择权重高的进程,该算法可以使紧迫的任务优先处理。
  • 时间片轮转调度算法:按照先来先服务算法排列好就绪进程,每次从队列头部取出待执行的进程,分配一个时间片执行。等到这个时间片执行完,不管进程是否执行完,都把该进程插入到队列的尾部。该算法是相对公平的算法,但是不能保证及时响应用户。

作业管理之死锁

死锁的定义

两个或者两个以上进程在执行过程中,由于竞争资源或者彼此通信造成阻塞的现象,若无外力作用,它们都无法进一步推进,此时系统的状态称之为死锁状态。

死锁是如何产生的?

  1. 竞争资源:共享资源不能满足各个进程的需求
  2. 进程调度顺序不当

死锁产生的4个必要条件

  1. 互斥条件:某资源只能由一个进程使用,其他进程需要使用只能等待。
  2. 请求保持条件:进程至少保持一个资源,又发出新的资源请求。新的资源又被占用,这个进程的请求会被阻塞。同时被阻塞的进程又不释放所保持的资源。
  3. 不可剥夺条件:进程获得的资源在未完成使用前不能被剥夺,获得的资源只能由进程自身释放。
  4. 环路等待条件:发生死锁时,必然产生进程-资源环形等待链。

预防死锁的方法

第一种,摒弃请求保持条件

进程运行之前,一次性申请所有需要的资源。进程在运行期间,不会提出资源请求,从而摒弃请求保持条件。

第二种,摒弃不可剥夺条件

当一个进程请求新的资源得不到满足时,必须释放占有的资源。

第三种,摒弃环路等待条件

可用资源线性排序,申请必须按照需要递增申请。由于申请是线性申请,因此不存在环路。

避免死锁的算法

银行家算法

存储管理之内存分配与回收

存储管理的目的

  1. 确保计算机有足够的内存处理数据
  2. 确保程序可以从内存中,获取一部分内存进行使用
  3. 确保程序归还使用后的内存,以提供其他的程序使用

内存分配的三个分配方法

  1. 单一连续分配:最简单的分配方法,只能在单用户、单进程的操作系统中使用。
  2. 固定分期分配:支持多道程序的最简单存储分配方式。内存空间被分配成若干个固定大小的区域,每个分区只提供给一个程序使用,互不干扰。
  3. 动态分区分配:根据进程实际需要,动态分配内存空间。利用数据和各种算法。

如图:动态分区空闲表数据结构,0表示分区没有被使用,1表示分区已经被使用过。

014bcf9b3efc464e7e2104953634d469.png

如图:动态分区空闲链数据结构,节点需要记录可存储的容量

2f28f0d66cd3d36ebdcf377bb43f3d01.png

动态分区分配首次适应算法算法

  1. 首次适应算法(FF算法)
  2. 最佳适应算法(BF算法)
  3. 快速适应算法(QF算法)

首次适应算法(FF算法)

每次分配内存时,都会从开始顺序查找适合的内存区。若没有合适的空闲区,就表示该次分配失败。

产生的问题:每次都是从头部开始,使头部地址空间不断地被划分。

最佳适应算法(BF算法)

把空闲的链表按照容量的大小排序,遍历空闲区链表找到最佳合适空闲区。图示:

4b5cb658cea4efd27c6e47e5d59680ed.png

快速适应算法(QF算法)

要求有多个空闲区链表,每个空闲区链表存储一种容量的空闲区。

内存回收的四种情况

情况一

860c0ea8e75c656d089dbf73e64404c2.png

情况二

bd7efb8af9760d749332fd3791c62dd3.png

情况三

7850bb747916c6a9b0c5025345ceaf86.png

情况四

1e01ee2e9488ccd42d3226d9e7d7e3f4.png

如何内存回收?

  • 情况一:不需要新建空闲链表节点,只需要把空闲区1的容量增大为空闲区即可。
  • 情况二:将回收区与空闲区合并,新的空闲区使用回收区的地址
  • 情况三:将空闲区1、空闲区2、回收区合并,新的空闲区使用空闲区1的地址。
  • 情况四:为回收区创建的空闲节点,然后插入到相应的空闲区链表中区。

存储管理之段页式存储管理

页式存储系统

定义

将进程逻辑空间等分成若干个大小的页面,相应的把物理内存空间分成与页面大小一样的物理块,以页面为单位把进程空间装进物理内存中分散的物理块。页面大小应该适中,过大难以分配,过小导致内存碎片过多,页面大小通常是512B~8k。

页表:记录进程逻辑空间与物理空间的映射。

页式存储系统产生的问题

457ec437d66f1c28d2ed8629c3c0ff58.png

由此产生了多级页表的概念,多级页表储存一个根页表,相当于页表的目录。

如果有一段连续的逻辑分散在多个页面中,将大大降低执行效率。从而产生了段式存储管理。

段式存储管理

定义

将进程的逻辑空间划分为非等分的若干段,段的长度由连续逻辑的长度决定。

段表:通过段表,保存逻辑空间与物理空间的映射。

页式存储管理与段式存储管理

  • 两种存储方式都离散地管理了进程的逻辑空间
  • 页式物理单位,段是逻辑单位
  • 分页是为了合理利用空间,分段为了满足用户的要求
  • 页的大小由硬件固定,段的长度可以动态地变化
  • 页表信息是一维的,段表信息是二维的

段页式存储管理

定义

将逻辑空间按段式管理分成若干段,再把段内空间按页式管理若干页。如图:页地址、段地址、段页地址

e465d9281b4df472b9614c7bf4c005ab.png

6f3fa5b3f4fc780822f244520d69447e.png

存储管理之虚拟内存

为什么需要虚拟内存技术

  1. 有些进程实际需要的物理内存很大,远超物理内存的容量。
  2. 由于多道程序设计,使得每个进程的物理内存更加稀缺。
  3. 同时,我们不可能无限的增加计算机物理内存,物理内存总有不够用的时候。

虚拟内存技术

虚拟内存技术是操作系统内存管理的关键技术,使得多道程序运行和大程序运行成为现实。将程序使用的内存划分,将不需要的内存暂时放到辅存里面去,将需要的暂时放到主存里面。

程序的局部性原理

CPU访问存储器时,无论是存取指令还是存取数据,所访问的存储单元都趋于聚集在一个较小的连续区域中。

由于程序的局部性原理,无需将程序全部装入内存,装载部分即可。如果访问页不在内存中,则发出缺页中断,发起页面置换。虚拟内存实际是对物理内存的扩充,速度接近内存,成本接近辅存。

虚拟内存技术的置换算法

  1. 先进先出算法(FIFO)
  2. 最不经常使用算法(LFU)
  3. 最近最少使用算法(LRU)

替换策略发生在缓存-主存层次、主存-辅存层次,缓存-主存层次为了解决计算机的CPU速度问题,主存-辅存层次为了解决容量问题。

Linux的存储管理

页内碎片:已经被分配出去的内存空间(明确指出属于哪个进程的空间)大于请求所需要的空间,不能被利用的空间称之为页内碎片。即供大于求。

页外碎片:还没有分配出去(不属于任何进程),但是由于大小而分配给申请内存空间的新进程的内存空闲块。

图示:页内碎片、页外碎片,灰色部分是碎片

dba3c5229d049202f3ef1049f8acbc9b.png

3d5a8e783730da0b41fc7ac7097e2f79.png

Buddy内存管理算法

基于计算机处理二进制的优势,而设计的算法。解决了内存外碎片的问题,将内存外碎片的问题转移成了内存内碎片的问题,努力使内存分配与相邻内存合并能快速进行。

内存分配原则

每一块内存默认向上取整为2的幂的大小。比如,一个进程需要申请129k内存,将会为它分配256k的内存。

伙伴系统

一片连续内存的“伙伴”是相邻的另一片大小一样的连续内存。

Buddy内存管理算法分配内存的流程

第一步:创建一系列的空闲块链表,每一个链表的大小都是2的幂的大小。图示:

abb1fb0c5c9404a385fe8c688587b2c2.png

第二步:假设存储空间有1M大小,这个存储空间有一个节点,使用该节点分配100k的内存。然后,图示:

8a0de27ee6dcdcb61bcbf2324df31441.png

186dad7a26873439f8c6ca7b853f1972.png

第三步:这样,这个1M的存储空间变得没有节点啦。然后,开始分配:

701a6c7f794d44b3735a808cdc099790.png

Buddy内存管理算法回收内存的流程

025dfcb35d873885f1bf70782744579d.png

回收之后,1MB的内存有节点啦:

5b8463bd052113be773034b021259e8e.png

Linux交换空间(Swap空间)

交换空间是磁盘的一个分区,Linux物理内存满时,会把一些内存交换到Swap空间,Swap空间是初始化系统时配置的。

Linux交换空间(Swap空间)的作用

  1. 冷启动内存依赖
  2. 系统睡眠依赖
  3. 大进程空间依赖

Swap空间 和 虚拟内存的区别、联系

  • Swap空间和虚拟内存都存在于磁盘
  • Swap空间和虚拟内存工作原理都是和主存发生置换
  • Swap空间是从操作系统的角度定义的;虚拟内存是从进程的角度定义的
  • Swap空间是为了解决系统物理内存不足的问题;虚拟内存解决进程物理内存不足的问题

操作系统的文件管理

文件按照逻辑结构分类:有结构文件、无结构文件。有结构文件包括,文本文件、文档、媒体文件。无结构文件包括,二进制文件、链接库。有结构文件,由定长记录和可变长记录组成,定长记录存储文件格式、文件描述等结构化数据项。可变长记录存储文件具体内容。如图:PNG图片文件的文件结构

866faeb3478e0e1576be0df55c0f504e.png

无结构文件,又称之为流式文件,文件内容长度以字节为单位,比如exe文件、dll文件、so文件等等。

顺序文件

按顺序存放在存储介质中的文件。顺序文件是所有逻辑文件中存储效率最高的。

索引文件

可变长文件不适合使用顺序文件格式存储,因此,索引文件是为了解决可变长文件存储而发明的一种文件格式,需要配合索引表完成存储的操作。

辅存的分配方式

分为:连续分配、链接分配、索引分配。链接分配分为隐式链接和显式链接。

连续分配,顺序读取文件内容非常容易,速度也很快;对存储的要求高,要求满足容量的连续存储空间。

链接分配,将文件存储到离散的盘块中,需要额外的存储空间存储文件的盘块链接顺序。如图:隐式链接分配,在当前的盘块指向下一个盘块的链接。

f1828fd891300b981734fc3656d67517.png

隐式链接分配的特点:适合顺序访问,随机访问效率低;可靠性很差,任何一个链接出现问题都会影响整个文件。

显式链接分配:通过存储一个表,这个表存储当前的盘块和下一个盘块,这个表叫做FAT表。如图:

23150eea48c99ee303df9efe6cef18aa.png

FAT表的缺点

  1. 由于FAT表记录项多,不支持高效的直接存储
  2. 由于需要将整个FAT表加载到内存中,检索时FAT表占用较大的存储空间

索引分配

把文件的所有盘块集中存储,读取某个文件时,将文件索引读取进内存即可。

索引分配特点

  1. 每一个文件拥有一个索引块,记录所有盘块信息
  2. 索引分配方式支持直接访问盘块
  3. 文件较大时,文件分配方式具有明显的优势

辅存的存储空间管理

方法:空闲表、空闲链表、位示图。空闲表:主要存储第一个空闲盘块号、空闲盘块数。空闲盘区的分配与内存分配类似,运用了首次适应算法、循环适应算法等等算法。同时,回收过程和内存回收类似。空闲链表:把所有的空闲盘区组成一个空闲链表,每个链表节点存储空闲盘块和空闲的数目。位示图:存储盘块、磁道,0表示该盘块没有被使用,1表示该盘块被使用过了。(如图)

5428cf36fce6831f4cbeabe01106ac2d.png

位示图的优点

  1. 维护成本低
  2. 可以非常容易找到空闲的盘块
  3. 使用了0/1比特位,占用空间很小

目录树:图示

996c69d5343053dd7631f9fba8397757.png

目录树的作用

有了目录树,使得任何一个文件或者目录都有唯一的路径

Linux文件的基本操作

Linux系统的设计理念

Linux系统一切皆是文件

图示:Linux的文件目录

a72267377777e9b522d5706ce2f469c7.png

绝对路径:从根目录开始的路径

Linux常见操作

  • 创建文件:touch、vim(vim可以用来修改文件内容)
  • 创建文件夹:mkdir
  • 删除文件:rm
  • 删除文件夹:rm -r
  • 读取(查看):cat

Linux的文件类型

套接字(s)、普通文件(-)、目录文件(d)、符号链接(l)、设备文件(b、c)、FIFO(p)

Linux的文件系统

文件系统有:FAT、NTFS、EXT2/3/4。FAT:是微软的早期的DOS系统、window系统使用的文件系统,使用一张表保存盘块信息。NTFS:windowNT环境下的文件系统,NTFS对FAT进行了改进,取代了旧的文件系统。这个文件系统在Windows系统和Linux系统下都可以被识别。EXT:Linux系统使用的文件系统。如图:EXT文件系统的结构

7539f6ee55297d620b3a6ca51fa24bbc.png

176e435fde96a7c98de1097a6f2f7850.png

“EXT文件系统的五脏六腑”

Inode Table:存放Inode的地方。Inode是每个文件的索引节点,每个文件都有一个Inode。

Inode:存放了每一个文件的信息,包括文件类型、文件权限、文件物理地址、文件的长度、文件的连接计数、文件的存取时间、索引节点编号、文件状态、访问计数、链接指针等等。一个文件的文件名不存放在该文件的Inode节点上面,而是存放在该文件目录的Inode节点上。目的是,列出目录文件的时候,无需加载文件的Inode。

Inode bitmap:指Inode的位示图,记录已经分配的Inode和未分配的Inode。如图:

d0ab7f2a298281b0cd4cecdaabf4717a.png

Data block:存放文件内容的地方。每一个block都有唯一的编号,文件的block记录在文件的Inode上。

Block bitmap:block的位示图。与Inode bitmap功能相似,记录Data block的使用情况。

Supperblock:记录整个文件相关系统信息的地方,包括Block和Inode的使用情况、时间信息、控制信息等等。

操作系统的设备管理

广义的IO设备

对于CPU而言,凡是对CPU进行数据输入的都是输入设备,凡是对CPU进行数据输出的都是输出设备。

分类

  • 广义的IO设备按照使用特性分类:存储设备、交互IO设备。存储设备包括U盘、内存、磁盘,交互类型的IO设备包括键盘、鼠标、显示器等。
  • 按信息交换的单位分类:块设备:使用数据块和计算机进行信息交互、字符设备:通过字符为单位和计算机进行信息交互。块设备包括磁盘、SD卡。字符设备包括打印机、Shell终端。
  • 按设备的共享属性分类:独占设备、共享设备、虚拟设备。
  • 按照传输的速率分类:低速设备、中速设备、高速设备。

IO设备的缓冲区

缓冲区的作用和存储器的层次结构一样,都是为了解决CPU与IO设备速率不一致的问题。具体的作用是:减少CPU处理IO请求的频率;提高CPU与IO设备之间的并行性。

图示:

136d95d2d9b7fe347a95008edb1402e0.png

缓冲池的由来

专用的缓冲区只适用于某个特定的IO进程。如果这样的IO进程特别多,对内存的消耗就会很大。因此,操作系统划出可供多个进程使用的公共缓冲区,称之为缓冲池。

SPOOLing技术

关于慢速字符设备如何与计算机主机交互信息的一种技术,又称为虚拟设备技术。利用高速共享设备将低速的独享设备模拟成高速的共享设备。在逻辑上,系统为每一个用户都分配一台独立的高速独享设备。

如图:有三个进程都需要使用打印机,这个技术就会把各个进程组成队列,打印机就会依次打印出相应的数据。SPOOLing技术将同步调用低速设备改为异步调用。

92cec590df2a0d11a0cad26a83bba373.png

b0bafa3347789812d02f7ea018feadc2.png

SPOOLing技术的作用

  1. 在输入、输出之间,增加了排队转储环节(输入井、输出井)
  2. SPOOLing技术负责输入(出)井与低速设备之间的调度
  3. 逻辑上,进程直接与高速设备交互,减少了进程的等待时间
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值