网上这个实在是不敢苟同……
read函数也在用户空间申请缓冲区(参数里就明确了),然后根据i节点文件类型再调用不同的读写函数,最后应该是利用类似put_fs_byte把获取的字节一个字节一个字节写进缓冲区,空间剩余部分填0。
getc参数FILE里有两项cha *__bufp和char *buf用于标识缓冲区,如果只在固定BUFSIZ=8192相当于2页连续空间里进行类似操作;那read函数就算再差,在缓冲区中申请4页连续空间应该还不难,实在分配不了就等着缓冲区解锁直到分配成功,再怎么说4页的效率也比getc的2页高吧