- 浏览: 141176 次
文章分类
最新评论
说明:这是不带缓冲的文件I/O系列笔记的引言部分,其它更多内容将在后面陆续更新。另外,更详细的内容请参考《UNIX环境高级编程》第3章 -- 文件I/O。
对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数,变化范围是 0~OPEN_MAX-1。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,就使用 open 或 creat 返回的文件描述符标识该文件,将其作为参数传送给 read 或 write函数。
按照惯例,UNIX 系统用 0、1 和 2 分别关联标准输入、标准输出和标准错误。但为了提高可读性,应当用在头文件 <unistd.h> 中定义的符号常量 STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO 来代替。
通常所用的文件操作函数是标准I/O函数,它们是带缓冲的。所谓不带缓冲,指的是每个read 和 write 都调用内核中的一个系统调用。只要涉及在多个进程间共享资源,原子操作的概念就变得非常重要。我们将通过文件 I/O 和 open 函数的参数来讨论此概念。
对于内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数,变化范围是 0~OPEN_MAX-1。当打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,就使用 open 或 creat 返回的文件描述符标识该文件,将其作为参数传送给 read 或 write函数。
按照惯例,UNIX 系统用 0、1 和 2 分别关联标准输入、标准输出和标准错误。但为了提高可读性,应当用在头文件 <unistd.h> 中定义的符号常量 STDIN_FILENO、STDOUT_FILENO、STDERR_FILENO 来代替。
通常所用的文件操作函数是标准I/O函数,它们是带缓冲的。所谓不带缓冲,指的是每个read 和 write 都调用内核中的一个系统调用。只要涉及在多个进程间共享资源,原子操作的概念就变得非常重要。我们将通过文件 I/O 和 open 函数的参数来讨论此概念。
发表评论
-
打开伪终端设备
2018-07-09 20:50 1249在伪终端概述一节中已对 PTY进行了初步的介绍。尽管 ... -
伪终端概述
2018-06-02 11:05 1538伪终端就是指,一个应用程序看上去像一个终端,但事实上它 ... -
终端窗口大小和 termcap
2018-05-29 22:39 792多数 UNIX 系统都提供了一种跟踪当前终端窗口大小的 ... -
终端规范模式和非规范模式
2018-05-29 00:25 944终端规范模式很简单:发一个读请求,当一行已经输入后,终 ... -
终端标识
2018-05-23 11:18 567尽管控制终端的名字在多数 UNIX 系统上都是 /de ... -
波特率和行控制函数
2018-05-22 07:53 936虽然大多数终端设 ... -
终端属性和选项标志
2018-05-20 07:40 707tcgetattr 和 tcsetattr ... -
终端特殊输入字符
2018-05-17 06:33 810终端支持下表所示的特殊输入字符。 为了更改 ... -
终端 I/O 综述
2018-05-10 07:56 434终端设备可认为是由内核中的终端驱动程序控制的。每个终端 ... -
POSIX 信号量
2018-05-09 00:03 576在XSI IPC通信之信 ... -
XSI IPC 通信之共享存储
2018-04-25 07:18 944在XSI IPC通信之消息队列和XSI IPC通信之信 ... -
XSI IPC通信之信号量
2018-04-17 23:38 613在XSI IPC通信之消 ... -
XSI IPC通信之消息队列
2018-04-15 10:54 490消息队列是消息的链接表,存储在内核中,由消息队列标识符 ... -
XSI IPC 相似特征介绍
2018-02-08 23:48 481有 3 种称作 XSI IPC ... -
IPC 通信之 FIFO
2018-02-06 22:55 413FIFO 也被称为命名管道,未命名的管道只能在两个相关 ... -
IPC 通信之管道
2018-01-30 22:22 383管道是 UNIX 系统 IPC 的最古老但也是最常用的 ... -
readv/writev 函数及存储映射 I/O
2018-01-19 00:57 879readv 和 writev 函数可用于在一次函数调用 ... -
POSIX 异步 I/O
2018-01-16 21:33 452POSIX 异步 I/O 接口为对不同类型的文件进行异 ... -
fcntl 记录锁
2018-01-06 23:48 588记录锁的功能是:当有进程正在读或修改文件的某个部分时, ... -
守护进程惯例
2018-01-06 23:52 433UNIX 系统中,守护进程遵循下列通用惯例。 ...
相关推荐
第3章 文件I/O 3.1 引言 3.2 文件描述符 3.3 open函数 3.4 creat函数 3.5 close函数 3.6 lseek函数 3.7 read函数 3.8 write函数 3.9 I/O的效率 3.10 文件共享 3.11 原子操作 ...
第3章 文件I/O 47 3.1 引言 47 3.2 文件描述符 47 3.3 open函数 48 3.4 creat函数 49 3.5 close函数 50 3.6 lseek函数 50 3.7 read函数 53 3.8 write函数 54 3.9 I/O的效率 54 3.10 文件共享 ...
44 2.8 基本系统数据类型 45 2.9 标准之间的冲突 45 2.10 小结 46 习题 46 第3章 文件I/O 47 3.1 引言 47 3.2 文件描述符 47 3.3 open函数 48 3.4 creat函数 49 3.5 close函数 50 3.6 lseek函数...
2. 不带缓存的I/O(第三章)、文件和目录(第四章、标准I/O库(第五章)以及系统数据文件(第六章)。 3. 进程—Unix进程的环境(第七章)、进程控制(第八章)、进程之间的关系(第九章)以及信号(第十章)。 ...
第3章文件i/o 47 3.1 引言47 3.2 文件描述符47 3.3 open函数48 3.4 creat函数49 3.5 close函数50 3.6 lseek函数50 3.7 read函数53 3.8 write函数54 3.9 i/o的效率54 3.10 文件共享56 3.11 原子操作59 ...
第3章文件i/o 47 3.1 引言47 3.2 文件描述符47 3.3 open函数48 3.4 creat函数49 3.5 close函数50 3.6 lseek函数50 3.7 read函数53 3.8 write函数54 3.9 i/o的效率54 3.10 文件共享56 3.11 原子操作59 ...
4. **传输带宽**:XFS能以接近裸设备I/O的性能存储数据,单个文件系统的吞吐量最高可达7GB每秒。 #### 三、MySQL与XFS文件系统 在选择MySQL使用的文件系统时,XFS因其出色的性能表现而成为首选。以下是XFS与MySQL...
5.1.2 缓存与缓冲间的差异 103 5.1.3 磁盘缓存的性能估计 104 5.1.4 磁盘缓存的算法 105 5.1.5 磁盘缓存的组件 111 5.1.6 通过定位优化磁盘缓存 112 5.1.7 存储网络中的独立缓存 117 5.1.8 配置缓存 118 5.2 固态...
- **I/O端口和I/O内存**:介绍如何通过I/O端口或I/O内存与硬件进行通信。 - **I/O端口示例**:给出具体的使用I/O端口的示例。 #### 十、中断处理 - **并行端口准备**:准备并行端口以便接收和处理中断请求。 - **...
无论是文件操作、网络通信还是与用户交互,都离不开I/O处理的支持。本篇文章将从Java I/O的基础出发,深入探讨不同类型的输入输出流及其应用场景。 #### 二、I/O基础知识 ##### 2.1 数据流的基本概念 在Java中,...
- **I/O性能优化**:借助`iostat`工具提供的磁盘I/O统计信息,识别出瓶颈设备,并考虑优化存储结构、增加缓存或调整文件系统参数等方式提升I/O效率。 #### 四、小结 性能监测是Linux系统管理中不可或缺的一部分。...
- Ext2是一种不带日志功能的文件系统,而Ext3是Ext2的增强版,支持日志功能。 - ReiserFS是一种高性能的日志文件系统,JFS和XFS也是高性能的文件系统。 **1.4 磁盘I/O子系统** - **I/O子系统架构** - 包括用户...
- 数据缓冲区大小应不超过磁带驱动器或操作系统支持的最大磁带I/O大小,一般为256KB或128KB。 - 增加磁带缓冲区大小可能会影响某些备份操作的速度,并可能引起还原问题。 - 在进行任何更改后,都需要验证备份和恢复...
- **案例研究中的具体应用场景**:在这个具体的案例研究中,作者们首先通过监控工具收集了大量的性能数据,包括但不限于CPU利用率、I/O等待时间、内存使用情况等。接着,基于这些数据进行综合分析,识别出关键的性能...