首页 > 系统相关 >Linux操作系统分析-课程总结

Linux操作系统分析-课程总结

时间:2023-05-15 22:25:39浏览次数:46  
标签:操作系统 中断 虚拟机 课程 内核 Linux 进程 上下文 外设

 

  • 结合虚拟化技术分析Linux系统的一般执行过程

一、      Linux系统运行一般场景:用户进程之间切换                     

( 1 )用户态进程X调用系统调用或触发异常

用户态进程X需要进行进程切换时,可以通过调用一些特定的系统调用(例如fork、exec等)或者发生异常(例如缺页异常等)来触发进程切换。

 

(2)系统内核保存进程X的上下文

当进程X触发进程切换时,操作系统内核需要将进程X的上下文信息保存下来,包括程序计数器、寄存器状态、堆栈指针等。

具体操作:

save cs:eip/ss:esp/eflags :当前 CPU 上下文压入用户态进程 X 的内核堆栈。

load cs:eip(entry of a specific ISR) and ss:esp(point to kernel stack) :加载当前进程内

核堆栈相关信息,跳转到中断处理程序,即中断执行路径的起点。

SAVE_ALL ,保存现场,此时完成了中断上下文切换,即从进程 X 的用户态到进

程 X 的内核态。

 

(3)内核切换到进程Y的上下文

接下来,内核需要进行进程切换,将处理器的上下文切换到进程Y的上下文中。这包括将进程Y的上下文信息加载到处理器中,例如程序计数器、寄存器状态、堆栈指针等。

具体操作:

restore_all ,恢复现场,与(3)中保存现场相对应。

iret - pop cs:eip/ss:esp/eflags ,从 Y 进程的内核堆栈中弹出此前压入栈中的内容。此时完成了中断上下文的切换,即从进程 Y 的内核态返回到进程 Y 的用户态。

 

  (4)用户态进程Y恢复执行

当进程Y的上下文信息被加载到处理器中后,处理器开始执行进程Y的代码,从上次执行的位置继续执行。

 

二、      一些特殊情况

(1)用户态进程与内核线程之间切换、内核线程之间切换,与一般情况(用户进程之间切换)类似,区别是内核线程运行过程中发生中断没有进程用户态和内核态的转换;

(2)内核线程主动调用schedule(),只有进程上下文的切换,没有发生中断上下文的切换,与最一般的情况略简略;

(3)一些系统调用,如:

fork:创建子进程的系统调用在子进程中的执行起点及返回用户态;

execve:加载一个新的可执行程序后返回到用户态的情况

 

三、      结合虚拟化

(1)     虚拟机管理器(VMM)

VMM一种用于实现虚拟化技术的软件程序,将物理服务器分割为多个虚拟服务器,并控制它们的运行。

使用VMM可以方便的进行硬件资源管理(CPU、内存、磁盘、外设等),指定参数进行灵活配置(如CPU核心数量、内存大小),对虚拟机进行实时监控,保证虚拟机间的通信以及隔离性

 

(2)     虚拟机中断

主要包括物理外设产生的虚拟机中断和虚拟外设产生的虚拟机中断:

一、在虚拟化环境中,物理外设通过虚拟化软件与虚拟机进行通信。当物理外设产生中断时,虚拟化软件需要将中断信号传递给虚拟机,这个过程称为物理外设产生虚拟中断的过程。

 

二、虚拟外设可以模拟物理外设的行为,与虚拟机进行通信。当虚拟外设产生中断时,虚拟机需要处理该中断,这个过程称为虚拟外设产生虚拟中断的过程

 

三、一般处理过程

1. 物理/虚拟外设发起中断请求 当外设产生中断时,它会向主机的中断控制器发送中断请求信号。

2. 中断传递到虚拟化软件 中断控制器将中断请求传递给主机上运行的虚拟化软件,虚拟化软件根据配置信息判断该中断请求是否需要传递给虚拟机。

3. 虚拟化软件将中断传递给虚拟机 如果该中断请求需要传递给虚拟机,则虚拟化软件会将中断信息传递给虚拟机,以模拟物理硬件中断的效果。

4. 虚拟机处理中断 虚拟机收到中断请求后,会将中断信息传递给虚拟机内的操作系统进行处理。操作系统会保存当前的上下文信息,然后转入中断处理程序执行。

中断处理程序会根据中断类型进行相应的处理,例如读取硬件设备的数据或发送数据到硬件设备等。中断处理程序执行完毕后,操作系统会根据之前保存的上下文信息恢复虚拟机的执行状态,并返回到之前的执行点继续执行。

 

  • 结合课程学习情况谈谈在Linux操作系统分析课程中的收获

