open /creat、read、write、close
我们要掌握的系统调用有以下这些:
open creat close read write umask lseek remove unlink access
unix文件I/O的系统调用和文件操作c通用库函数的区别
1.标准I/O系统而言,fopen有文本方式和二进制之分(如:r 和rb等),而在UNIX环境下不对两种文件加以区分(在UNIX 环境下指定b无实际意义); 2. 文件I/O相关系统调用基于文件描述符,而通用库函数是 基于文件指针(或者说是基于流的);
应用程序代码 用户进程
存储分配函数malloc
Sbrk系统调用
内核
malloc函数和sbrk系统调用
进程控制系统调用(fork,exec,wait等)通常由用户应用程序 直接调用。
应用程序代码
用户进程
C库函数
系统调用
内核
C库函数和系统调用之间的差别
文件I/O操作需要掌握的一些系统调用 Linux/unix中针对文件I/O的系统调用(或称API)可 以归结为四个方面:打开(创建)、读取、写入和关 闭(这些文件操作均属于不带缓冲的I/O)。这些系 统调用的名字分别是:
用户级、内核级和硬件级三者之间的通讯
用户空间和内核空间
在程序空间中: 用户应用程序工作在用户空间 系统内核运行在内核空间
系统调用
用户空间
中断
内核空间
当应用程序执行系统调用或被硬件中断挂起时,linux将执 行模式由用户空间切换到内核空间。 如果是系统调用:执行系统调用的内核代码运行在进程上 下文中。 如果是处理硬件中断:处理硬件中断的内核代码和进程是 异步的,与任何一个特定进程无关。 模块化代码在内核空间中运行,一个驱动程序模块中的某 些函数作为系统调用的一部分执行;而其他函数负责中断 处理。