首页 > 其他分享 >学习《操作系统导论》02

学习《操作系统导论》02

时间:2023-04-21 20:12:09浏览次数:33  
标签:02 操作系统 中断 导论 模式 内核 进程 CPU

机制:受限直接执行(原书第六章)

时分共享技术带来的两个挑战

  • 性能问题即 :在不增加系统开销的情况下实现虚拟化
  • 控制权问题,如何有效的运行进程同时保留对CPU的控制

因此这里的目标就是:操作系统必须以高性能的方式虚拟化CPU,同时保持对系统的控制

基本技巧:受限直接执行

前面介绍过,操作系统在运行程序时的一些基本步骤,就是加载到内存、堆栈内存分配,IO初始化等等这些步骤,在程序真正作为进程跑起来的时候,我们需要对其进行一定的管控,比如:对于一些敏感行为不允许它操作、在需要进程切换的时候能够能够让当前进程停下来切换到其他进程去执行。

这种方式就带来了两个问题:

问题1:受限操作

这里针对受限的控制,引入了【内核模式】和【用户模式】的概念:

  • 用户模式是一种受限的模式,比如程序在用户模式下是无法进行IO调用的,一旦强行越界发出IO请求,操作系统可能会终止进程。
  • 在内核模式下,权限全开,操作系统就是运行在这种模式下的,此模式下运行的代码可以做它任何想做的,甚至是特权操作。

在这种用户模式和内核模式的配合下,内核适当开放一部分关键功能,比如:访问文件、进程创建和销毁等,在此基础上如果用户模式下的程序需要执行这些系统调用,就会执行一个特殊的【陷阱】指令,该指令会同时跳入内核并将特权级别调整为内核模式。

在系统调用执行完成后,再调用一个特殊的从陷阱返回指令(return-from-trap)。此时将返回到发起调用的用户程序中,并将特权级别调整为用户模拟。

所以这里进入trap时,硬件需要保证将所有必要的信息存储到寄存器中,以便于从陷阱指令返回后能够正常执行。

随之带来的另一个问题就是:如何知道陷阱对应的代码在什么地方?

触发陷阱的时候,肯定不是先进入到内核中然后再检查,这样存在很大的安全隐患(狡猾的程序员可能会绕过一些检测,此时就直接在内核模式操作了)。因此需要先检查再确定触发陷阱进入内核模式。

对应的解决方案就是:内核在启动的时候,会设置陷阱表,因为在机器启动的时候,此时处于内核模式,可以根据需要配置所需的硬件资源,此时操作系统要做的第一件事就是告诉硬件在触发某些异常陷阱时,需要到哪里去执行指定的代码。

这里的【告诉硬件在触发陷阱时该执行什么代码】这个指令非常强大,所以它本身就是一个特权操作。所以如果强制在用户模式下执行该指令,硬件直接拒绝。

问题2:在进程之间进行切换

这里的关键问题就是:如何使操作系统重新获得CPU的控制权。因为进程本身就在CPU上正在跑着,需要把它扒下来。

  • 协作方式:等待系统调用

早期的Macintosh就是采用这种协作的方式,这种方式是基于一个友好的假定前提:那就是进程本身会自动释放CPU,或者运行时间很长的进程会定期释放CPU控制权;此时进程如果进行了一些不当的操作依旧会将控制权交还给OS。可以看到这种假设很明显带有极端的乐观精神,现实很复杂,如果遇到那种狡猾的程序员或者是那种充满缺陷的程序,不断进入了死循环,就导致CPU永远被它占用了。

  • 非协作方式:操作系统进行控制

基于前面一种协作方式存在的问题,现行的一种方式就是主动进行控制,那就是引入一种【时钟中断】,时钟设备每隔一段时间会进行一次中断操作,中断时,停止当前正在运行的进程,转而去运行操作系统事先配置好的中断处理程序,此时操作系统就能重新获取CPU的控制权了;所以这里操作系统需要在计算机启动时就预先指定好中断处理程序,并且在机器启动时也要自动启动时钟设备,这样才能保证无论如何,最终的CPU控制权都会回到OS身上。

  • 保存和恢复上下文

前面提到的时钟中断问题,需要考虑中断时的现场保存问题,以便于在进程在从陷阱中返回执行的时候可以正常续接上之前未完成的工作,这个和前面介绍到的显式调用硬件陷入陷阱是类似的情况,因此需要各种寄存器来保存现场信息。

那么还有一个问题:如果在中断处理过程中又发生了中断,这种该如何处理?

