进程
正在运行中的程序就是一个进程,进程有自己独有的内存空间和文件等等资源,进程中的资源一般都是相互隔离的。
进程内部还可以包含有多个线程,线程基本没有自己独占的资源(独有栈除外),他与进程内的其他线程共享进程的资源。
调度
- Linux的调度系统 并不会区分线程和进程, 它会一视同仁。
- 进程和线程本身就有很多的共性,并且线程无法脱离进程独立存在。 一视同仁调度没有问题。
fork
- 调用这个方法,会从调用进程中复制出一个新的子进程, 子进程与父进程完全一模一样。
- 但是完全一样的父子进程一般没有意义,所以通常子进程还会调用exec方法来改变自己的执行代码。
- Linux的Shell程序就是一个进程,在里面输入各种命令,按下Enter按键就是Fork一个子进程,输入的命令字符串会作为参数传入子进程,子进程中调用exec方法将传入的参数执行,这样子进程就会执行不一样的逻辑。 同时子进程和父进程共用IO标准输出,所以可以看到子进程的结果会打印在Shell的控制台中。