对进程和线程的理解
进程的三个状态
就绪、运行、阻塞
(1) 就绪->执行
就绪状态是指进程获得了调度程序为之分配的除了CPU时间之外的其他必要资源,只要CPU时间一到位就可执行了。
处于就绪状态的进程,当进程调度程序为之分配了CPU后,该进程便由就绪状态转变成执行状态。
(2) 执行->就绪
处于执行状态的进程在其执行过程中,因分配给它的一个时间片已用完而不得不让出处理机,于是进程从执行状态转变成就绪状态。
(3) 执行->阻塞
正在执行的进程因等待某种事件发生而无法继续执行时,便从执行状态变成阻塞状态。
(4) 阻塞->就绪
处于阻塞状态的进程,若其等待的事件已经发生,于是进程由阻塞状态转变为就绪状态。
三个状态切换的条件:
就绪---->执行 调度
执行----->就绪 时间片到
执行------>等待 等待某个事件发生而睡眠
等待------->就绪 因等待事情发生而唤醒
参考:https://blog.csdn.net/baidu_35534327/article/details/54317945
线程的五个状态
创建、就绪、运行、阻塞、死亡
进程和线程的区别
操作系统给进程分配资源,一个进程有多个线程,线程共享进程内的资源。
对于共享变量,进程保存共享变量,每个线程保存变量的副本。
例子:
一个软件可以有多个进程,一个进程内有多个线程。
浏览器有多个进程,打开一个网页就是一个进程,dns解析、请求这些是一个个的线程。
开个QQ,就是开了一个进程;开了迅雷,也是开了一个进程。在QQ的这个进程里,传输文字开一个线程、传输语音开了一个线程、弹出对话框又开了一个线程。
所以运行某个软件,相当于开了一个进程。在这个软件运行的过程里(在这个进程里),多个工作支撑的完成QQ的运行,那么这“多个工作”分别是一个线程。
线程崩溃是否会造成进程崩溃
会。当一个线程向非法地址读取或者写入,无法确认这个操作是否会影响同一进程中的其它线程,所以只能是整个进程一起崩溃。