
CSAPP
43118
JonyChan技术学习过程中的总结
展开
-
CSAPP[10]系统级I/O
1.ssize_t和size_t的区别在x85_64系统中,size_t被定义为unsigned long,而ssize_t被定义为long。2.用RIO包健壮地读写RIO提供了两类不同的函数:无缓冲的输入输出函数。 这些函数直接在内存和文件之间传送数据。带缓冲的输入函数。 这些函数运行高效地从文件中读取文本行和二进制数据,并将这些内容缓存在应用级缓冲区内。带缓冲的RIO输入函数是线程安全的,它在同一个描述符上被交错地调用,例如从一个描述符中交替地读取一些文本行和二进制数据。2.1 RI原创 2021-02-21 20:55:41 · 130 阅读 · 0 评论 -
CSAPP[9]虚拟内存
1.再看fork函数当fork函数被当前进程调用时,内核为新进程创建1)各种数据结构,如当前进程的mm_struct;2)PID,并将两个进程中的每个页面都标记为只读,并将两个进程中的每个区域结构都标记为私有的写时复制;当两个进程中的任一个后来进行写操作时,写时复制机制才创建新页面。2.再看execve函数假设在当前进程中的程序执行了如下的execve调用:execve("a.out", null, null);加载并运行a.out需要以下几个步骤:删除已存在的用户区域。 删除当前进程原创 2021-02-21 17:36:58 · 157 阅读 · 0 评论 -
CSAPP[7]链接
1.存档archive存档(archive):Linux的静态库以archive格式存放在磁盘中,它是一组连接起来的可重定位目标文件的集合,由后缀.a标识。例如有两个程序addvec.c,multvec.c,现在想将它们的目标文件组成libvector.a静态库:gcc -c addvec.c multvec.car rcs libvector.a addvec.o multvec.o换言之,一个静态库由多个目标文件组成;一个可执行文件由多个可重定位的目标文件(包括主程序目标文件、静态库的目原创 2021-02-21 12:03:09 · 186 阅读 · 0 评论