7.2.1 - 并发多线程 进程理论知识
一 什么是进程
进程:正在进行的一个过程或者说一个任务。而负责执行任务则是cpu。
二 进程与程序的区别
程序仅仅只是一堆代码而已,而进程指的是程序的运行过程。
举例:
我在家做韭菜炒鸡蛋,我有做韭菜炒鸡蛋食谱,厨房里有所需的原料:鸡蛋、韭菜,蒜泥,大葱,生姜等。
1. 韭菜炒鸡蛋食谱就是程序。
2. 而做韭菜炒鸡蛋的各种原材料就是数据输入。
3. 进程就是厨师阅读食谱、取来各种原料以及炒韭菜炒鸡蛋等一系列动作的总和
需要强调的是:同一个程序执行两次,那也是两个进程,比如你打开两个QQ,两个QQ是独立的。
三 并发与并行
无论是并行还是并发,在用户看来都是'同时'运行的,不管是进程还是线程,都只是一个任务而已,真是干活的是cpu,cpu来做这些任务,而一个cpu同一时刻只能执行一个任务
一 并发:是伪并行,即看起来是同时运行。单个cpu+多道技术就可以实现并发
二 并行:同时运行,只有具备多个cpu才能实现并行
四 进程的状态
tail -f access.log |grep '404'
执行程序tail,开启一个子进程,执行程序grep,开启另外一个子进程,两个进程之间基于管道'|'通讯,将tail的结果作为grep的输入。
进程grep在等待输入(即I/O)时的状态称为阻塞,此时grep命令都无法运行
其实在两种情况下会导致一个进程在逻辑上不能运行,
-
进程挂起是自身原因,遇到I/O阻塞,便要让出CPU让其他进程去执行,这样保证CPU一直在工作
-
与进程无关,是操作系统层面,可能会因为一个进程占用时间过多,或者优先级等原因,而调用其他的进程去使用CPU。
因而一个进程由三种状态