一、操作系统启动
1、从系统启动到第一个进程
CPU Reset -》Firmware -》BootLoader -》Kernel_start()
(1)操作系统会加载“第一个程序”
如果没有指定启动选项init=,按照“默认列表”尝试一遍
从此之后,Linux Kernel进入后台,成为“中断/异常处理程序”
2、定制最小的Linux
二、进程管理
1、进程管理
(a)创建进程:fork()
复制一个进程
无休止创建进程,在shell可以使用“:”创建一个函数,使用“&”将进程放入后台
(b)进程替换int execve(const char* filename, char* const argv, char* const envp);
将当前运行的进程重置为另一个进程的初始状态
系统执行一个应用,第一条语句就是execve,系统使用该函数实现应用进程实现。
2、终止程序 _exit
立即结束进程 void _exit(int status)
(1)exit(0) stdlib.h中的函数
会调用atexit,atexit(fun)为注册结束函数fun
(2)_exit(0) glib的syscall wrapper
执行“exit_group”系统调用终止整个进程(所有线程)
不会调用atexit
(3)syscall(SYS_call, 0)
执行“exit”系统调用终止当前线程
不会调用atexit