当前位置: 首页 > wzjs >正文

北京平台网站建设费用网站建设意义必要性

北京平台网站建设费用,网站建设意义必要性,网站后台模板 仿cnzz,wordpress 访问插件目录 进程状态(宏观) Linux进程状态 进程状态的查看 进程状态(宏观) 为了了解Linux的进程状态,首先我们得了解进程状态,因为不仅仅是在Linux下有进程状态,macos和windows下都有进程状态,这里先解释的是一个宏观概念下的&#xff…

目录

   

进程状态(宏观)

  Linux进程状态

进程状态的查看


   

进程状态(宏观)

  为了了解Linux的进程状态,首先我们得了解进程状态,因为不仅仅是在Linux下有进程状态,macos和windows下都有进程状态,这里先解释的是一个宏观概念下的,然后每个操作系统都会根据自己的特性和需求设置具体的进程状态。

  

  如图所示这就是进程的流程图,其中执行也叫运行,这个地方是有有争议的,因为此时并不一定是在运行,而是在需要调度的时候处于进程队列中等待Cpu调度的过程。阻塞是当一些事件发生时,例如等待IO请求(一些对硬件进行换入换出的过程),等待竞争资源。其中scanf接口就是一个很好的说明,在代码执行到scanf的时候如果键盘中没有输入,那么cpu就会将进程从等待调度的队列中移动到键盘的等待队列中直到键盘的输入,这个过程就是阻塞。当键盘输入以后进程会被cpu重新移动到等待调度的队列中,这里需要说明一点的是,cpu在执行进程的时候并不是将一个进场执行完再进行下一个进程,而是通过给每一个进程分配一个时间片,当一个进程执行完时间片的时间就进行调度乱转,这是在单cpu的情况下。这种多个进程在一个cpu采用进程切换的方式在一段时间让多个进程都得到推进的行为叫做并发。还有一种方式是并行,即在多个cpu下真正做到多个进程同时运行。我们一般的计算机都使用的是并发的模式,因为cpu比较昂贵,而且个人不需要用的多cpu。那么有的人会问了,如果使用并发的模式为什么我们看不出软件会停止,那是因为cpu处理的时间很快,我们几乎感觉不到,但是有一些情况下如果你的手机启动了很多app你就会发现手机变卡顿了,那么这就是因为cpu进程过多,执行到app时所需要的时间增加,这样你就能看出来卡顿了。阻塞时状态为了减小cpu的压力,这样巧妙地操作使得个人计算机不需要购买太好的cpu就能够获得流程的运行,使一个cpu能够做更多的事情。运行和阻塞的本质其实都是让不同的进程处在不同硬件的等待队列之中!阻塞还有一种挂起状态,为了缓和内存紧张的情况,而将内存中处于阻塞状态的进程换至外存(硬盘)上,使进程又处于一种有别于阻塞状态的新状态。因为即使该进程所期待的事件发生,该进程仍不具备执行条件而不能进入就绪队列,称这种状态为挂起状态。当事件发生时,挂起状态会变为阻塞静止状态然后再进入运行状态等待系统调度。

  Linux进程状态

  有了对进程状态的了解,接下来我们可以对Linux的进程状态进行分析了。Linux进程状态在大体是遵循上面概念的,但是会在一些部分具体细分一些其他的状态。Linux分为一下几种状态,它们存在于一个叫做task_state_array[]的结构体中

static const char *const task_state_array[] = {
"R (running)", /*0 */
"S (sleeping)", /*1 */
"D (disk sleep)", /*2 */
"T (stopped)", /*4 */
"t (tracing stop)", /*8 */
"X (dead)", /*16 */
"Z (zombie)", /*32 */
};
R运⾏状态(running): 并不意味着进程⼀定在运⾏中,它表明进程要么是在运⾏中要么在运⾏
队列⾥。
S睡眠状态(sleeping): 意味着进程在等待事件完成(这⾥的睡眠有时候也叫做可中断睡眠
(interruptible sleep))。
D磁盘休眠状态(Disk sleep)有时候也叫不可中断睡眠状态(uninterruptible sleep),在这个
状态的进程通常会等待IO的结束。
T停⽌状态(stopped): 可以通过发送 SIGSTOP 信号给进程来停⽌(T)进程。这个被暂停的
进程可以通过发送 SIGCONT 信号让进程继续运⾏。
X死亡状态(dead):这个状态只是⼀个返回状态,你不会在任务列表⾥看到这个状态。

进程状态的查看

 我们可以通过ps来查看进程的状态以及进程的信息:ps aux / ps axj 命令

a:显⽰⼀个终端所有的进程,包括其他⽤⼾的进程。
x:显⽰没有控制终端的进程,例如后台运⾏的守护进程。
j:显⽰进程归属的进程组ID、会话ID、⽗进程ID,以及与作业控制相关的信息
u:以⽤⼾为中⼼的格式显⽰进程信息,提供进程的详细信息,如⽤⼾、CPU和内存使⽤情况等
这是我写的一个循环代码,接着我在另一个终端查看这个进程的信息
int main()
{int i = 0; while(1)
{ i = 1;
}return 0;
}

命令:ps ajx | head -1 && ps ajx |grep code

  不难看出此时code进程是正在运行的,状态为R+。那么如果这里我想要输入但是我还没有输入,进程就会在休眠状态S,也就是阻塞状态。

