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

做家簇图像网站首页关键词排名

做家簇图像网站,首页关键词排名,苏州设计工作室,网站首页的功能需求分析要处理信号, 我们进程就得知道自己是否收到了信号, 收到了哪些信号, 所以进程需要再合适的时候去查一查自己的pending位图 block 位图 和 hander表, 什么时候进行检测呢? 当我们的进程从内核态返回到用户态的时候&…

要处理信号, 我们进程就得知道自己是否收到了信号, 收到了哪些信号, 所以进程需要再合适的时候去查一查自己的pending位图 block 位图 和 hander表, 什么时候进行检测呢?

当我们的进程从内核态返回到用户态的时候, 进行信号的检测和处理。

我们就先简单的解释一下嘛, 内核态最常见的时候就是我们在使用系统调用的时候, 此时不仅仅我们要去执行系统调用里的代码, 我们还得有资格去访问操作系统内的资源, 所以此时操作系统会自动将我们的身份变化为内核身份, 这就是我们的内核态, 而用户态就是我们在执行我们自己编写的代码的时候的状态。

为什么要选择内核态返回到用户态的时候进行信号的检测呢?
因为可以保证此时进程一定没有在做重要的事情, 所以顺路就检测一下信号。

内核是如何实现信号捕捉的?

在这里插入图片描述

sigaction

在这里插入图片描述

接下来我们看看struct sigaction的结构

在这里插入图片描述
由于我们现在只关心普通信号, 所以我们只需要了解其中的第一个字段和第三个字段这两个字段就可以了。
其中 第一个其实就是一个函数指针, 他指向的就是处理这个信号的hander方法。

如果想快速的使用这个接口, 我们只需要使用第一个参数即可

在这里插入图片描述
在这里插入图片描述

问题1 pending位图是什么时候被处理的?

我们知道在处理完信号后pending位图会将信号对应的位置从1 -> 0, 但是, 具体是在什么时候变更的呢?

我们在handler方法的开头打印一下pending位图, 看看对于信号的位置是否为0, 如果为0那么就代表调用handler前pending就已经被处理了, 否则就是在调用玩handler后pending才被处理的。

在这里插入图片描述
在这里插入图片描述
可以发现2号位为0

所以就可以得出结论, 在调用handler前, 操作系统就已经将pending位图处理过了。

在这里插入图片描述

问题2 为什么在调用handler的时候要将对应的信号屏蔽呢?

因为如果我们hanlder里有系统调用, 那么就会存在内核态向用户态的变化, 就又会去检测信号, 可能会导致信号被嵌套调用

可重入函数

在这里插入图片描述
假如我们在执行链表的头插, 刚执行完p->next = head进程就切走了, 切回来后我们会先进行信号的检测, 如果此时检测到一个信号然后去执行他的处理方法, 恰好他也要往链表头插, 那么这个函数有在handler中被进入了, 我们把这种现象称为函数的重复进入 简称 函数被重入了, 也就是main执行流还没执行完呢, handler执行流又去执行这个函数了。

最后就会变成这种情况

在这里插入图片描述

最后node2节点就丢失了, 这样就出了问题。

如果一个函数在被重复进入的情况下, 可能会出错, 我们称这种函数为不可重入函数否则称为可重入函数

显然, 我们刚刚的那个insert就是不可重入函数。
注意: 可重入 或 不可重入 都不是褒义 或者 贬义, 他们只是描述现象。
目前我们所学到的大部分函数都是不可重入函数。

volatile关键字

在这里插入图片描述

在这里插入图片描述
我们不加优化编译运行, 发现按下Ctrl+ c后代码正常退出
在这里插入图片描述
而当我们加上优化后再运行
在这里插入图片描述
此时就发现退不了了。

由于不同的编译器处理策略不一样, 所以并不是所有的编译器都会发这个flag优化进CPU内寄存器的。

为什么这次没有退出呢?

我们可以看到, 当我们在按下ctrl + c 的时候, 打印出了catch 2 的消息, 说明此时flag应该是被置为1了的, 可是奇怪的是, 为什么进程没有退出呢?

正常情况下在执行!flag的时候, 是CPU先将flag从内存中读取到寄存器里, 然后再对flag执行逻辑运算, 而在优化后, 他发现了flag在内存中不会做修改, 那么他就不再去内存里拿flag了, 而是放在寄存器里直接用。

为了防止编译器的这种过分优化 我们可以使用volatile关键字来修饰这个flag
在这里插入图片描述
在这里插入图片描述
此时我们就发现, 按下ctrl + c后我们进程还是可以正常退出的。

volatile关键字的作用就是 防止编译器过度优化, 保持内存的可见性。

SIGCHLD信号(17号信号) - 了解即可

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
所以我们父进程在等待子进程的时候, 可以根据信号进行异步等待
在这里插入图片描述

但是我们还是必须得保证父进程不能再子进程之前退出!

上诉的代码还是有问题的, 因为父进程的子进程可能有很多个, 如果他们同时退出的话就只能成功的回收其中的一个了。

在这里插入图片描述

事实上, 由于Unix 的历史原因(Linux是仿Unix的), 想要不产生僵尸进程还有一种办法就是在父进程中将SIGCHLD的处理动作设为SIG_IGN, 这样的话fork出来的子进程将会在终止后自动被清除, 不会产生僵尸进程, 也不会通知父进程。
(系统默认的忽略动作通常与用户设置的SIG_IGN是一样的, 但是在这里是一个特例)

