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

襄阳网站建设哪个好海门住房和城乡建设部网站

襄阳网站建设哪个好,海门住房和城乡建设部网站,新手如何做网站,南宁网站建设哪里好进程状态 1. 进程排队2. 进程各个状态3. 查看一个进程的状态4. linux内核描述进程状态5. 孤儿进程 1. 进程排队 进程为什么要排队呢#xff1f;答案就是资源不够。需要等待某个软硬件资源#xff0c;就像我们常用的scanf函数就是等待键盘资源。 之前的文章我们有个结论#… 进程状态 1. 进程排队2. 进程各个状态3. 查看一个进程的状态4. linux内核描述进程状态5. 孤儿进程 1. 进程排队 进程为什么要排队呢答案就是资源不够。需要等待某个软硬件资源就像我们常用的scanf函数就是等待键盘资源。 之前的文章我们有个结论进程 PCB 可执行程序那么进程排队是谁在排队呢答案是PCB在排队就像我们找工作是简历排队。排队就是链入到一个数据结构中且PCB可以链入到多种数据结构linux内核的PCB——task_struct是以双向链表的形式链接起来的。但和一般的双向链表的实现不一样指向下一个task_struct的指针指的不是起始地址。 获取起始地址的运算task_struct*n - task_struct*0 -n 那如何理解可以链入到多个数据结构中呢答案就是一个task_struct中有多个struct listnode节点。 2. 进程各个状态 看起来很复杂但是在task_struct中状态就是一个整型变量 那分成这么多状态有什么用呢因为状态决定了后续动作。 运行状态 明确一个概念一个CPU有一个运行队列当task_struct被链入到这个运行队列中就处于运行状态R表明随时准备好被调度。 堵塞状态 一个现实当你写了一个死循环程序运行其他的程序依然不受影响的在运行这就表明了它被从运行队列中移除了。 现在有一个场景你写的程序中有一个scanf函数我们知道是在等待键盘资源这时候该程序的状态会发生什么呢 这时候该程序会从运行队列中移除将自己的状态改为堵塞链接到键盘的等待队列中如果等待成功就会再将自己从等待队列中移除链接到运行队列中将自己的状态改为运行。 所以堵塞状态就是将task_struct从运行队列中移除再链入到等待队列中。 挂起状态 当内存非常吃紧的时候操作系统会将一些进程的代码和数据放入到磁盘的一个特定的区域当缓和时再将代码和数据放入内存。但注意task_struct不会放入磁盘。这种状态就称为挂起状态。 3. 查看一个进程的状态 1 #include stdio.h2 #include sys/types.h3 #include unistd.h4 5 int main()6 {7 while(1)8 {9 printf(I am a processpid: %dppid: %d\n,getpid(),getppid());10 //sleep(1); 11 }12 return 0;13 }ps ajx | head -1 ps ajx | grep myprocess | grep -v grep这里可能会有疑惑为什么该段代码一直在死循环的运行但状态还是Sleep呢关键在于printf这个函数大部分时间还是处于一个等待硬件资源的过程中所以很难查到运行状态你以为printf执行的很快但不要以自己的想法衡量CPU的速度。 为了验证这个我们将代码中这一句注释掉 1 #include stdio.h2 #include sys/types.h3 #include unistd.h4 5 int main()6 {7 while(1)8 {9 //printf(I am a processpid: %dppid: %d\n,getpid(),getppid());10 //sleep(1); 11 }12 return 0;13 }果然变成的运行状态后面的加号是什么意思呢有加号表示这个进程是前台进程没有加号表示是后台进程我们在运行一个程序的时候再后面输入一个。该程序就会以后台程序运行只能通过kill命令终止该进程。 4. linux内核描述进程状态 /* * 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运行状态running : 并不意味着进程一定在运行中它表明进程要么是在运行中要么在运行队列 里。S睡眠状态sleeping): 意味着进程在等待事件完成这里的睡眠有时候也叫做可中断睡眠 interruptible sleep。D磁盘休眠状态Disk sleep有时候也叫不可中断睡眠状态uninterruptible sleep在这个状态的进程通常会等待IO的结束。T停止状态stopped 可以通过发送 SIGSTOP 信号给进程来停止T进程。这个被暂停的进程可以通过发送 SIGCONT 信号让进程继续运行。X死亡状态dead这个状态只是一个返回状态你不会在任务列表里看到这个状态. S、D、T、t都可以理解成堵塞状态它们都在等待资源。 Z僵尸状态zombie 当一个进程执行完成之后该进程的代码和数据可以释放了但是它返回的信息不能释放存放在struct_task因为需要被父进程获取。僵尸状态就是进程执行完毕但是没有获取该进程的返回信息。 1 #include stdio.h2 #include sys/types.h3 #include unistd.h4 #include stdlib.h5 6 int main()7 {8 pid_t id fork();9 if(id 0)10 {11 printf(I am child, pid : %d, ppid : %d\n,getpid(),getppid());12 sleep(5);13 exit(0);14 }15 else16 {17 printf(I am father, pid : %d, ppid : %d\n,getpid(),getppid());18 sleep(10);19 }20 return 0;21 } 这会造成什么问题呢很简单就是内存泄漏解决办法后面会介绍。 5. 孤儿进程 父进程比子进程先退出那么子进程就会变成孤儿进程并且同时变成后台程序。 会造成什么影响吗答案是不会的因为孤儿进程会被操作系统所领养。
http://www.zqtcl.cn/news/76164/

相关文章:

  • 网站首页排版设计微软雅黑做网站
  • seo网站托管南同网站建设软件下载
  • 做系统之前的网站中山网络公司网站
  • 网站模板html下载青岛wordpress建站
  • 绵阳建网站论坛交流平台
  • 淘宝内部优惠券网站怎么做怎么评价网站做的好坏
  • 微网站建设行业现状网站规划分析的好处
  • 双语网站方法深圳网站开发团队
  • 长春网站建设网诚传媒兰州网站建设q479185700惠
  • 公司建设网站需要多少钱wordpress免费商城模板
  • 网站建设明细价格表如何制作手机网页最简单的方法
  • 网站建设项目可行性分析太原网站优化排名
  • 博罗企业网站建设2018企业网站转化率
  • 好建设网站wordpress 支付宝赞助
  • 爬虫 做资讯网站手机网站app开发
  • 如何在微信公众号里建设微网站百度应用市场下载安装
  • 做国际网站怎么发货西安app网站开发
  • 网站开发文档撰写模板大型网站如何开发
  • 高端设计网站制作个人做网站备案多少钱
  • 赣州市人才网招聘信息查询信息网络seo是什么工作
  • 佛山顺德网站设计公司个人网站一定要备案吗
  • 移动网站建设的基本流程图如何设置wordpress的文章分类
  • 徐州做企业网站做网站市场价
  • 网站建设与网页制作论文多人视频网站开发公司
  • 简单模板网站制作时间搜索量最高的网站
  • 一级域名网站如何申请建筑云平台
  • 做网站有前景吗门户网站 解决方案
  • 做户型图的网站有关游戏的网站建设规划书
  • 建设一中校园网站宁波seo排名方案优化
  • 用自己头像做的圣诞视频网站wordpress企业电商主题排行榜