int main()
{int i = 0;cin>>i;cout<<i<<endl;return 0;
}

  此时code进程确实是在休眠状态的。

  D状态时特殊的磁盘休眠状态,这种状态下的进程正在等待某个硬件资源(通常是磁盘 I/O 操作)完成,且无法被信号中断,这是一种瞬发的状态,是几乎不会被查看到的,如果系统中出现大量 D 状态进程且长时间无法恢复,通常是系统面临严重问题的信号,甚至可能即将崩溃。

  在Linux操作系统中代码如果不执行了也就是进程退出,首先会立即释放对应程序的代码数据信息,会将自己的退出码保留在自己的PCB中,这个PCB不会被释放,必须被OS管理起来,方便未来用户获取进程的退出信息,此时进程的状态就会被设置为Z,僵尸状态,这就类似与一个运动的人突然倒下猝死 ->法医来检测 ->抬走宣告死亡,其中Z是法医检测报告的结果。每个进程在结束时会先处于僵尸状态,为了维持退出信息,方便父进程和操作系统来查询。这里用一个简单的父子进程来查看子进程结束以后的僵尸状态

int main()
{int cnt = 10;pid_t id = fork();if(id == 0){while(cnt){cout<<"子进程 pid: "<<getpid()<<" ppid :"<<getppid()<<endl;cnt--;sleep(1);}}else{while(1){cout<<"父进程 pid: "<<getpid()<<" ppid :"<<getppid()<<endl;sleep(1);}} 
}

    可以看到子进程在运行10次以后就结束了,但是父进程还没有结束,此时子进程就会进入僵尸状态由S变为Z,如果没有人管就会一直是僵尸状态,必须等待父进程获取信息并回收它才会真正的结束变为X状态。 

  

  那么如果一个父进程先结束了,但是子进程还存在着会发生声什么,此时子进程就会变成孤儿进程, 那么是不是就无法结束这个进程然后内存泄露了?这肯定是不对的,此时OS会自动去领养这个孤儿然后作为它的父进程管理它。

  这里将父进程循环十次然后就结束了,结束的一瞬间会发现子进程的ppid变为1了,这个1其实就是操作系统。此时直接退出是退出不了这个子进程的,需要使用命令 kill -9 10350才可以退出这个进程。

  本文讲的进程状态就到这里了,下一文会讲到进程的优先级,理解为什么需要进程优先级和怎么做到这个优先级,


文章转载自:

http://FaTLaY3F.dyhLm.cn
http://JMGuXOSJ.dyhLm.cn
http://HKkaTML9.dyhLm.cn
http://RLSsqH11.dyhLm.cn
http://sEymr6v7.dyhLm.cn
http://YD1XIxEA.dyhLm.cn
http://iCBMwHpV.dyhLm.cn
http://Rr442IZ5.dyhLm.cn
http://E6ulgqpR.dyhLm.cn
http://et1W8InZ.dyhLm.cn
http://bjfrxmCl.dyhLm.cn
http://chf4thJ6.dyhLm.cn
http://zHVg9o81.dyhLm.cn
http://RqfRKvF4.dyhLm.cn
http://KzgERSgy.dyhLm.cn
http://H6IwLKgD.dyhLm.cn
http://I9KvuJt8.dyhLm.cn
http://NXUseVJ9.dyhLm.cn
http://bLUNmjQ7.dyhLm.cn
http://tcM1Leix.dyhLm.cn
http://IqFVRdAn.dyhLm.cn
http://6nGu2r06.dyhLm.cn
http://XgUv3KHQ.dyhLm.cn
http://nHUcwBMb.dyhLm.cn
http://fM8MWwav.dyhLm.cn
http://dOy9oYgV.dyhLm.cn
http://CmTwO1x0.dyhLm.cn
http://LQQ0ugcG.dyhLm.cn
http://pXRUrLNl.dyhLm.cn
http://ZGjMHUJg.dyhLm.cn
http://www.dtcms.com/wzjs/672707.html

相关文章:

  • 网站备案更换主体建设银行正式宣布
  • 建设网站的公司汇总自己怎么开电商平台
  • 公司有些网站打不开鲜花网站建设源代码
  • 建筑工程网站建设方案网站三要素怎么做
  • 承德建设局网站域名服务器搭建
  • 哪些网站做企业招聘不要花钱电商平台开发需要哪些技术人员
  • 网上书店网站建设的说明书广州黄埔做网站公司
  • 莒县网站建设公司aspnet网站开发技术
  • 网站开发哪些专业网站怎么添加外链
  • 0基础网站搭建教程中企动力公司是做什么的
  • 网站内容编辑怎么做舆情报告总结
  • .net电商网站全站开发网站制作 南京
  • 网站 改版方案怎么添加wordpress模板文件夹
  • 免费网站加速软件如何做网站的自由撰稿人
  • 百度收录了我新网站的2篇文章了网站建设合同黑客攻击
  • 网站建设推销员话术河南网站优化外包服务
  • perl网站建设网站广告是内容营销吗
  • 做家教网站资质海淀中小企业网站开发
  • cms 官方网站WordPress商品相册幻灯片
  • 自己也可以免费轻松创建一个网站做网站多少分辨率好
  • 福州电商网站建设手机网站建设讯息
  • 深圳品牌网站设计电话wordpress实现注册功能
  • 网上做试卷的网站中国建设工程安全管理协会网站
  • 建设购物网站论文百度怎样建设网站
  • 网站建设开发软件有哪些方面广告拍摄公司
  • 搜索引擎 网站推广手机搭建wordpress 不root
  • 免费建设展示网站从事高端网站建设
  • 全国工程建设行业优秀网站自己做文字壁纸的网站
  • 十大设计创意网站图书馆网站建设的要求
  • 要如何自己创建一个网站安阳区号座机22开头哪的电话