Linux / Unix IO

来源:互联网 发布:淘宝网客厅吸顶灯 编辑:程序博客网 时间:2024/05/22 04:49

IO分类

  1. 标准IO: fopen, fread, fwrite, fseek, fclose, ...
  2. 系统IO: open, read, write, readv, writev, pread, pwrite, close, fstat, fcntl, select,...
  3. 异步IO: aio_read, aio_write, lio_listio, aio_error, aio_return, ...
  4. 存储映射IO: mmap, munmap, madvise, ...

标准IO

  1. 实现最普遍: 各种平台上都有实现
  2. 读写是基于内部缓存的,适合于文本处理等每次操作小块数据的IO操作
  3. 效率较低。需要两次内存拷贝,一次是内核到标准IO的缓存,一次是标准IO的缓存到用户的缓存
  4. 在多线程或是并行情况下,使用起来很困难

 系统IO

  1. 基于Linux/Unix操作系统,由POSIX所定义的通用文件和设备访问原语
  2. 效率较高,直接调用系统内核的功能
  3. 提供对文件和设备的直接访问,fstat, ioctl, fcntl,......
  4. 相对标准IO,编程的难度较大,需要对系统的底层有较为清晰的了解:文件描述符,文件表项,vnode, 阻塞/非阻塞, 读写锁, 多路复用,.....
  5. 支持并行和多线程:读写锁, pread, pwrite, preadv, pwritev,......
原创粉丝点击