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

互联网站建设机构wordpress登陆网址

互联网站建设机构,wordpress登陆网址,常用素材网站,做网站挂谷歌广告赚钱吗个人主页点击直达#xff1a;小白不是程序媛 Linux专栏#xff1a;Linux系统化学习 目录 操作系统进程的状态 运行状态 阻塞状态 进程阻塞的现象 挂起阻塞状态 Linux进程状态 Linux内核源代码怎么说 R#xff08;running状态#xff09;运行状态 S#xff08;sl… 个人主页点击直达小白不是程序媛 Linux专栏Linux系统化学习 目录 操作系统进程的状态 运行状态 阻塞状态 进程阻塞的现象 挂起阻塞状态 Linux进程状态 Linux内核源代码怎么说 Rrunning状态运行状态 Ssleeping休眠状态  Ddesk sleep磁盘休眠  Tstopped) ttracing stop xdead) 僵尸进程zombie 僵尸进程的危害  孤儿进程 前台进程和后台进程 操作系统进程的状态  进程状态一个进程的生命周期可以划分为一组状态这些状态刻画了整个进程。进程状态即体现一个进程的生命状态。 一个可执行程序加载到内存中操作系统会创建一个PCB里面存放着各种属性、PID、PPID等进程的状态也就是一个字段/变量在PCB中不同的值代表不同的状态。 操作系统进程的主要状态包括运行状态、阻塞状态、挂起阻塞状态 运行状态 当我们的可执行程序加载到内存中需要CPU进行数据运算时会从内存调度到CPU中当然CPU的处理数据的能力是有限的而当有很多的程序被调度时候会将每个可执行程序的PCB使用链表建模依次等待CPU的调度也就是我们之前提到的进程在”排队“因此只要在CPU运行的队列中的进程都是运行状态。 阻塞状态 我们自己编写的可执行程序难免会对系统中的资源进行访问像我们需要使用输入函数cin/scanf从键盘输入一些数据时候就是可执行程序从键盘中读取数据那么我们一直不输入数据键盘中的数据就一直没有准备就绪也就是进程访问的资源没有就绪那么后序的代码就执行不了了。 当然我们的操作系统此时可不止这一个进程需要对系统中某个设备的资源进行访问这就有需要一个队列建模需要访问资源的进程的PCB此时这个队列就不再等待CPU调度的队列中了因此我们把进程PCB链入非CPU的运行队列而把PCB链入到各种设备所维护的等待队列当中去等待资源就绪时的状态叫做阻塞状态。 进程的PCB从CPU调度的等待队列中转移到各种设备的等待队列中叫做该进程阻塞了。当从设备中拿到数据是PCB会从设备的等待队列转移到CPU的调度队列这个过程叫做将该进程唤醒。 进程阻塞的现象 进程卡住了PCB不在运行状态中状态不是running进程不在被CPU调度 挂起阻塞状态 挂起阻塞状态时阻塞状态的一种特殊情况当我们的PCB在阻塞状态时操作系统的内存严重不足时会将次PCB对应加载到内存中的程序移出内存放回磁盘当PCB读取到数据时需要被CPU调度时又将程序加载到内存中。 总结 进程状态变化的本质 更改PCB中status的整数变量将PCB链入不同的队列中只和进程的PCB有关和进程的代码数据无关。 Linux进程状态 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 */ }; 1 #includestdio.h2 int main()3 {4 while(1)5 {6 printf(我是一个进程\n); 7 }8 return 0;9 }因为我们的进程在疯狂的printf时本质是往显示器上面打印进程是在内存中是将内存中的数据向外刷新当刷新时显示器不一定准备好因此在程序运行中大部分是S状态。 Rrunning状态运行状态 1 #includestdio.h2 int main()3 {4 while(1)5 {6 // printf(我是一个进程\n); 7 } 8 return 0; 9 } 这样我们就可以查到R状态的进程了 Ssleeping休眠状态  浅度睡眠 1 #includestdio.h2 #includeunistd.h3 int main()4 5 {6 int a0;7 printf(请输入一个数字);8 scanf(%d,a);9 printf(%d\n,a); 10 11 return 0;12 }浅度休眠状态可以被终止可以被kill掉并且会对外部状态做出相应。 Ddesk sleep磁盘休眠  深度睡眠 针对磁盘来设计的不可能被kill掉操作系统也不可以我们很难查到D状态如果被用户查到计算机几乎快要宕机了。 Tstopped) 暂停一个进程。 ttracing stop 适用于我们debug模式下调试代码追踪我们的进程暂停下来。 等待软件条件。 xdead) 这个状态只是一个返回状态不会查看到这个进程的。 僵尸进程zombie zzombie 可执行程序加载到内存中成为进程操作系统创建PCB内存里的进程肯定是完成某种任务得到某种结果的当进程退出时总要返回一些信息告诉操作系统任务完成的怎样就像我们写的代码总要在最后一行return 0退出信息会由操作系统写入到PCB中此时内存中进程的代码和数据被释放但是不允许PCB释放需要操作系统读取PCB进程的退出信息得知进程退出的原因后PCB才会被释放。因此当进程被释放后而PCB没有被释放的这段空窗期成为僵尸进程。 僵死状态Zombies是一个比较特殊的状态。当进程退出并且父进程使用wait()系统调用,后面讲没有读取到子进程退出的返回代码时就会产生僵死(尸)进程僵死进程会以终止状态保持在进程表中并且会一直在等待父进程读取退出状态代码。所以只要子进程退出父进程还在运行但父进程没有读取子进程状态子进程进入Z状态 僵尸状态演示 1 #includestdio.h2 #includeunistd.h3 #includestdlib.h4 int main()5 {6 pid_t id fork();7 if(id0)8 {9 return 1;10 }11 else if(id0)12 {13 int n5;14 while(n)15 {16 printf(我是一个子进程:%d\n,n--);17 sleep(1);18 }19 exit(2); 20 }21 else{22 while(1)23 {24 printf(我是父进程\n);25 sleep(1);26 }27 }28 return 0;29 }僵尸进程的危害  进程的退出状态必须被维持下去因为他要告诉关心它的进程父进程你交给我的任务我办的怎么样了。可父进程如果一直不读取那子进程就一直处于Z状态是的维护退出状态本身就是要用数据维护也属于进程基本信息所以保存在task_struct(PCB)中换句话说Z状态一直不退出PCB一直都要维护是的那一个父进程创建了很多子进程就是不回收是不是就会造成内存资源的浪费是的因为数据结构对象本身就要占用内存想想C中定义一个结构体变量对象是要在内存的某个位置进行开辟空间内存泄漏 孤儿进程 孤儿进程和僵尸进程刚好相反父进程先退出子进程称之为”孤儿进程“。孤儿进程会被系统进程”领养”最中由init进程回收init进程为我们所有进程的起源。 孤儿进程演示 ​1 #includestdio.h2 #includeunistd.h3 #includestdlib.h4 int main()5 {6 pid_t id fork();7 if(id0)8 {9 return 1;10 }11 else if(id0)12 {13 while(1)14 {15 printf(我是一个子进程\n);16 sleep(1); 17 }18 }19 else{20 int n5;21 while(n)22 {23 printf(我是一个父进程:%d\n,n--);24 sleep(1);25 }26 exit(2);27 }28 return 0;29 }​ 前台进程和后台进程  当我们运行我们编译好的代码后无论输入任何指令系统都不会有任何反应但是可以通过CtrlC来终止 。并且状态带有 这就是前台状态。 在编译好的代码后加上操作符进行执行代码不仅可以执行而且输入的指令也可以识别但是不可以使用CTRLC终止掉这就是后台状态。  今天对Linux下进程的状态的分享到这就结束了希望大家读完后有很大的收获也可以在评论区点评文章中的内容和分享自己的看法。您三连的支持就是我前进的动力感谢大家的支持
http://www.w-s-a.com/news/670526/

