码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 中断上下文和进程上下文


    中断上下文

    参考博客:(https://blog.csdn.net/AndroidBBC/article/details/81911065)

    在这里插入图片描述
    中断上半部分,中断触发;中断下半部分,中断执行。
    中断执行一般有tasklet、工作队列实现

    工作队列机制

    工作队列所执行的中断代码会表现出进程的一些特性,最典型的就是可以重新调度甚至睡眠。内核在执行中断的剩余工作时就处在**进程上下文(process context)**中。

    tasklet机制

    内核在执行时处于中断上下文(interrupt context)中。而中断上下文与进程毫无瓜葛,所以在中断上下文中就不能睡眠。因此,选择tasklet还是工作队列来完成下半部分应该不难选择。当推后的那部分中断程序需要睡眠时,工作队列毫无疑问是你的最佳选择;否则,还是用tasklet吧。

    进程上下文

    一般的进程运行在用户态,如果这个进程进行了系统调用,那么此时用户空间中的程序就进入了内核空间,并且称内核代表该进程运行于内核空间中。由于用户空间和内核空间具有不同的地址映射,并且用户空间的进程要传递很多变量、参数给内核,内核也要保存用户进程的一些寄存器、变量等,以便系统调用结束后回到用户空间继续执行。这样就产生了进程上下文。

    区别

    所谓的进程上下文,就是一个进程在执行的时候,CPU的所有寄存器中的值、进程的状态以及堆栈中的内容。当内核需要切换到另一个进程时(上下文切换),它需要保存当前进程的所有状态,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态继续执行

    对于中断而言,是硬件通过触发信号,导致内核调用中断处理程序,进入内核空间。这个过程中,硬件的一些变量和参数也要传递给内核,内核通过这些参数进行中断处理,中断上下文就可以理解为硬件传递过来的这些参数和内核需要保存的一些环境,主要是被中断的进程的环境。因此处于中断上下文的tasklet不会有睡眠这样的特性。

    在Linux kenel的实现中,要保护共享数据:如果只有进程上下文的访问,那么可以考虑使用semaphore或者mutex的锁机制,如果有spinlock,那些可以导致睡眠的lock就不能使用了,这时候,可以考虑使用spin lock。

    中断上下文要用锁,首选 spinlock,他是不会导致睡眠的锁
    spinlock解析

  • 相关阅读:
    使用 Next.js 连接 mysql 数据库
    五年前,我写错了一道面试题。
    【服务器数据恢复】EXT3文件系统的RAID5数据恢复案例
    Python按单元格读取复杂电子表格(Excel)数据实践
    Gradle 构建环境变量配置
    谷歌『云开发者速查表』;清华3D人体数据集;商汤『通用视觉框架』公开课;Web3极简入门指南;高效深度学习免费书;前沿论文 | ShowMeAI资讯日报
    Java装饰者模式详解:为对象动态添加功能
    nrf52832 开发板入手笔记:J-Flash 蓝牙协议栈烧写
    盘点编写 sql 上的那些骚操作(针对mysql而言)
    力扣每日一题45:跳跃游戏
  • 原文地址:https://blog.csdn.net/weixin_45485072/article/details/128070705
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号