深入理解计算机系统(第二版)----之1:(三:程序间的交互和通信)系统级 IO

IO是主存和外部设备之间拷贝数据的过程,所有语言的运行时系统都提供执行IO的较高级别工具,例如ANSI C提供标准IO库,包含想printfscanf这样执行带缓冲区的IO函数,C++语言用他的重载操作符<<>>提供了类似功能。

10.1 unix IO

一个io文件就是一个m字节的序列,所有io设备,如磁盘 网络和终端,都被模型化为文件,所有输入输出都被当作对文件的读写来执行,这种吧设备映射为文件的方式,允许unix内核引出一个简单的应用接口即unix IO,这使得所有IO都能以一种统一且一致的方式来执行。

1)打开文件:一个应用程序通过要求内核打开响应的文件,宣告访问一个IO设备

内核返回一个小的非负整数,叫做描述符。

Unix外壳创建的每个进程开始时候都有谁那个打开的文件,标准输入描述符为0,标准输出1,标准错误2

2)改变当前文件的位置:对于每个打开的文件,内核保持着一个文件weizhik,初始为0,这个文件位置是从文件开头其实的字节偏移量,应用程序能够通过执行seek操作,显式地设置文件的当前位置k.

3)读写文件:读操作就是从文件拷贝n>0个字节到存储器,从当前文件位置k开始,然后将k增加到k+n

4)关闭文件:内核释放文件打开时创建的数据结构,并将这个描述符恢复到可用的描述符池中,无论进城因为何种原因终止,内核都会关闭所有打开的文件并释放他们的存储器资源。

原文地址:https://www.cnblogs.com/xiaodoujiaohome/p/6652890.html