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

网站建设xywlcnseo难不难学

网站建设xywlcn,seo难不难学,简历表格 个人简历电子版,cnc加工订单网Linux进程状态前言阻塞挂起Linux进程状态R运行状态S睡眠状态D磁盘休眠状态T停止状态X死亡状态Z僵尸状态僵尸进程的总结前言 在介绍Linux的进程状态之前#xff0c;我们先做一个小调查#xff1a; 正在运行的程序是一直在运行吗#xff1f;或者说正在运行的程序一直在被cpu处… Linux进程状态前言阻塞挂起Linux进程状态R运行状态S睡眠状态D磁盘休眠状态T停止状态X死亡状态Z僵尸状态僵尸进程的总结前言 在介绍Linux的进程状态之前我们先做一个小调查 正在运行的程序是一直在运行吗或者说正在运行的程序一直在被cpu处理吗 答案是当然不是 正在运行的程序并不是一直在被cpu执行的如果cpu是把某个程序执行完在执行下一个程序的话效率是非常低的同时我们也无法完成边听歌边打游戏的操作cpu采用的是分时的操作就是说对于每一个程序cpu都会只执行一小段时间到时间了就切换去执行下一个程序由于cpu的切换时间太快了我们人类是无法感受出来的这就会造成我们感官上认为多个程序在同一时间运行但是实际上cpu还是一个一个的执行程序的 如果我们在内存中加载多个程序的话cpu在多个程序之间就会调度不过来在我们用户层面就会发现程序会变得卡顿 同时再具体介绍Linux进程状态之前我们先来介绍两个概念阻塞和挂起 阻塞 概念进程因为等待某种条件就绪而导致一种不推进的状态 这个概念很抽象简单来说就是进程卡住了 那么进程为什么要阻塞呢 阻塞一定是为了等待某种资源换而言之进程要等待别的进程使用完资源后自己再去使用 因此我们可以重新定义一下阻塞的概念 阻塞: 进程为了等待某种资源就绪的过程 我们下面举个具体的例子来帮助我们理解阻塞 就比如此时有个cpu和进程 cpu正在执行该进程的指令时发现该进程需要向屏幕上输出某些资源cpu就对进程说“进程啊现在你需要使用屏幕资源但是你又没有你先去向屏幕申请一下等你拿到了屏幕资源时再来找我”进程答应了于是cpu就去处理下一个进程了那么这个进程是如何去申请屏幕资源的 我们知道os是款搞管理的软件os自然也能管理网卡、屏幕、键盘等硬件资源但是os并不是直接管理这些硬件的在Linux中OS 先描述 出每个硬件基本信息并且将这些基本信息放入一个结构体中 然后再利用某种数据结构将这些结构体再组织起来假设使用的是链表这种数据结构那么OS对于这些硬件的管理是不是就是对链表的增删查改这不就很好的管理起硬件资源了 既然硬件很好的管理起来了那么这些硬件是如何知道那些进程在向它申请空间的 实际上在存储硬件信息的结构体中还有一个队列 这个队列就专门用来记录需要申请该硬件资源的进程的pcb并不是存储进程的代码数据而是pcb因为进程也是由OS管理的OS的管理是不直接管理被管理对象本身的而是将进程的信息抽象在pcb结构体中os通过管理pcb来达到管理对应进程 比如说现在我的进程需要申请使用网卡资源那么在存储网卡信息的结构体中的队列就会存储该进程的pcb如果进程需要申请屏幕资源那么在存储屏幕信息的结构体中的队列就会存储该对象的pcb 整个内存中有许多进程可能不止我这一个进程需要申请网卡资源因此我们的进程在申请网卡资源的时候需要在申请网卡资源的队列中进行等待此时进程并没有被cpu调度这个在网卡资源队列中等待资源的行为就是阻塞 当这个等待的进程等到需要的资源时该进程的pcb就会加载进cpu队列中等待cpu的处理 挂起 挂起状态可以说是一个特殊的阻塞状态 我们具体用一个例子来说明现在我们的进程需要使用网卡资源cpu就会让该进程去先申请好了网卡资源再来被cpu执行于是该进程就加入了网卡资源的队列中等待网卡资源的就绪此时进程就是阻塞状态但是此时内存空间有点不足了OS在路过的时候看到我们的进程还在等待网卡资源就会将我们进程在内存中的代码数据暂时转移到磁盘中去以此来缓解此时的内存压力虽然该进程的代码数据被转移到磁盘中去了但是OS并不会销毁该进程对应的pcb因此OS还是能管理到该进程的此时进程处于的这种状态就叫做挂起状态 当该进程分配网卡资源时OS又会将该进程的代码数据从外存调回内存 Linux进程状态 为了弄明白正在运行的进程是什么意思我们需要知道进程的不同状态。一个进程可以有几个状态在Linux内核里进程有时候也叫做任务。 下面的状态在kernel源代码里定义 /* * The task state array is a strange bitmap of * reasons to sleep. Thus running is zero, and * you can test for combinations of others with * simple bit tests. */ 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运行状态 R运行状态并不一定表示进程正在被cpu处理位于cpu的运行队列中的进程也可以被称为处于运行状态 S睡眠状态 S睡眠状态进程为了等待某种资源而处于等待队列当中实际上就是阻塞状态也被称为浅睡眠状态或可中断睡眠该状态下的进程可以被杀掉 我们可以写一断程序来观察S状态 我们可以利用ps axj或者ps aux 来查看当前进程的运行状态 我们可以发现程序确实是存在于S状态因为cpu在处理到printf语句时需要该进程提供屏幕资源该进程就会离开cpu去屏幕资源的等待队列中等待屏幕资源的分配为此我们能看到进程处于S状态该状态下的进程是可以被杀掉的我们利用ctrlc或者kill -9 pid来杀掉进程 我们在上面的时候有提到进程是会被cpu执行的那么我们为什么利用ps -axj命令显示出来的状态是S呢而不是R主要是因为cpu的处理速度非常快当我们的进程把屏幕资源准备好过后cpu瞬间就完成了printf指令然后又来到了printf进程又要去屏幕资源的队列中等待分配屏幕资源等待是需要花时间的而这个等待时间与cpu处理时间比起来简直大了不知多少倍就这么说在1s的时间中99.9%的时间花费在了等待资源分配的情况下实际被cpu处理的时间不到0.1%;因此我们利用ps查看到的进程大多数时间都是处于S状态极少数时间处于R状态也就是说理论上我们还是可以捕获到进程处于R状态的只不过成功几率很低 除了这种拼手速作法捕获R状态那么有没有什么办法让我们的进程处于R状态的几率增大呢 当然可以我们只要不在程序中申请资源比如上面的进程是因为要申请屏幕资源我们直接屏蔽掉printf就好了 D磁盘休眠状态 D磁盘休眠状态:就是在阻塞状态的基础上该进程不能被杀掉只能等待该进程分配到资源然后进程自然醒来或者重启计算机不然处于D状态的进程会一直等待资源分配我们利用kill命令也无法将其杀死因此D状态也被称为不可中断状态一般情况下我们的计算机都不会出现这情况一旦有进程处于这个状态那么说明我们的计算机离宕机不远了 T停止状态 T停止状态可以利用kill命令向进程发送SIGSTOP信号来暂停进程向进程发送SIGCONT信号让进程继续运行 下面我们通过这个程序来观察T状态 我们也可以发送继续的信号让进程继续运行 我们可以发现经过暂停过后的进程在恢复原状态时状态后面没有了号 那么这个号表示什么呢 如果一个进程的状态后面还跟了个号那么表明这个进程是个前台进程我们此时无法输入Shell命令但是我们可以通过Ctrlc来杀掉该进程或者利用命令kill -9 pid 如果一个进程的状态后面没有号表明这个进程是后台进程此时我们可以正常输入Shell命令但是在后台该进程也在运行此时我们输入Ctrlc就没有什么作用了只能通过kill -9 pid的方式来杀掉该进程 我们在调试程序的时候如果我们不打断点直接一个f5编译器就会跑完整段代码但是当我们在中间打了断点过后再按f5程序就会在断点处停下来本质上打断点就是让进程处于暂停状态 我们可以调试刚才的代码来测试 t与T一样也是暂停状态 X死亡状态 X死亡状态这个状态只是一个返回状态你不会在任务列表里看到这个状态 Z僵尸状态 Z僵尸状态进程一般情况下并不会直接被杀掉因为当子进程完成它的任务过后需要向父进程报告它的工作完成的怎么样而子进程是通过返回进程退出码来告诉父进程的如果父进程接受了该码子进程才会被释放如果父进程没有接受子进程的进程退出码那么子进程就会一直占用着内存资源得不到释放此时子进程的这种状态就是僵尸状态 僵尸进程会以终止状态保持在进程表中并且会一直在等待父进程读取退出状态代码。 下面我们通过一段代码来演示僵尸进程 主要是因为在父进程中我们并没有接受子进程的进程退出码导致子进程无法正常释放空间 僵尸进程的总结 1、僵尸进程存在的意义就是告诉父进程你交给我的任务我子进程工作的怎么样如果父进程一直不读取子进程的进程退出码的话子进程就会变成僵尸进程 2、维护状态本身也是需要存储数据的也属于进程的基本信息所以也保存在pcb中如果Z状态一直不退出pcb一直都需要维护 3、如果一个父进程创建了很多子进程但是父进程就是不回收子进程那么在内存中就会存在大量僵尸进程这些僵尸进程的代码数据也是需要存储的也是需要消耗大量内存的如果我们一直不回收僵尸进程就会一直占这这些内存会造成内存泄漏
http://www.tj-hxxt.cn/news/223930.html

