内核态:操作系统内核使用的模式
用户态:用户应用程序所使用的的模式
上下文切换:内核态与用户态模式之间的频繁切换
fork 创建一个与父进程相同的子进程,子进程拥有和父进程一样的程序计数器、CPU寄存器、打开的文件。
exec:系统调用的,用于执行驻留在活动进程中的文件。调用exec后新的可执行文件会替换掉先前的可执行文件并执行。旧进程会被替换,数据、代码、堆栈被修改,但PID不变。
exec常用函数:
- execl
- execle
- execlp
- execv
- execve
- execvp
进程映像(程序运行所需要的可执行文件)
- 代码段:只读,存放指令、运行代码
- 数据段:可读可写,存储初始化的全局变量、初始化的static变量
- bss段:可读可写,存储未初始化的全局变量、初始化的static变量
- 栈:可读可写
- 堆:可读可写,运行期间由malloc/realloc动态分配
waitpid: 等待子进程结束或终止
常见系统调用:
- pause:挂起信号
- nice:改变进程优先级
- ptrace:进程跟踪
- kill:向进程发送信号
- pipe:管道
- mkfifo:创建命名管道
- sigaction:设置对指定信号的处理办法
- msgctl:消息控制
- semctl:信号量控制