1.进程的概念
平时在使用电脑的过程中,可能会登陆QQ,一边开着网易云音乐,一边开着chrome浏览器或者火狐浏览器在网页上看视频,甚至还会打开word软件,编辑文档。
假设现在电脑上同时打开这四个程序,QQ,网易云音乐,chrome浏览器,word软件,此时对电脑主机来说,CPU(中央处理器)会在这打开的四个程序中依次循环切换。
现在一颗主流的CPU的主频为2.5Ghz,其意思就是说在1秒钟内,这颗CPU可以在上述四个程序中来回切换2.5乘以10的9次方次
所以在使用电脑的人看来,电脑是在同时执行这四个程序。
在CPU运行的过程中,每一个CPU时间点内,一核心cpu只能运行一个进程。
也就是说在某个CPU时间片上,一个CPU核心如果切换到QQ程序时,其余三个程序会被CPU暂停,也即阻塞,不过这个阻塞的时间间隔很短。
同样的,在某个时刻,当chrome浏览器在运行的时候,其余的三个程序也会被暂停。
当程序切换的时候,需要一个媒介来保存程序的运行,暂停,恢复等信息,这就个媒介就是进程。
进程的概念
- 进程是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统的结构基础。
- 进程是系统进行资源分配和调度的一个独立单位。
-
进程一般由程序,数据集,进程控制块三部分组成:
程序用来描述进程要完成哪些功能以及如何完成
数据集是程序在执行过程中所需要使用的资源
进程控制块用来记录进程的外部特征,描述进程的执行变化过程,操作系统可以利用它来控制和管理进程,控制块是系统感知进程存在的唯一标志
2.线程的概念
假设在用浏览器打开一个网页,这时浏览器一边把网页下载到硬盘上,浏览器一边对网页进行渲染,生成用户看到网页。
在这同时,浏览器还要与网页服务器保持连接。在这个过程中,浏览器会生成多个进程,同时会在这多个进程之间来回切换。
这多个进程的协作涉及到进程间通信问题,进程间不停的切换造成主机性能上的损失。
这时就需要一种机制来保存和恢复进程间的通信内容,减少通信所带来的性能损耗,这种机制就是线程
线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一个进程在一个时间点只能服务一个程序的缺陷,拿到进程内并发成为可能。
线程也叫轻量级进程 ,是一个基本的CPU执行单元,也是程序执行过程中的最小单元
线程由线程ID,程序讲数器,寄存器集合和堆栈共同组成。
线程是进程的一个实体,是cpu调度和分派的基本单位,是比进程更小的能独立运行的基本单位。
线程的引入减小了程序 并发执行时的开销,提高了操作系统的并发性能。线程没有自己的系统资源。
3.进程与线程的关系
1.一个线程只能属于一个进程 ,而一个进程可以有多个线程,但至少有一个线程
2.资源分配给进程,同一个进程的所有线程共享该进程的所有资源
3.CPU的资源分给线程,即真正在CPU上运行的是线程
4.进程拥有它自己的独立空间。线程是通过进程创建的,在进程之间共享该进程的内存空间
5.线程直接访问进程的数据块,进程是将父进程中的数据再复制出一份使用
6.进程中的线程间是可以直接通信的,子进程与父进程不能直接通信,但可以通过队列管道相互交流数据
7.一个新的线程创建很容易,一个新的进程创建需要从父进程里重新拷贝父进程的所有数据,创建进程会耗费系统资源
8.一个进程中的多线程间可以控制其它进程,进程只能控制它的子进程
9.改变主线程优先级会影响线程在进程中的行为,改变父进程不会影响子进程
4.进程与线程的切换原则
首先要明白的是,进程的切换者是操作系统
4.1 CPU遇到时间片会切换进程
在现代操作系统中,不可能只运行一个程序。当操作系统中运行了多个程序的时候,CPU不可能一直执行某一个程序,
CPU会在操作系统运行的多个程序间来回进行切换,这个CPU的时间片是非常短的。
4.2 程序遇到IO操作的时候
例如,在系统上运行了两个程序,程序A和程序B,当程序A在请求某个网页的时候,由于网络的延迟,网页从服务器上响应到本地缓存中需要一些时间
这个时间相对于CPU来说是很长的,此时CPU就会切换到程序B运行,
4.3 程序优先级切换
在操作系统中,通常每生成一个进程,这个进程都会有一个执行的优先级。
例如在linux系统中,可以使用renice命令来调整进程的运行优先级。
在某一个时刻,操作系统中运行多个程序时,哪个进程的运行优先级越高,这个进程就先执行。