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

操作系统的运行环境

1.处理器的运行模式

目态

也叫用户态,

执行非特权指令:不能直接访问系统中的软硬件资源,仅仅可以访问用户地址空间。

用户应用程序运行在目态。 

管态

也叫内核态,

可执行除访管指令外的任意指令,包括特权指令:

        ①I/O

        ②关中断

        ③内存清零

        ④存取用于内存保护的寄存器

        ⑤送PSW中的值到寄存器 

操作系统运行在内核态。

切换 

用户态使用“访管”指令,由硬件来完成目态到管态的切换。 

2.系统调用

功能 

        凡是与资源有关的操作都必须通过系统调用的方式向操作系统提出服务请求,并由操作系统代为完成之。 

设备管理

文件管理

进程管理

进程通信

内存管理 

调用过程 

系统调用的具体流程

1. 用户程序发出系统调用请求
  • 触发条件:用户程序需要执行某个特权操作(如读写文件、分配内存、创建进程等)。
  • 调用API:用户程序通过调用操作系统提供的系统调用接口,通常是高级语言库函数(如open()read()write()等)。
  • 准备参数:系统调用前,用户程序将系统调用所需的参数(如文件路径、读写缓冲区等)准备好。
2. 系统调用库函数封装
  • 库函数作用:大多数系统调用都有一个封装库函数,负责将系统调用请求从用户空间传递到内核空间。
  • 库函数执行:库函数会执行一些必要的处理,如检查参数是否合法,然后通过一个特殊的指令(如syscallint 0x80)触发系统调用。
3. 触发陷入指令(系统调用中断)
  • 陷入指令:系统调用通过特定的 CPU 指令(如syscallint 0x80)产生一个软中断,这个软中断是一个陷入指令(trap instruction),会使处理器从用户模式切换到内核模式。
  • 模式切换:陷入指令触发后,CPU从用户模式切换到内核模式,此时CPU具有更高的特权,可以访问硬件和内核数据。
4. 保存上下文
  • 用户态信息保存:切换到内核模式后,操作系统首先会保存用户程序的运行状态(如寄存器的值、程序计数器等),以便系统调用执行完后可以恢复。
  • PC,PSW硬件来保存(也即隐指令)
    寄存器的值操作系统负责来保存

  • 保护机制:保存用户态的上下文信息是为了防止系统调用过程中用户态的数据丢失,并确保切换回来时程序能够继续正常运行。
5. 转入内核态
  • 中断向量:CPU根据系统调用的中断向量表找到相应的系统调用处理函数(通常对应一个唯一的系统调用号)。
  • 系统调用号:每个系统调用都有一个唯一的编号,系统调用号用于指示当前请求的具体服务类型。内核通过这个编号来决定调用哪个系统调用处理程序。
6. 内核态处理系统调用
  • 执行系统调用函数:内核根据系统调用号和传递的参数,调用对应的内核函数,执行相应的系统功能(如文件操作、进程管理、内存分配等)。
  • 特权操作:由于操作系统处于内核模式,具有对硬件和系统资源的访问权限,因此可以执行诸如读写磁盘、管理内存等特权操作。
7. 返回结果
  • 返回值处理:内核在处理完系统调用后,将结果(如文件描述符、读写结果、状态信息等)准备好。结果会保存在寄存器中,通常是某个固定的寄存器(如EAXRAX)以返回给用户程序。
8. 恢复上下文并返回用户态
  • 恢复用户态信息:在返回用户态之前,内核会恢复先前保存的用户程序的上下文,包括寄存器的值、程序计数器等。
  • 切换回用户模式:CPU通过特殊指令将系统从内核模式切换回用户模式。
9. 用户程序继续执行
  • 系统调用完成:CPU恢复到用户模式后,用户程序继续从暂停的位置开始执行,获取系统调用返回的结果。

 

 

http://www.lryc.cn/news/432021.html

相关文章:

  • 如何在 Selenium 中获取网络调用请求?
  • IP学习——oneday
  • 2024 年高教社杯全国大学生数学建模竞赛 C 题 农作物的种植策略(详细思路+matlab代码+python代码+论文范例)
  • 软件工程知识点总结(1):软件工程概述
  • 热烈庆祝中国科学技术大学建校六六周年
  • iptables持久化命令:netfilter-persistent save
  • elementUI table 给表头添加气泡显示(鼠标悬浮显示注释)
  • Web3社交新经济,与 SOEX 实现无缝交易的高级安全性
  • Python和MATLAB(Java)及Arduino和Raspberry Pi(树莓派)点扩展函数导图
  • 使用isolation: isolate声明隔离混合模式
  • 93. UE5 GAS RPG 应用负面效果表现
  • TCP 和 UDP 区别
  • 免费2024柜台租赁经营合同范本模板下载分享
  • 模型和算力看板:Compute DashBoard
  • Python加载 TorchScript 格式的 ResNet18 模型分类该模型进行预测并输出预测的类别和置信度
  • 学习笔记--MybatisPlus
  • 【机器学习】XGBoost的用法和参数解释
  • Vivado 约束
  • 如何在Excel中创建一个VBA宏,并设置一个按钮来执行这个宏
  • H3C SR-MPLS通过OSPF通告SID配置
  • JS面试真题 part2
  • python 下载excel 添加水印
  • CosyVoice:开源强大的 AI 语音合成工具
  • 【靶场】Pikachu—XSS Cross-Site Scripting(前五关)
  • Dance with Compiler - EP2
  • 微博视频无水印下载的方法
  • C语言 | Leetcode C语言题解之第390题消除游戏
  • 虚拟现实辅助工程技术助力多学科协同评估
  • Java获取小程序码示例(三种小程序码)
  • 【最新华为OD机试E卷-支持在线评测】分糖果(100分)-多语言题解-(Python/C/JavaScript/Java/Cpp)