简述访问文件的语法规则
- 2023-08-19 16:06:12
1、简述访问文件的语法规则?规范模式下文件打开后,标志O_SYNC与O_DIRECT清0,而且它的内容是由系统调用read()和write()来存取。
2、系统调用read()将阻塞调用进程,直到数据被拷贝进用户态地址空间(内核允许返回的字节数少于要求的字节数)。
3、但系统调用write()不同,它在数据被拷贝到页高速缓存(延迟写)后就马上结束。
4、同步模式:同步模式下文件打开后,标志O_SYNC置1或稍后由系统调用fcntl()对其置1。
5、这个标志只影响写操作(读操作总是会阻塞),它将阻塞调用进程,直到数据被有效地写入磁盘。
6、内存映射模式:内存映射模式下文件打开后,应用程序发出系统调用mmap()将文件映射到内存中。
7、因此,文件就成为RAM中的一个字节数组,应用程序就可以直接访问数组元素,而不需要系统调用read()、write()或lseek()。
8、直接I/O模式:直接I/O模式下文件打开后,标志O_DIRECT置1。
9、任何读写操作都将数据在用户态地址空间与磁盘间直接传送而不通过页高速缓存。
10、异步模式:异步模式下,文件的访问可以有两种方法,即通过一组POSIXAPI或Linux特有的系统调用来实现。
11、所谓异步模式就是数据传输请求并不阻塞调用进程,而是在后台执行,同时应用程序继续它的正常运行。
12、读写文件读文件是基于页的,内核总是一次传送几个完整的数据页。
13、如果进程发出read()系统调用来读取一些字节,而这些数据还不在RAM中,那么,内核就要分配一个新页框,并使用文件的适当部分来填充这个页,把该页加入页高速缓存,最后把所请求的字节拷贝到进程地址空间中。
14、对于大部分文件系统来说,从文件中读取一个数据页就等同于在磁盘上查找所请求的数据存放在哪些块上。
声明:本文内容及图片来源于读者投稿,本网站无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。请将本侵权页面网址发送邮件到583666585@qq.com,我们会及时做删除处理。