本课程主要对linux操作系统的各个主要组成部分进行分析,包括基本的程序运行原理、汇编执行、中断的原理和应用,以及linux操作系统的启动和基本运行框架,linux系统运行的细节如进程切换、进程调度,linux的文件系统和IO管理等。通过学习我们关注Linux系统的主干,将庞大的操作系统分为不同的模块,并从底层去理解内核的运行原理,同时通过编译内核、构建根文件系统、使用gdb调试内核等实操,进一步印证了linux运行方式的理论知识,为linux以及操作系统内核的学习打下了基础。

 

 

标签:操作系统,中断,虚拟机,课程,内核,Linux,进程,上下文,外设
From: https://www.cnblogs.com/lijiang2023/p/17403310.html

相关文章

  • linux工具学习 day03
    1、gdb命令run:在调试器中运行程序list:查看程序源码break+行号:设置断点break+行号+if条件:设置断点break+函数名:设置断点infobreak:查看断点信息delete+断点编号:删除断点enable/disable:使能断点print+X+变量名:查看变量值next:单步执行,不进入子函数(跳过函数,直接拿结果)ste......
  • 千聊视频课件课程下载工具,如何在电脑端下载千聊视频课件PDF,PPT到本地
    一.安装千聊课程下载器1.获取学无止下载器https://www.xuewuzhi.cn/qlchat_downloader2.下载安装后,然后点击桌面快捷方式运行即可。注意:杀毒软件可能会阻止外部exe文件运行,并将其当做成病毒,直接添加信任即可,本软件绝对没有木马病毒。二.使用说明1.学无止下载器介绍学无......
  • Linux操作系统分析-课程总结报告
    结合虚拟化技术分析Linux系统的一般执行过程虚拟化层启动:在虚拟化环境中,物理主机上的虚拟化软件(如VMware、KVM等)启动,并创建虚拟机管理器(VMM)或称为hypervisor。VMM负责管理虚拟机的创建、销毁和资源分配。虚拟机创建:VMM根据用户的需求创建虚拟机实例。虚拟机实例是一种逻辑上的隔......
  • 龙蜥产品生态总监做客 InfoQ:后 CentOS 时代,国产操作系统能否扛起大旗?
    随着CentOS全面停服即将进入尾声,企业选择一款既可保障系统稳定运行,又可提供专业技术支持的操作系统迁移显得尤为重要。那么,现存的CentOS以及衍生版用户或将面临哪些风险?一套完整的迁移方案应该包括哪些步骤?在当下众多的迁移版本中如何选择符合市场发展诉求的操作系统……相信大......
  • linux中安装jdk
    安装步骤:1.首先我们需要一台虚拟机或者一台配置了环境的服务器这里我们使用阿贝云服务器。2.搜索需要的jdkyumsearchjdk 3.安装需要的版本yuminstall java-1.8.0-openjdk-devel.x86_644.安装完成查看版本......
  • Linux系统的一般执行过程与虚拟化技术结合分析
    Linux系统一般执行过程Linux操作系统的启动过程一般分为四个阶段:BIOS启动引导阶段、GRUB启动引导阶段、内核阶段和init初始化阶段。BIOS启动引导阶段:计算机加电后,首先运行的是BIOS程序。BIOS程序会检测计算机硬件设备并进行初始化,然后将控制权交给下一级的启动引导程序。GRUB......
  • Linux下部署安装JDK
    系统:Centos7安装jdk版本:1.8.0_371安装方式:压缩包jdk官网下载 https://www.oracle.com/java/technologies/downloads/#java8 先用Java-version命令检测系统是否默认安装了jdk,如有可以使用rpm命令卸载!1、利用工具将下载的包放到/usr/local下并解压#切换到jdk目录下cd/u......
  • C/C++《面向对象程序设计课程设计》[2023-05-15]
    C/C++《面向对象程序设计课程设计》[2023-05-15]《面向对象程序设计课程设计》一、基本要求本课程设计集中安排1周时间进行,每位同学完成1个题目。要求学生根据题目需求描述,每位同学对每个题目的任务有需求描述、系统总体设计,通过面向对象语言C++进行模拟描述,最后通过编码、测试......
  • Linux内核debugfs介绍
    前言内核开发者经常需要导出一些信息到用户空间,用于分析内核运行逻辑。最常见的方法是使用printk(),不过在嵌入式中,printk()往往直接打印到console,一旦printk()被频繁调用的话,console就会被刷屏,此时输入命令都是件困难的事情。有时我们只想偶尔看一下某个内核变量的值,但是......
  • 将java开发环境装入linux系统
    使用该指令下载jdkwgethttps://dragonwell.oss-cn-shanghai.aliyuncs.com/8.6.6/Alibaba_Dragonwell_8.6.6_x64_linux.tar.gz使用 tarxf+文件名 解压文件tarxfAlibaba_Dragonwell_8.6.6_x64_linux.tar.gz配置环境变量vim/etc/profile 打开环境变量文件exportJAV......