相关文章:

  • 成都网站外包优化公司银川网站建站公司
  • 陕西响应式网站建设wordpress分类目录404
  • 下列关于网站开发中网页上传简约风ppt模板免费
  • 石家庄网站建设费用广州网络营销推广公司
  • asp.net网站开发模板蒲公英路由器登录地址
  • 培训网站系统建设手机建站模版
  • 企业网站推广在哪里办广州360公司总部
  • 四川建设主管部门网站网站建设思路设计
  • 什么网站可以接设计方案国外家具设计网站
  • 能不能同行网站做站长统计个人做网站 私活
  • 企业网站php开源系统杭州专业网站建设公司哪家好
  • 中国建设银行悦生活网站食品公司网站设计项目
  • 网站分类导航代码做旅游网站的目的和意义
  • 小米网站开发语言免费设计app的网站建设
  • 二七免费网站建设百度快照收录
  • vps可以用了做网站吗网站设计公司收费标准
  • 有网站怎么开发app视频网站开发php
  • 网页制作正版网站湖南优化公司
  • 株洲网站建设 株洲网站制作唐山企业网站模板建站
  • 沈阳企业网站优化排名方案网站加速
  • 网站建设 个人服务器seo关键词首页排名
  • 茶网站建设实训报告全国最大房产网络平台
  • 科普网站建设经验wordpress网址插件
  • 扬中网站建设公司班级网站设计
  • 谷歌seo网站运营怎么注册微网站吗
  • 电脑做网站用word网站站建设
  • 保山做网站建设网站备案 类型
  • php做的汽车销售网站网站建设模块下载
  • 网页制作免费网站德阳做网站
  • 做短裙的视频网站3705房产网