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

网站开发可以用gif吗好康的网站代码

网站开发可以用gif吗,好康的网站代码,网站策划专员所需知识,有关做服装的网站吗#x1f30e;进程状态【上】 文章目录#xff1a; 进程状态 发现进程的状态 运行队列 进程排队 进程状态的表述       状态在代码中的表示       运行状态       阻塞状态       挂起状态 总结 前言#xff1a; 为了搞明白正在运行的进程是什么意思…进程状态【上】 文章目录 进程状态 发现进程的状态 运行队列 进程排队 进程状态的表述       状态在代码中的表示       运行状态       阻塞状态       挂起状态 总结 前言 为了搞明白正在运行的进程是什么意思我们有必要了解进程的不同状态那么话不多说开始我们今天的话题 发现进程的状态 我们按照上次所说的创建子进程分别执行不同的工作: 1 #includestdio.h2 #includestdlib.h3 #includeunistd.h4 #includesys/types.h5 6 int main()7 {8 printf(before fork!\n);9 sleep(3);10 printf(start fork!\n);11 sleep(1);12 13 pid_t id fork();14 if(id 0)15 {16 perror(fork error!\n);17 exit(0);18 }19 20 if(id 0)//子进程21 {22 int cnt 6;23 while(cnt)24 {25 printf(Im child process, pid%d\n, getpid());26 sleep(1);27 cnt--; 28 }29 exit(0);30 }31 //父进程32 sleep(1);33 int cnt 5;34 while(cnt)35 {36 printf(Im father process, pid%d\n, getpid());37 sleep(1);38 cnt--;39 }40 41 return 0;42 } ~这里使用了 exit() 函数我们以前可能在C语言里见到过它只知道它可以退出程序。其实在Linux当中exit函数是 退出进程 接口 它的作用是终止一个进程而函数参数是 退出码这个以后会谈表示 退出状态。 那我们把程序运行起来之后再使用监控脚本进行监控 观察我们从监控脚本得出的结果我们发现带有 STAT 的一栏里除了最后一项我标红的位置为 “Z” 外其他的状态都是 “S” 状态并且在标红的这一行的最后出现了 defunct 的字样。 这个就是我们今天要说的——进程状态。 运行队列 进程的状态一定是与CPU如何执行有关的所以在了解进程状态之前有必要先了解CPU如何执行进程。 我们说过程序运行起来时就是一个进程进程需要被CPU给执行并且进程是以 循环队列 的形式被CPU执行但是进程在CPU上并不是一直在执行的。 每一个进程都有自己的 时间片 也就是 每个进程运行最大时间超过这个时间如果程序还没有被执行完毕则强制退出执行下一个进程这个进程则重新排队等待CPU资源。 当然有些情况下进程也许是在等待某些硬件资源所以并不会一直执行比如 #includestdio.hint main() {int ind 0;scanf(%d, ind);printf(%d, ind);return 0; }这个时候程序此时就在等待我们硬件资源也就是键盘的写入。 我们知道进程 task_struct 可执行程序 那我们进程在排队的时候是 task_struct 在排队还是可执行程序在排队亦或是两者都排队呢我们不妨讲个故事 有一天阿熊自信满满觉得自己实力已经可以去闯闯了于是阿熊连夜写了一份简历第二天就向自己心仪的公司投递了过去每天期待着答复。   这天面试官手里拿着10份简历按照面试官对应聘者的评价依次排放筛选出自一半交给了hr很幸运阿熊居然没被刷下来hr按照这个顺序依次比较最后hr看着阿熊的简历坦然一笑…[未完] 其实阿熊可以看为进程的代码和数据而简历可以看作进程的PCB而阿熊的简历被hr拿到的简历在一起的时候其实就是进程排队的过程。 所以我们可以得出 结论进程排队不是进程的可执行程序在排队而是进程的PCB在排队 于是就在当天晚上阿熊收到了一封短信“尊敬的阿熊介于您出色的表现已经进入我司人才库…” 然而就在阿熊一个人偷抹眼泪的时候某个面试官正在骂骂咧咧投递自己的简历到另一家公司…[结束] 进程排队 那么如何理解进程排队这件事情进程排队本质上就是数据结构的双向链表但是稍稍不同的是这个指针指向的并不是下一个PCB的开始而是PCB内部的一个指针。 那么如何通过PCB的中间链表去访问链表以上的属性信息呢其实很简单 struct task_struct {char ch1;char ch2;char ch3; }假如我们要从 ch3 访问 ch1只需要ch3 - 2也就是根据ch3到ch1的 偏移量 来确定ch1的位置同样在PCB的内部也是根据偏移量来确定位置的。 那么在我们Linux内核中是如何确定偏移量的呢 话说回来进程排队的意义是什么我们应该已经清楚了只要是在排队就一定是在等待某种资源 进程状态的表述 ✈️状态在代码中的表示 我们都知道Linux是使用C语言写的而如何描述进程状态其实就是使用 宏 来表示对应的状态比如 #define NEW 0 #define READY 1 #defien RUNNING 2 #define BLOCK 3 //...struct task_struct {int status;//就是上面定义的宏//... }现在我们能把各个状态都具象化成宏了而这些 状态决定了进程的后续动作Linux中可能同时运行多个进程OS就要根据进程的状态来决定下一步做什么。 以上可能是某个教材的进程状态图我们接下来介绍的就是运行、阻塞、和挂起 状态。 ✈️运行状态 进程有一个状态叫做 运行状态很多人以为只有当CPU执行到当前进程时才能称为当前进程为运行状态实则不然。 每一个CPU其实都有一个运行队列比如 struct runqueue{//运行队列int count;task_struct *p;//指向进程 }此时整个队列的进程运行状态都为运行状态而运行状态的意思是 RRunning: 准备好被CPU随时调度。 ✈️阻塞状态 进程有时会处于一种特殊的状态阻塞状态 我们前面scanf等待硬件资源就会把进程拉入到一个 阻塞队列(Blocked Queue) 当中表示正在阻塞等待某种硬件资源当获得硬件资源后就会从阻塞队列中退出链入到运行队列当中。 操作系统对下管理硬件资源那么操作系统是如何管理这些硬件资源的还是那六个字先描述再组织 将硬件资源描述为一个个属性将这些属性组织起来称为结构体那么从此以后操作系统对硬件的管理就变为了对这个结构体对象的管理。 struct device//硬件设备 {size_t type;//硬件类型键盘、鼠标、磁盘网卡等...//设备的操作方法//状态struct listnode node;task_struct *p;//指向进程//... }所以我们能得出的结论是 当我们的进程在等待 软硬件资源 的时候资源如果没有就绪我们的进程PCB就只能 1.将自己设置为阻塞状态。2.将自己的PCB链入等待资源的等待队列 通常是资源竞争。 ✈️挂起状态 进程还存在一种挂起状态这种状态与计算机内存有关系当 计算机内存非常吃紧的时候操作系统为了 保证向上提供良好的运行环境所以操作系统一定会把需要等待资源的进程进行特殊处理将内存资源释放一些以便于 向上提供良好的环境。 比如说阻塞队列和等待队列这些需要等待软硬件资源的进程此时这些进程不用我们的资源但是还占用我们的资源所以OS就会将这些进程的代码和数据 唤入 到磁盘中的 swap分区。 其实这种挂起状态为 阻塞挂起当然不排除有些教材里有其他挂起但是我们就谈这一种。 唤出 仅仅是将进程的 代码和数据 唤出进程的 task_struct 一定要保留在内存中不然OS就没法确定这个进程的状态了。 可能在有些书里还有其他挂起但是挂起的原因只有一个一定是因为某种资源的紧缺才会挂起。 ✏️总结 每个进程都有自己的进程状态在C语言中以 宏 的方式体现有了状态操作系统就知道下一步要做什么。  进程中存在许多队列CPU执行的队列叫做 运行队列阻塞等待软硬件资源的叫做 阻塞队列 和 等待队列。  进程排队是进程的 task_struct 在排队而不是可执行程序在排队。并且只要是排队就 一定是在等待某种资源分配。  挂起状态跟 内存有关当内存状态吃紧时将需要等待软硬件资源的进程的代码和数据唤出到 硬盘的 swap分区需要时再唤出。 创作不易如果这篇文章对您有帮助的话还望留下一个小小的三连呀~~
http://www.hkea.cn/news/14280316/

