没有合适的资源?快使用搜索试试~ 我知道了~
5.第五周课件--用户空间IO软件课件1
需积分: 0 0 下载量 186 浏览量
2022-08-04
00:33:26
上传
评论
收藏 556KB PDF 举报
温馨提示
试读
33页
(1) 用户层I/O软件(I/O函数调用系统调用) (2) 与设备无关的操作系统I/O软件 (3) 设备驱动程序 (4) I/O中断处理程序 (1)使用高级语言
资源详情
资源评论
资源推荐
I/O操作的实现
° 分以下三个部分介绍
• 第一讲:用户空间I/O软件
- I/O子系统概述
- 文件的基本概念
- 用户空间的I/O函数
• 第二讲:I/O硬件和软件的接口
- I/O设备和设备控制器
- I/O端口及其编址方式
- I/O控制方式
• 第三讲:内核空间I/O软件
- 与设备无关的I/O软件
- 设备驱动程序
- 中断服务程序
I/O子系统概述
° 所有高级语言的运行时(runtime)
都提供了执行I/O功能的机制
例如,C语言中提供了包含像printf()
和scanf()等这样的标准I/O库函数,
C++语言中提供了如 <<(输入)和
>>(输出)这样的重载操作符。
° 从高级语言程序中通过I/O函数或I/O
操作符提出I/O请求,到设备响应并完
成I/O请求,涉及到多层次I/O软件和
I/O硬件的协作。
° I/O子系统也采用层次结构
从用户I/O软件切换到内核I/O软件的唯一
办法是“异常”机制:系统调用(自陷)
I/O子系统概述
各类用户的I/O请求需要通过某种方式传给OS:
最终用户:键盘、鼠标通过操作界面传递给OS
用户程序:通过函数(高级语言)转换为系统调用传递给OS
I/O软件被组织成从高到低的四个层次,层次越低,则越接近设备
而越远离用户程序。这四个层次依次为:
(1) 用户层I/O软件(I/O函数调用系统调用)
(2) 与设备无关的操作系统I/O软件
(3) 设备驱动程序
(4) I/O中断处理程序
大部分I/O软件都属于操作系统内核态程序,最初的I/O请求在用
户程序中提出。
OS在I/O系统
中极其重要!
OS
用户I/O软件
用户软件可用以下两种方式提出I/O请求:
(1)使用高级语言提供的标准I/O库函数。例如,在C语言程序中可以直接使用
像fopen、fread、fwrite和fclose等文件操作函数,或printf、putc、scanf
和getc等控制台I/O函数。 程序移植性很好!
但是,使用标准I/O库函数有以下几个方面的不足:
(a) 标准I/O库函数不能保证文件的安全性(无加/解锁机制)
(b) 所有I/O都是同步的,程序必须等待I/O操作完成后才能继续执行(串行)
(c) 有些I/O功能不适合甚至无法使用标准I/O库函数实现,如,不提供读取文
件元数据的函数(元数据包括文件大小和文件创建时间等)
(d) 用它进行网络编程会造成易于出现缓冲区溢出等风险
(2)使用OS提供的API函数或系统调用。例如,在Windows中直接使用像
CreateFile、ReadFile、WriteFile、CloseHandle等文件操作API函数,或
ReadConsole、WriteConsole等控制台I/O的API函数。对于Unix或Linux
用户程序,则直接使用像open、read、write、close等系统调用封装函数。
用户I/O软件
° 用户进程请求读磁盘文件操作
• 用户进程使用标准C库函数fread,或Windows API函数
ReadFile,或Unix/Linux的系统调用函数read等要求读一个
磁盘文件块。
• 用户程序中涉及I/O操作的函数最终会被转换为一组与具体机器
架构相关的指令序列,这里我们将其称为I/O请求指令序列。
• 例如,若用户程序在IA-32架构上执行,则I/O函数被转换为
IA-32的指令序列。
• 每个指令系统中一定有一类陷阱指令(有些机器也称为软中断
指令或系统调用指令),主要功能是为操作系统提供灵活的系
统调用机制。
• 在I/O请求指令序列中,具体I/O请求被转换为一条陷阱指令,
在陷阱指令前面则是相应的系统调用参数的设置指令。
剩余32页未读,继续阅读
FelaniaLiu
- 粉丝: 23
- 资源: 334
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0