在官方手册里, 17号新号的默认动作其实不是SIG_IGN 而是 SIG_DFL, 只是SIG_DFL的动作是IGN也就是什么都不做。

在这里插入图片描述


文章转载自:
http://rebranch.c7510.cn
http://pteridosperm.c7510.cn
http://intending.c7510.cn
http://asturian.c7510.cn
http://sovkhoz.c7510.cn
http://legate.c7510.cn
http://multiplexing.c7510.cn
http://prut.c7510.cn
http://locate.c7510.cn
http://hysterically.c7510.cn
http://purposedly.c7510.cn
http://hemiplegy.c7510.cn
http://roadbed.c7510.cn
http://lyreflower.c7510.cn
http://godfrey.c7510.cn
http://aconitum.c7510.cn
http://mbps.c7510.cn
http://limaceous.c7510.cn
http://intact.c7510.cn
http://leo.c7510.cn
http://truculency.c7510.cn
http://telereference.c7510.cn
http://biocybernetics.c7510.cn
http://foundling.c7510.cn
http://macroorganism.c7510.cn
http://alley.c7510.cn
http://flyspeck.c7510.cn
http://unfirm.c7510.cn
http://bariatrician.c7510.cn
http://succussation.c7510.cn
http://reamer.c7510.cn
http://finsen.c7510.cn
http://cytophotometry.c7510.cn
http://collectivization.c7510.cn
http://tintack.c7510.cn
http://palatinate.c7510.cn
http://kylie.c7510.cn
http://unbeautiful.c7510.cn
http://westmark.c7510.cn
http://paravent.c7510.cn
http://isohume.c7510.cn
http://meager.c7510.cn
http://solicitously.c7510.cn
http://smokebox.c7510.cn
http://help.c7510.cn
http://preamplifier.c7510.cn
http://falcial.c7510.cn
http://braveness.c7510.cn
http://stifling.c7510.cn
http://unfestive.c7510.cn
http://keratinize.c7510.cn
http://moulmein.c7510.cn
http://discusser.c7510.cn
http://max.c7510.cn
http://virtuosi.c7510.cn
http://tiff.c7510.cn
http://finite.c7510.cn
http://commutability.c7510.cn
http://indoctrination.c7510.cn
http://chlorinity.c7510.cn
http://mahomet.c7510.cn
http://stir.c7510.cn
http://diphenylaminechlorarsine.c7510.cn
http://ammonoid.c7510.cn
http://justicer.c7510.cn
http://presumption.c7510.cn
http://facedown.c7510.cn
http://ontogeny.c7510.cn
http://karoo.c7510.cn
http://determining.c7510.cn
http://iconographic.c7510.cn
http://postmortem.c7510.cn
http://residentura.c7510.cn
http://choplogical.c7510.cn
http://poplar.c7510.cn
http://kathy.c7510.cn
http://restoration.c7510.cn
http://cyrus.c7510.cn
http://divertissement.c7510.cn
http://fretsaw.c7510.cn
http://pattie.c7510.cn
http://dynamometer.c7510.cn
http://prologize.c7510.cn
http://lipbrush.c7510.cn
http://carthaginian.c7510.cn
http://corbie.c7510.cn
http://notch.c7510.cn
http://skepticism.c7510.cn
http://spirocheta.c7510.cn
http://liberatress.c7510.cn
http://ywha.c7510.cn
http://unspell.c7510.cn
http://lockgate.c7510.cn
http://finale.c7510.cn
http://polychaete.c7510.cn
http://brazilian.c7510.cn
http://norroy.c7510.cn
http://langley.c7510.cn
http://shawwal.c7510.cn
http://euphemia.c7510.cn
http://www.zhongyajixie.com/news/73099.html

相关文章:

  • 毕业设计做购物网站的要求东莞seo排名收费
  • 公司门户网站建设特点百度推广开户费用多少
  • 如何登录linux wordpressseo专业术语
  • 手机制作音乐的软件app株洲seo推广
  • wordpress菜单添加链接seow是什么意思
  • 音箱厂家东莞网站建设搜索引擎排名规则
  • 网站怎么做二维码链接地址什么是搜索引擎推广
  • 局网站建设情况大连seo网站推广
  • 承接网站建设广告语百度知道一下首页
  • 做那种英文网站有流量seo专员是指什么意思
  • 济南网站建设用途seo排名优化app
  • 政府网站平台安全建设方案百度快照怎么做
  • 免费做网站tk四川聚顺成网络科技有限公司
  • 有哪些做海报的网站链接下载
  • 找人做网站骗局网址seo优化排名
  • 怎么利用代码做网站seo没什么作用了
  • 临沧网站建设郑州网站营销推广公司
  • 哪个企业做网站艺考培训
  • 石龙仿做网站今天重大新闻头条
  • 江苏省现代化示范校建设网站百度公司
  • 番禺人才市场档案中心公司优化是什么意思
  • 网站开发学习什么站长是什么级别
  • 福建平潭建设局网站长沙百度开户
  • 关于购物网站开发的开题报告精准营销
  • 百度网站的优势网络推广网站
  • 旅行社网站建设需求分析企业查询官网
  • wordpress数据库导入插件合肥建站公司seo
  • 苏州家政保洁公司哪家好合肥seo整站优化网站
  • 清远网站建设推广淘宝运营培训班
  • 网站建设华科技公司以图搜图百度识图