相关文章:

  • 青县网站建设今天国际大事新闻
  • 深圳正规网站制作哪里好怎样优化网络
  • 米拓网站建设教程dw成品网站成品视频教学
  • 用jsp做的网站源代码天门网站网站建设
  • 百度如何把网站做链接地址有没有资源可以在线观看
  • 淮安做网站找哪家好电子商务网站建设规划书的内容
  • 开发网站建设用什么框架php黄页系统
  • 聊城制作网站全球十大电商平台排名
  • 用什么来网站开发好mega menu wordpress
  • 深圳制作网站有用吗wordpress的主题
  • 网站的规划与创建天津市南开区网站开发有限公司
  • 免备案网站主机建站哪个平台好
  • python做网站 不适合单页营销分享网站
  • 珠海市研发网站建设建设网站挣钱
  • 阿里巴巴国际站特点做wps的网站赚钱
  • wordpress更换域名后网站打不开宜昌建设银行网站
  • 写出网站开发的基本流程百度网页电脑版入口
  • 网站设计有限公司怎么样网站建设西班牙语
  • 网站安全解决方案宁波seo网络推广优化价格
  • 做网站带来好处wordpress可以做oa系统吗
  • 建筑设计人才招聘网站h5营销型网站suteng
  • 做app和网站怎样如何做html网站
  • php开发手机端网站开发更换网站标题
  • 提供网站建设报价延津县建设局网站
  • 江苏网站建设流程土巴兔全包装修怎么样
  • 环保网站建设方案带漂浮广告的网站
  • 淘宝客合伙人网站建设建站前端模板
  • 网站单页模板怎么安装中世纪变装小说wordpress
  • 手机免费建设网站制作宝安第一网站
  • 如何做x响应式网站asp网站出现乱码