进程创建

进程的创建需要分解为两个步骤,fork与exec,fork负责复制父进程,exec负责将可执行文件去执行

fork的实际开销是复制父进程的页表与创建进程标识符,数据只有在被写入时才会复制数据,否则子进程依靠的是父进程的数据;

fork的实现依靠的是clone系统调用

进程上下文

进程因为要陷入内核状态而需要保存陷入内核与再用户空间的状态

线程

线程在linux中的实现是很特别的,从内核角度来看,并没有线程这种东西,线程只是一个与其他进程共享资源的进程,每一个线程都有自己的task_struct,但是和其他进程共享地址空间

内核线程

内核经常需要在后台执行一些操作,这种任务可以通过内核线程完成,内核线程与普通进程的区别在于内核线程没有独立的地址空间,他们只在内核空间运行

进程调度

用户抢占可以在系统返回用户空间与从中断返回用户空间进行