相关文章:

  • 我的专业网站建设策划书上海传媒公司官网
  • 淄博专业网站建设公司海外直播
  • 企业手机网站模板下载做的比较好的网站有哪些
  • 网站建设汽车后市场分析销售怎么找客户
  • 做装修的推广网站有那种网页设计案例
  • 海南响应式网站建设方案摄影展示网站源码
  • 云教育科技网站建设为企业策划一次网络营销活动
  • 做网站如何放入图像hcms wordpress
  • 常见网站建设网站单个页面做301
  • 西宁市规划和建设局网站wordpress插件开发
  • 电脑网站做名片wordpress分类模版设置插件
  • 如何制作微信网站自己制作网站的方法是
  • 如何跟进psd做网站下载爱南宁乘车
  • 建设微信网站需要服务器营销师
  • 个人网站模块网站免费推广大全
  • 福州微信营销网站建设上海专业网站建设价
  • 品牌官方网站蚌埠网站建设文章
  • 做模型的网站有哪些黑龙江省建设工程网
  • 网站建设主流开发语言服装印花图案网站
  • 政务服务网站建设方案wordpress 更改主页
  • 免费发布信息网站大全666面包屑 wordpress
  • 做灯带的网站天津住建网官网
  • 建设银行网站 个人客户端凡科做的网站为什么搜不到
  • 烟台网站营销四川省安监站网址
  • 网站开发外包公司坑怎么做区块链网站
  • 如何加强省市网站建设个人建设网站流程
  • 个性化推荐网站开发源码建材网站制作
  • 公司网站制作方案怎么做wap网站
  • 本地网站搭建如何访问网页做统计表的网站
  • php网站搬家软件制作网页的步骤搜集素材