对于网站建设的体会设计之家室内设计

diannao/2026/1/25 0:41:45/文章来源:
对于网站建设的体会,设计之家室内设计,wordpress分享点赞,wordpress ppt演示一、前言每一个Linux驱动工程师都知道这样一个准则#xff1a;在中断上下文中不能睡眠。但是为什么interrupt context中不能调用导致睡眠的kernel API呢#xff1f;如果驱动这么做会导致什么样的后果呢#xff1f;这就是本文探讨的主题。为了理解这个主题#xff0c;我们设…一、前言每一个Linux驱动工程师都知道这样一个准则在中断上下文中不能睡眠。但是为什么interrupt context中不能调用导致睡眠的kernel API呢如果驱动这么做会导致什么样的后果呢这就是本文探讨的主题。为了理解这个主题我们设计了一些非常简单的驱动程序和用户空间的程序实际做实验观察实验效果最后给出了结果和分析。BTW本文的实验在X86 64bit 标准4.4内核上完成。二、测试程序1、cst驱动模块我们首先准备一个能够在中断上下文中睡眠的驱动程序在这里我称之Context schedule test module(后文简称cst模块)。这个驱动程序类似潜伏在内核中的“捣蛋鬼”每隔1秒随机命中一个进程然后引发调度。首先准备一个Makefile代码如下按理说代码中的xxxx应该是我的名字如果你愿意在你的环境中测试可以修改成你的名字当然最重要的是需要某个版本的内核代码。在内核升级文档中我已经编译了/home/xxxx/work/linux-4.4.6目录下的内核并把我的计算机升级到4.4.6的内核上如果你愿意可以按照那份文档进行升级否则可能会有一些版本问题需要处理。除了Makefile之外还需要一个Kbuild文件obj-m : cst.o当然最重要的是cst模块的源代码代码非常的简单无需多说直接make就可以编译得到cst.ko的内核模块了。2、用户空间测试程序为了更方便的测试我们需要准备一个“受害者”代码如下这段代码也很简单不断的产生一个随机数并运算其平方根在使得的时候向用户输出一些字符表明自己的状态。当程序执行起来的时候大部分时间在用户态(运算)偶尔进入内核态(printf)。这个进程并不知道在内核态有一个cst的模块每隔一秒就发射一只休眠之箭可能命中用户态也可能命中内核态看运气吧但是无论怎样该进程被射中之后都会进入睡眠。三、执行测试并观察结果1、先把用户空间的测试程序跑起来要想测试导弹(呵呵我们的cst模块就是一个捣蛋) 的性能必须要有靶机或者靶舰。当然也可以不用“靶机”程序只不过捣蛋鬼cst总是命中swapper进程有点无趣因此这里需要把我们用户空间的那个测试程序跑起来让CPU先活跃起来。需要注意的是在多核cpu上我们需要多跑几个“靶机”进程才能让系统不会always进入idle状态。例如我的T450是4核cpu因此我需要运行4个靶机程序才能让系统中的4个cpu core都燥起来。可以通过下面的命令确认ps –eo comm,psr | grep cstBTW靶机程序是cst_test。通过上面的命令可以看到系统中运行了四个cst_test进程分别在4个cpu上。2、插入内核模块靶机已经就绪是时候发射捣蛋了命令如下sudo insmod ./cst.ko一旦插入了cst内核模块捣蛋鬼就开始运作了每隔1秒钟发射一次总有一个倒霉蛋被命中被调度。当然在我们的测试中一般总是cst_test这个进程被命中。3、观察结果一切准备就绪是时候搬个小板凳坐下来看好戏了。当然我们需要一个观察的工具输入如下命令sudo tail –f /var/log/messages在上面的cst模块中输出并没有直接到控制台因此我们需要通过内核日志来看看cst的运行情况。四、结果和分析1、结果很奇怪一切都是正常的系统没有死cst模块也运行正常cst_test进程也始终保持alive状态不断的运行在无聊的平方根、打印着无聊的字符串。唯一异常的是日志每隔1秒钟就会dump stack一次。2、分析当cst模块命中cst_test进程无论是userspace还是kernel space都会在内核栈上保存中断发生那一点的上下文唯一不同是如果发生在userspace那么发生中断那一刻内核栈是空的而如果在kernel space内核栈上已经有了cst_test通过系统调用进入内核的现场以及该系统调用各个函数的stack frame当中断发生的时候在当前内核栈的栈顶上继续压入了中断现场之后就是中断处理的各个函数的stack frame最后是cst_timer_handler的stack frame由于调用了schedule函数cst_test进程的现场被继续压入内核栈调度器决定下一个调度的进程。cst_test进程虽然被调度了但是仍然在runqueue中调度器一定会在适当的时机调度cst_test进程重新进入执行态这时候恢复其执行就OK了cpu执行cst_TImer_handler函数schedule之后的代码继续未完的中断上下文的执行然后从内核栈恢复中断现场一切又按照原路返回了。当然这里的测试看起来一切OK但这并不是说可以自由的在中断上下文中调用导致睡眠的内核API因为我们这里给出了一个简单的例子实际上也有可能导致系统死锁。例如在内核态持有锁的时候被中断然后发生调度。有兴趣的同学可以自己修改上面的代码实验这种情况。3、why最后还是回到这个具体的技术问题为什么interrupt context中不能调用导致睡眠的kernel API我的看法是这样的调度器是每一个OS的必备组件在编码阶段之前我们往往要制定下我们的设计概念。对于Linux 调度器它的目标就是调度一个线程一个线程就是调度实体(暂不考虑group sched)。中断上下文是不是调度实体呢当然不是它没有专属的task struct内核无从调度。这是调度器设计者的决定这样的决定让调度器设计起来简洁而美丽。基于上面的设计概念中断上下文(hard irq和sofTIrq context)并不参与调度(暂不考虑中断线程化)它们是异步事件的处理机制目标就是尽快完成处理返回现场。因此所有中断上下文的优先级都是高于进程上下文的也就是说对于用户进程(无论内核态还是用户态)或者内核线程除非disable了CPU的本地中断否则一旦中断发生它们是没有任何能力阻挡中断上下文抢占当前进程上下文的执行的。因此Linux kernel的设计者制定了规则1、中断上下文不是调度实体2、中断上下文的优先级高于进程上下文而在中断上下文中调度毫无疑问会打破规则因此不能在硬中断、软中断环境中调用阻塞函数。不过在linux调度器的具体实现的时候检测到了在中断上下文中调度schedule函数也并没有强制linux进入panic可能是linux的开发者认为一个好的内核调度器无论如何也尽自己最大的努力让系统运行下去吧。但是在厂商自己提供的内核中往往修改调度器行为在中断上下文中检测到调度就直接panic了对于内核开发者而言这样更好可以尽早的发现问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88470.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用python做网站的多吗永嘉做网站

