进程

进程具有三种基本状态:        

1、就绪状态。某些进程“万事俱备”(必要资源),只差CPU。(就绪队列)      

 2、执行状态。某进程占有CPU并在CPU上执行其程序。      

 3、阻塞状态。某些进程由于某种原因不能继续运行下去,等待处 理问题。也称为等待状态或封锁状态。如:请求I/O。(多个等待队列)

 

 

三种状态互相切换的原因:

运行--->就绪:1. 时间片用完了

                        2.被更高优先级的进程抢占,被迫让出CPU

 就绪--->阻塞:不可能发生,因为就绪根本就没运行就谈不上阻塞  。

 阻塞--->运行:不可能发生,运行的时候先要就绪才行,不能跨状态。

就绪--->运行:CPU本该执行的时间片跑完了,就转到就绪态的进程里面找合适的运行(给CPU)

运行--->阻塞:发生了等待事件。比如I/O请求。

阻塞--->就绪:所等待的事情已经发生,先进入就绪态。

 

 

为什么会有线程?

每个进程都有自己的地址空间,即进程空间,在网络或多用户换机下,一个服务器通常需要接收大量不确定数量用户的并发请求,为每一个请求都创建一个进程显然行不通(系统开销大响应用户请求效率低),因此操作系统中线程概念被引进。
线程的执行过程是线性的,尽管中间会发生中断或者暂停,但是进程所拥有的资源只为改线状执行过程服务,一旦发生线程切换,这些资源需要被保护起来。
进程分为单线程进程和多线程进程,单线程进程宏观来看也是线性执行过程,微观上只有单一的执行过程。多线程进程宏观是线性的,微观上多个执行操作。
线程的改变只代表CPU的执行过程的改变,而没有发生进程所拥有的资源的变化。

 

 

进程线程的区别:

(1)地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。

(2)资源拥有:同一进程内的线程共享本进程的资源如内存、I/O、cpu等,但是进程之间的资源是独立的。

(3)一个进程崩溃后,在保护模式下不会对其他进程产生影响,但是一个线程崩溃整个进程都死掉。所以多进程要比多线程健壮。

(4)进程切换时,消耗的资源大,效率高。所以涉及到频繁的切换时,使用线程要好于进程。同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程。

(5)执行过程:每个独立的进程程有一个程序运行的入口、顺序执行序列和程序入口。但是线程不能独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。

(6)线程是处理器调度的基本单位,但是进程不是。

(7)两者均可并发执行。

posted @   Relliu  阅读(178)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示