操作系统复习(4)https://developer.aliyun.com/article/1530636
七,输入/输出系统
7.1、硬件层面
1 I/O设备
IO设备大致分为两类:块设备和字符设备;
功能:完成具体的操作;(对磁盘的读写操作)
1.2 I/O控制器
接受CPU发来的命令,去控制I/O设备,为了将处理机能够从繁杂的设备控制事务中解脱出来;
设备控制器的基本功能:
接受和识别命令
数据交换
标识和报告设备的状态
地址识别
数据缓冲区
差错控制
操作系统不与设备打交道,只通过设备控制器来操作设备;
i/o设备的控制方式
- 轮询的方式
- 中断的方式
- DMA方式
- I/o通道方式
7.2中断
中断和陷入
1.中断
cpu对io设备发来的中断信号的一种响应.cpu暂停正在执行的程序,保护cpu现场 ,然后自动去执行该io设备的中断处理程序
2.陷入
cpu内部事件引起的中断,比如程序出错
中断向量表和中断优先级
1.中断向量表
通常会为每种设备配以相应的中断处理程序
表结构
中断号 | 中断处理程序的入口地址 |
2.中断优先级
中断请求的紧急程度是不同的,所以要为他们设置不同的优先级
处理多中断源的方式
这是为了应对当处理机正在处理一个中断的时候又来了另一个中断.的处理
1.屏蔽中断
处理一个中断的时候屏蔽其他中断
2.嵌套中断
1.多个中断一同请求,优先响应高优先级的中断,2.高优先级中断请求可以抢占正在运行的低优先级中断的处理机
中断处理程序
1.测试是否有未响应的中断信号
2.保护被中断进程的cpu现场
3.转入相应设备的中断处理程序
4.处理中断
5.恢复cpu现场环境后退出中断
7.3 设备驱动程序
驱动程序操控的设备里面需要有嵌入式程序
是的,驱动程序操控的设备通常内置有嵌入式程序(也称为固件),用于控制和管理设备的功能和行为。
嵌入式程序是一种运行在设备内部的软件,通常存储在设备的非易失性存储器中,例如闪存或EEPROM。这些程序由设备制造商开发,并在生产过程中烧录到设备中。嵌入式程序包含了设备的驱动程序、操作系统、引导加载程序和其他必要的软件组件。
驱动程序与嵌入式程序进行交互,向设备发送指令和参数,以控制设备的工作模式、配置设备的功能、读取和写入设备的数据等。嵌入式程序接收驱动程序发送的指令和参数,并执行相应的操作,控制设备的硬件部分。
嵌入式程序还负责设备的初始化、启动、状态监测、错误处理等任务。它们可能实现设备间的通信协议,处理输入和输出数据,执行特定的算法,以及提供设备的各种功能。
因此,驱动程序和嵌入式程序是紧密关联的,共同确保设备能够按照预期进行操作。驱动程序在计算机系统上运行,与操作系统和应用程序交互,控制和管理设备。而嵌入式程序在设备内部运行,控制和管理设备的硬件和底层功能。
设备驱动程序的功能
- 接收由与设备无关的软件发来的命令和参数,并将命令中的抽象io请求转换为与设备相关的低层操作序列(比如read命令转换为具体的该怎么读)
- 检查用户io的合法性
- 发出io命令 忙则等待
- 及时响应由设备控制器发来的中断请求,调用相应的中断处理程序进行处理
设备处理方式
- 为没类设备设置一个进程
- 整个系统设置一个io进程
- 不设置专门的设备处理进程
设备驱动执行过程
1.将抽象要求转换成具体要求
2.校验服务请求
3.检查设备的请求
设备处于就绪状态才能启动这个设备
4.传送必要的参数
5.启动io设备
7.4 与设备无关的io软件
需要实现物理设备名到逻辑设备名的映射
使用逻辑设备表
7.5用户层io软件
系统调用和库函数
系统调用是应用程序取得os所有服务的唯一途径
早期的系统调用是以汇编的形式提供的,现在C语言提供了与系统调用相对应的库函数
比如java打印出helloworld就调用了C语言中关于控制台输出的库函数
假脱机技术
SPOOLing 技术
特点:
提高了io速度
将独占设备改造为共享设备
实现了虚拟设备的功能
守护进程
守护进程是允许使用该独占设备的唯一进程,所有其他进程都不能直接使用该设备,而只能将对该设备的使用要求写入一份文件中,并将文件放入假脱机目录找那个,由守护进程按照目录中的文件,依次完成各进程对该设备的请求
7.6 缓冲
- 缓和cpu和i/o设备间速度不匹配的矛盾
- 减少对cpu中断的哦频率,
- 解决数据粒度不匹配的问题
- 提高cpu和io设备之间的并行性
双缓冲区和单缓冲区
经常用来解决互斥访问缓冲区和双向通信问题的
环形缓冲区
八,文件系统
文件逻辑结构
流式文件以字节为单位
记录式文件(有结构文件)
顺序文件
索引文件
索引顺序文件
2.文件目录
与文件管理系统和文件集合相关联的是文件目录。
1)文件控制块
与进程管理一样,为实现目录管理,操作系统中引入了文件控制块的数据结构。
文件控制块(FCB)是用来存放控制文件需要的各种信息的数据结构,以实现“按名存取”。FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。为了创建一个新文件,系统将分配一个FCB关存放在文件目录中,成为目录项。
fcb包含的信息
(1)基本信息,如文件名、文件的物理位置、文件的逻辑结构、文件的物理结构等。
(2) 存取控制信息,如文件存取权限等
索引结点
除了文件名之外的所有信息都放到索引结点中,每个文件对应一个索引结点。目录项中只包含文件、索引结点指针,因此每个目录项的长度大幅减少。
目录结构
(1)单级目录结构:
在整个文件系统中建立一张目录表,每个文件占一个目录项。
(2)两级目录结构:
将文件目录分成文件目录和用户文件目录两级。
3. 共享
1)文件共享
(1)基于索引结点的共享方式(硬链接)
索引结点中设置一个链接计数变量count,用于表示链接到本索引结点上的用户目录项数。若count =
2,说明此时有两个用户目录项链接到该索引结点上,或者说是有两个用户在共享此文件。
若某个用户“删除”该文件,则只是要把用户目录中与该文件对应的目录项删除,且索引结点count的值减1。
若count>0,说明还有别的用户要使用该文件,暂时不能把文件数据删除,否则会导致指针悬空。
(2)基于符号链的共享方式(软链接)
为使用户B能共享用户A的一个文件F,可以由系统创建一个LINK 类型的新文件,也
取名为F,并将文件F写入用户B的目录中,以实现用户B的目录与文件F的链接。
结构、文件的物理结构等。
(2) 存取控制信息,如文件存取权限等
索引结点
除了文件名之外的所有信息都放到索引结点中,每个文件对应一个索引结点。目录项中只包含文件、索引结点指针,因此每个目录项的长度大幅减少。
目录结构
(1)单级目录结构:
在整个文件系统中建立一张目录表,每个文件占一个目录项。
(2)两级目录结构:
将文件目录分成文件目录和用户文件目录两级。
3. 共享
1)文件共享
(1)基于索引结点的共享方式(硬链接)
索引结点中设置一个链接计数变量count,用于表示链接到本索引结点上的用户目录项数。若count =
2,说明此时有两个用户目录项链接到该索引结点上,或者说是有两个用户在共享此文件。
若某个用户“删除”该文件,则只是要把用户目录中与该文件对应的目录项删除,且索引结点count的值减1。
若count>0,说明还有别的用户要使用该文件,暂时不能把文件数据删除,否则会导致指针悬空。
(2)基于符号链的共享方式(软链接)
为使用户B能共享用户A的一个文件F,可以由系统创建一个LINK 类型的新文件,也
取名为F,并将文件F写入用户B的目录中,以实现用户B的目录与文件F的链接。