当然最简单的方案就是时,在中断发生时,不允许再发生中断,当然这样做需要额外小心,因为如果时间过长有可能导致中断丢失。实际情况可能更加复杂,这里暂时不做深入追究,等后续章节介绍时,涉及到了自然再进行深入探究。

标签:02,操作系统,中断,导论,模式,内核,进程,CPU
From: https://www.cnblogs.com/StillLoving/p/limited-direct-execution.html

相关文章

  • 猛读论文13 |【CVPR 2022 UDA】Unleashing Potential of Unsupervised Pre-Training w
    动机解决(1)对比学习管道中的增强通常会扭曲人物图像中的判别线索(2)细粒度的局部特征人物图像尚未得到充分探索。 思路    方法 ......
  • C/C++课程信息管理系统[2023-04-21]
    C/C++课程信息管理系统[2023-04-21]综合应用所学C语言知识,设计完成一个软件工程专业课程信息管理系统。本系统拟实现以下功能:【数据文件】课程信息数据文件。每门课程的信息包含:课程编号,课程名称,理论课时实验课时、学分、开课学期(8个学期)、课程性质《分为必修、选修、限......
  • nVisual亮相2023年国际智能建筑展览会
    4月16日-18日,第六届中国国际智能建筑展览会在北京国家会议中心举办。为期3天的展会,行业300多家优秀企业带来创新产品及科研成果的精彩展示,通过产品展示、技术交流、行业研讨等多种形式,为智能建筑行业打通产业链,促进多方共赢,赋能智慧城市建设与企业数字化转型。综合布线是智能建筑......
  • 图扑软件 | 应邀参加 2023 第十届中国工业数字化论坛
    3月30日,以“加快数字化转型,助推高质量发展”为主题的第十届中国工业数字化论坛在北京隆重举行。厦门图扑软件科技有限公司(以下简称“图扑软件”)应邀参展,与诸位专家、领导、业界同仁共同研讨工业领域的数字化创新发展。展会期间,图扑软件展示了一系列面向工业互联网领域的数据可视......
  • WebStorm 2023.1 vue文件标签中变量无法识别 Unresolved variable or type
    从老版本WebStorm升级到 WebStorm2023.1之后,打开项目莫名爆红 可能是查询的不对,很多博客指明是依赖的问题,实际修改无效问题出在文件类型指向不对修改为: 问题解决 ......
  • 2023年4月21日周五
    计划一定解决修改状态的功能删减代码学习新东西英语没看完,晚上看,公司就看专业课的书就好执行09点31分  开始工作13点38分  下午开始15点50分  最后一点记录问题想法前端,js,controller,我先看他之前的项目看有无可模仿的地方去网上搜,这部分知识问剩一个......
  • 2025年自动驾驶分水岭:智能电动汽车行业的上下半场丨曼孚科技
    不得不承认,一场自动驾驶技术的革命正在悄然兴起。无论是技术革新、政策引导还是日益增长的市场需求,都在不断地推进着这一变革。作为汽车行业中的关键技术,自动驾驶的出现不仅改变了现有的商业模式、技术水平、市场份额等竞争格局,同时也为整个产业的未来发展带来了新的机遇和挑战。......
  • 猛读论文6 |【CVPR 2022】Camera-Conditioned Stable Feature Generation for Isolate
    用于孤立摄像机监督行人重识别的摄像机条件稳定特征生成动机常规ReID,对于一个ID,在不同摄像头拍摄的图片上提取跨相机视图不变特征而ISCS情况下,无法做到同一个ID采集到不同摄像头图片由于跨相机样本在人体Re-ID模型训练中起着重要作用,而在ISCS设置下不存在此类配对图像,因......
  • 天梯赛选拔_2023_第四场
    7-1聪明一点的拖长音题目描述输入一行字符,去掉空格,在每个单词最后一个字母处加一个-。输入格式:输入一行字符,中间有若干空格,字符数不超过100个。输出格式:输出这行的所有英文字母,在每个单词末尾加一个-。注:单词是指由大写或小写英文字母组成的一个词。输入样例:Iam......
  • 2023年第一季度京东平台手机品牌销量排行榜
    4月19日,调研机构Canalys发布了2023年第一季度的全球智能手机市场报告。根据数据显示,今年Q1全球智能手机市场份额TOP5分别是三星(22%)、苹果(21%)、小米(含Redmi,11%)、OPPO(含一加,10%)、vivo(含iQOO,8%);Others品牌合计市场份额28%。三星回到了市场份额第一的位置,不过苹果与三星之间的差距相较......