[深入理解文件系统之一] IO系统调用

简介:


1. IO system call


six basic operation:


open

create

close

write

read

lseek


ioctl

unlink



更高级的IO system call:


pread

pwrite


readv

writev


preadv (calls combine the effects of lseek() and read() (or write()) into a single system call.)

pwritev


aio_read

aio_write

lio_listio



unlink

flush

dup2


2.  文件中datameta-datacache属性:


O_SYNC: write operation returns only when both data and meta data stored on physical disk


O_DSYNC: write operation   returns only when data  stored on physical disk


O_RSYNC: read operation returns before time-stamp updated


O_DIRECT: return only when data submitted to disk driver's IO queue (?)



3. memory mapped files

根本功能是:把一个文件映射到当前进程的用户空间


4. stdio file operation

重点是理解下面的数据结构,他说unistd.h file IO stdlib.hfile io的接口:

struct _IO_FILE {

char *_IO_read_ptr;

/*

Current read pointer */

char *_IO_read_end;

/*

End of get area. */

char *_IO_read_base;

/*

Start of putback and get area. */

char *_IO_write_base;

/*

Start of put area. */

char *_IO_write_ptr;

/*

Current put pointer. */

char *_IO_write_end;

/*

End of put area. */

char *_IO_buf_base;

/*

Start of reserve area. */

char *_IO_buf_end;

/*

End of reserve area. */

int

int

_blksize;

_fileno;


};


typedef struct _IO_FILE FILE;


学习并了解到的新的函数:

setbuf();

setvbuf()

setbuffer();

setvbuf()


文中还提供了经典的例子,来对比和分析NON buffer/Line buffer/File buffer对性能的不同影响。 还有一个重要的思想就是:如果对性能要求很高,需要尽可能地bypass std io library


















本文转自存储之厨51CTO博客,原文链接:http://blog.51cto.com/xiamachao/1891178 ,如需转载请自行联系原作者



相关文章
|
5月前
|
存储 Linux Shell
Linux基础IO【深入理解文件系统】
Linux基础IO【深入理解文件系统】
60 1
|
6月前
|
存储 Linux
linux系统调用 高级IO
linux系统调用 高级IO
87 0
|
7月前
|
存储 Linux 编译器
Linux之基础IO文件系统讲解(下)
因为IO相关函数与系统调用接口对应,并且库函数封装系统调用,所以本质上,访问文件都是通过fd访问的。所以C库当中的FILE结构体内部,必定封装了fd
Linux之基础IO文件系统讲解(下)
|
7月前
|
存储 Linux Shell
Linux之基础IO文件系统讲解(中)
文件描述符的分配规则 看下面代码
|
7月前
|
存储 Unix Linux
Linux之基础IO文件系统讲解(上)
在C语言中,读文件和写文件是常见的操作,用于从磁盘读取数据到内存或将数据从内存写入磁盘文件中。这些操作需要使用标准库中的文件I/O函数。下面我将详细解释如何在C语言中进行读文件和写文件操作,并举例说明。
|
10月前
|
存储 缓存 Linux
【Linux】基础IO——文件系统|软硬链接|动静态库
磁盘的结构、文件系统、软硬链接和动静态库
|
10月前
|
存储 安全 IDE
Linux基础IO【理解文件系统】
Linux理解文件系统,包括物理磁盘的介绍,文件系统的深入理解等相关知识,详细讲解,干货满满!
126 0
Linux基础IO【理解文件系统】
|
11月前
|
存储 缓存 算法
【Linux】基础IO(二)--- 理解内核级和用户级缓冲区、磁盘与ext系列文件系统、inode与软硬连接(下)
【Linux】基础IO(二)--- 理解内核级和用户级缓冲区、磁盘与ext系列文件系统、inode与软硬连接(下)
139 1
|
11月前
|
存储 Linux 编译器
【Linux】基础IO(二)--- 理解内核级和用户级缓冲区、磁盘与ext系列文件系统、inode与软硬连接(上)
【Linux】基础IO(二)--- 理解内核级和用户级缓冲区、磁盘与ext系列文件系统、inode与软硬连接(上)
151 0
|
12月前
|
存储 机器学习/深度学习 Linux
【Linux】基础IO——文件系统
【Linux】基础IO——文件系统
57 0