进程:
进程是操作系统对一个正在运行的程序的一种抽象,在一个系统上可以同时运行多个进程,而每个进程都好像在独占地使用硬件 每个进程独立不可见
fork产生子进程。每个子进程都是父进程的一个副本,它会拥有父进程的数据段,栈和堆的副本,并且共享父进程代码段。
exec产生子进程。把一个新的程序加载都自己的内存中,原来的数据段,栈,堆及代码就会被替换掉。
并发:
一个进程的指令和另一个进程的指令是交错执行(时间片)。
并行:
多个程序,同一个时刻,同时执行。
用户进程(用户态):
用户进程(或者说程序的执行实例)总会存在于用户空间中,但不能与其所在计算机的硬件进行交互。
如果想要与硬件交互,需要通过系统调用(会进行上下文切换),进入内核态。通过内核线程操作
内核进程(内核态):
内核可以与硬件交互,但却生存在内核空间中。
用户态和内核态:
内存依据有CPU提供的,可以让进程驻留的特权级别建立了两个特权状态---内核态和用户态。大部分时间CPU处于用户态,当进程发出一个系统调用时,内核会把CPU从用户态换到内核态。而后会让CPU执行内核函数。执行完毕,切换回用户态。
系统调用:
为了使用户进程使用内核功能,内核会暴露出一些接口以供他们使用。这些接口是用户进程使用内核功能的唯一手段。用户进程使用这些接口的行为称为