APUE自学笔记
再也不玩网游了
这个作者很懒,什么都没留下…
展开
-
『APUE自学笔记』进程环境
启动代码 C程序运行时,最开始运行的是启动代码,启动代码再去调用main函数,然后整个C程序都已运行。 由编译器提供的,一般有两种提供方式:①源码、②二进制(gcc采用这种) gcc -v [文件名] 可以查看gcc编译链接的详细情况时,可以看到有很多*.o,这些 .o文件就是gcc提供的启动代码。 启动代码由汇编语言编写 在程序的内存空间结构还没有布局起来之前,高级语言程序还无法运行,此时只...原创 2019-04-11 14:58:53 · 187 阅读 · 0 评论 -
『APUE自学笔记』文件IO
注意!以下系统调用的具体使用方法可通过"man 2 open"命令查看使用手册。原创 2019-04-10 22:13:16 · 207 阅读 · 0 评论 -
『APUE自学笔记』进程控制
三个特殊进程 PID==0(调度进程) 作用:实现进程间的调度和切换,该进程会让CPU轮换的执行所有的进程。 OS启动起来后,最后有一部分代码会持续的运行,这个就是调度的进程。由于这个进程是OS的一部分,凡是由OS代码演变来的进程,都称之为系统进程。 PID==1(init进程) 作用1:初始化。他会去读取各种各样的系统文件,使用文件中的数据来初始化OS的启动。 作用2:托管孤儿进程...原创 2019-04-12 11:17:27 · 140 阅读 · 0 评论 -
『APUE自学笔记』线程
进程的缺点 (1)进程间切换的计算机资源开销很大,切换效率非常低 OS是通过虚拟内存机制来实现进程空间独立的,进程在并发运行时需要相互间的切换,切换时必然涉及虚拟内存机制的控制,但是虚拟内存机制比较复杂,所以在进行进程间切换时,会耗费CPU、cache、内存等计算机资源,也非常耗费切换时间。 (2)进程间数据共享的开销很大 当程序涉及多进程时,往往会涉及到进程间的通信,OS提供了各种各样的通...原创 2019-04-13 11:15:10 · 181 阅读 · 0 评论 -
『APUE自学笔记』进程间通信
IPC概述 进程间实现数据共享容易吗? 如果进程空间之间有可以共享的交叠空间的话,进程间可以通过这个交叠的空间,很容易的就能实现数据共享。但是实际情况是,每个进程的进程空间是完全独立的,进程空间没有任何的交叠,所以实现数据共享的难度很高。 为什么进程空间是完全独立的? 每个进程的虚拟地址范围虽然都是相同的(由0~2^32)但是各个进程通过内存映射机制,映射一段独立的物理内存。所以进程...原创 2019-04-17 15:54:46 · 238 阅读 · 0 评论 -
『APUE自学笔记』高级IO
非阻塞 思考:读普通文件会阻塞吗? 读普通文件时,如果读到了数据就成功返回,如果没有读到数据返回0,总之不会阻塞。 思考:写文件时会阻塞吗? 在写某些文件时,当文件不能立即接收写入的数据时,也可能会导致写操作阻塞,一直阻塞到写成功为止。 如何实现非阻塞读? open()打开文件时指定O_NONBLOCK状态标志; 通过fcntl函数指定O_NONBLOCK来实现; 文件...原创 2019-04-18 12:06:32 · 264 阅读 · 0 评论