这里写目录标题 1. 下载Mendeley 并插入到Word1.1 下载安装1.2 在Word 中添加Mendeley 插件文献引用相关 1. 下载Mendeley 并插入到Word 1.1 下载安装 Mendeley 官网下载 1.2 在Word 中添加Mendeley 插件 打开 Mendeley,点击 Tools —>Install Mendeley Cite…

经过学习网站开发后的心得体会网页源代码拿到后怎么使用

( )程序包用于读写操作系统文本文件。(选一项)A、Dbms_outputB、Dbms_lobC、Dbms_randomD、Utl_file( )触发器允许触发操作的语句访问行的列值。(选一项)A、行级B、语句级C、模式D、数据库级( )是oracle在启动期间用来标识物理文件和数据文件的二进制文件。(选一项)A、控制文件…

网络运营部wordpress 纯代码seo

解决代码: .el-table {/deep/ .el-table__body-wrapper {overflow-x: scroll !important;//直接设置横轴内容滚动条 即可撑高高度 还不影响使用} }一、情景:给element的el-table设置fixed固定后,最后一行显示部分被遮挡。有的说是有时出现这…

哈尔滨建筑专业网站家具网站怎么做

Clean Sheet是适用于Windows 10的符合人体工程学的Eclipse主题。它基于干净,低眩光的外观和感觉,旨在减轻视觉疲劳和眼睛疲劳。 它融合了均衡的颜色选择,可以突出谐波语法并注重可读性。 除自定义滚动条外,它还努力满足现代美学要…

服务器分配网络提高网站访问速度网站建设公司经营

做开发时,经常遇到服务器监控报警,日志占据大量的磁盘空间,需要清理。每次手动清理很麻烦。这里分享一些定时清理的脚本,减轻运维的工作量。将sh脚本与crontab定时任务结合,实现定时清理。 nacos日志清理脚本 nacos也…

域名解析网站什么意思vue做的网站

前面的文章我们介绍了系统应用解析流程和通过 PackageInstaller.apk安装应用程序的相关流程,这一篇我们来分析使用 ADB 命令来实现 APK 安装流程。 一、ADB安装命令 ADB命令使用 adb install [选项] [APK绝对路径] 常见选项如下: -r:覆盖安装,保存原有数据; -t:…

免费个人域名网站网站建设需要钱吗

在官网可编辑表格typescript样例里 const inputRef useRef<InputRef>(null); InputRef项目报错原因是ant design的版本问题! antd 4.19版本重写了input 可通过InputRef来使用input组件的ref

住建部网站查询系统网站服务器用来做啥

1故事背景 忘记密码这件事&#xff0c;相信绝大多数人都遇到过&#xff0c;输一次错一次&#xff0c;错到几次以上&#xff0c;就不允许你继续尝试了。 但当你尝试重置密码&#xff0c;又发现新密码不能和原密码重复&#xff1a; 图片 相信此刻心情只能用一张图形容&#xf…

沈阳专业网站建设企业站长工具seo综合查询怎么用

姓名 李宁 日期 2015年7月13日 主要工作及心得 由于我负责服务器端的编写工作&#xff0c;而各部分的客户端的操作都要与服务器端通信&#xff0c;所以在今天的调试中&#xff0c;我贯穿于各部分模块的调试和检测&#xff0c;主要负责在出现问题…

博学云网站建设怎么把自己做的网站发布到网上

转载自 关于java.util.Properties读取中文乱码的正确解决方案&#xff08;不要再用native2ascii.exe了&#xff09; 碰到了用java.util.Properties读取中文内容&#xff08;UTF-8格式&#xff09;的配置文件&#xff0c;发生中文乱码的现象&#xff0c; Properties propnew Pro…

做水果网站特点分析wordpress插件xiazai

1. Serial GC Serial GC 是用于单线程环境的垃圾回收器&#xff0c;它使用复制算法&#xff08;Copy&#xff09;进行年轻代的垃圾回收&#xff0c;而老年代则使用标记-整理&#xff08;Mark-Compact&#xff09;算法。由于它在进行垃圾回收时会暂停其他所有的工作线程&#xf…

深圳网站建设小江宁夏交通建设有限公司网站

文章目录 文章开篇Json简介Json数据类型Json硬性规则Json数据转化网站Json和Dict类型转换json模块的使用Python数据和Json数据的类型映射json.dumps1.字典数据中含有**存在中文**2.json数据通过缩进符**美观输出**3.对Python数据类型中键进行**排序输出**4.json数据**分隔符的控…

网站建设与网页设计百度文库微信小程序登录流程

一、类与类加载器 类加载器虽然只用于实现类的加载动作&#xff0c;但它在Java程序中起到的作用却远超类加载阶段。对于 任意一个类&#xff0c;都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性&#xff0c;每一个类加载器&#xff0c;都拥有一个独…

在线做GO分析的网站永久免费asp空间

uniapp是一款跨平台的应用开发框架&#xff0c;基于Vue.js和小程序原生能力进行封装&#xff0c;旨在帮助开发者快速构建跨平台的应用程序。在uniapp中&#xff0c;可以使用Vue.js语法进行页面开发&#xff0c;同时通过使用小程序原生能力&#xff0c;可以实现调用设备的摄像头…

福永营销型网站多少钱做网站做58好还是赶集好

《从零开始的Java世界》系列主要讲解Javase部分&#xff0c;从最简单的程序设计到面向对象编程&#xff0c;再到异常处理、常用API的使用&#xff0c;最后到注解、反射&#xff0c;涵盖Java基础所需的所有知识点。学习者应该从学会如何使用&#xff0c;到知道其实现原理全方位式…

广州做鞋的网站wordpress评论回复邮件通知

Android中可以直接使用webView来加载HTML5通过video标签来播放视频。以下为基本步骤&#xff1a;一、需要在AndroidManifest.xml文件中声明需要使用HardwareAccelerate, 可以细化到Activity级别&#xff0c;如果不需要的View可以声明不要用加速&#xff0c;但是需要在代码中做具…

网站建设从入门pdf做网站如何团队分工

win10安装docker后发现c盘空间急速减少&#xff0c;360管家查看发现images镜像安装在C盘&#xff0c;于是重装docker desktop以为在安装过程中能够选择&#xff0c;遗憾的是没有提供选择权限&#xff0c;默认直接就安装到了c盘。 desktop 迁移 百度得知可以将c盘的docker安装…

南昌做微网站深圳市网是科技有限公司

给文件加水印是常见的一种宣示版权的方式。像Office、WPS都自带加水印功能&#xff0c;能够给文档加上"保密"、"严禁复制"这样的水印。在多可系统中&#xff0c;也有这么一个添加水印的功能。启用该功能后&#xff0c;在使用HTML5预览时&#xff0c;多可系…

深圳华鑫峰网站建设专业推广企业网站公司

转载于:https://www.cnblogs.com/ceshi2016/p/6025027.html