IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 操作系统笔记2 -> 正文阅读

[系统运维]操作系统笔记2

Linux(smp)

  • 中断
    在对称多处理(smp)下,传统的8259A中断控制器被升级成了APIC
    (高级可编程中断控制器)。APIC分为本地APIC和全局APIC,通过专有的总线通讯。每个CPU配备一个本地APIC并且由自己的时钟中断,当外部有中断请求时,全局APIC可以决定发给某一个本地APIC或全部的本地APIC。 进程描述符创建在用户空间,真正在内核空间的是thread_info描述符(内有指针指向进程描述符)和进程对应的内核栈,他们紧挨着并正好占用一页。当内核栈不够时可以使用每个cpu专用的硬中断栈和软中断栈。系统调用和通常的异常统称为异常。

  • 调度
    在smp系统中,pcb需要添加has_cpu和processor属性,分别表示是否在运行和在哪个cpu上运行,当某个cpu在schedule()中切换到next进程是,就将next进程的has_cpu和processor属性设置成相应值。

  • 软中断、tasklet、工作队列
    为了减少中断处理函数的响应时间,把那些可以推迟执行的工作交给软中断、tasklet、工作队列来执行。

    软中断需要用到两个关键数据结构:
    thread_info描述符中的preempt_count字段用来记录当前cpu被抢占的状态
    在这里插入图片描述
    抢占是指进程在内核状态被其它进程替换,比如A正在运行异常处理程序,这时中断发生,唤醒B进程并替换A进程。 硬中断和软中断处理程序都不能抢占。
    第二个是softirq_vec数组,每个元素指向一个软中断需要执行的函数以及数据。
    第三个是软中断掩码,每个cpu有一个本地掩码,用来记录软中断的激活状态。

    在硬中断处理函数完成IO处理后或 softirgd/n 内核线程被唤醒时,会调用raise_softirq()来激活软中断,它会设置掩码中的相应位,如果此时preempt_count=0会唤醒 softirgd/n 线程来真正执行软中断。
    每一个cpu会对应一个softirq线程,并用这个线程的上下文来执行软中断,软中断执行前也会检查一次preempt_count, 软中断执行过程中会复制一份本地掩码以便激活新的软中断并且打开硬中断,但是关闭当前cpu的其它软中断(通过preempt_count不为0)。使用softirq内核线程的好处是,虽然执行软中断时不允许抢占,但是线程内部循环的间隙可以允许抢占,可以防止软中断占用cpu过久。

    tasklet是在软中断的基础上实现的,但是它维护了两个标志,TASKLET_STATE_SCHED表示当前tasklet已经被激活,TASKLET_STATE_RUN表示当前tasklet已经被某个cpu运行,准备运行tasklet的时候会检查TASKLET_STATE_RUN,防止不同cpu运行同一个tasklet。

    工作队列由工作线程执行,可以支持抢占。每一个cpu有一个工作线程,对应cpu_workqueue_struct结构,内部的work_list记录了真正需要执行的函数以及数据。由于工作队列和软中断都是由内核线程执行的,所以都访问不到用户空间。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 14:51:25  更:2021-07-29 14:51:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/2 9:09:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码