首页 > 系统相关 >《Linux操作系统分析》课程总结报告

《Linux操作系统分析》课程总结报告

时间:2023-05-15 11:22:08浏览次数:48  
标签:操作系统 虚拟化 总结报告 中断 虚拟机 内核 Linux 进程

《Linux操作系统分析》课程总结报告

一、Linux系统的一般执行过程

最一般的情况:正在运行的用户态进程X切换到运行用户态进程Y的过程

  1. 正在运行的用户态进程X

  2. 发生中断

    save cs:eip/esp/eflags(current) to kernel stack
    load cs:eip(entry of a specific ISR) and ss:esp(point to kernel stack)
    
  3. SAVE_ALL //保存现场

  4. 中断处理过程中或中断返回前调用了schedule(),其中的switch_to做了关键的进程上下文切换

  5. 标号1之后开始运行用户态进程Y(这里Y曾经通过以上步骤被切换出去过因此可以从标号1继续执行)

  6. restore_all //恢复现场

  7. iret - pop cs:eip/ss:esp/eflags from kernel stack

  8. 继续运行用户态进程Y

    进程间的特殊情况

    通过中断处理过程中的调度时机,用户态进程与内核线程之间互相切换和内核线程之间互相切换
    与最一般的情况非常类似,只是内核线程运行过程中发生中断没有进程用户态和内核态的转换;
    内核线程主动调用schedule(),只有进程上下文的切换,没有发生中断上下文的切换,与最一般
    的情况略简略;
    创建子进程的系统调用在子进程中的执行起点及返回用户态,如fork;
    加载一个新的可执行程序后返回到用户态的情况,如execve;<br>0-3G内核态和用户态都可以访问,3G以上只能内核态访问。<br>内核是所有进程共享的。<br>内核是各种中断处理过程和内核线程的集合。
    

1.1 从CPU的角度来看

1.2 从内存角度来看

1.3 linux虚拟化

在虚拟化技术中,Linux系统的一般执行过程与非虚拟化环境下有所不同。在虚拟化环境下,Linux系统运行在虚拟机(VM)中,而不是直接在物理硬件上运行。

  1. 在虚拟化环境下,虚拟化层会拦截所有的硬件访问,并将其重定向到虚拟机中。这意味着在启动引导程序时,虚拟化层会加载虚拟机的引导程序而非物理主机上的引导程序;
  2. 在第3步时,虚拟化层会加载虚拟机的操作系统内核,而不是物理主机上的操作系统内核。每个虚拟机都可以运行自己的Linux系统,就好像它们在各自的物理计算机上一样;
  3. 在启动用户空间时,虚拟化层会为每个虚拟机提供独立的资源,并对它们进行隔离,以确保它们之间不会相互干扰。

二、课程收获

  1. 学习了x86和ARM64指令集架构,具体包括寄存器布局和指令集
  2. 掌握了linux内核的架构和运行原理,并自己动手学会了如何编译、调试
  3. 学习了linux操作系统中中断的具体流程,李春杰老师从硬件和软件的角度细致的讲解了中断的流程,包括底层的数据结构和函数源码,这让我明白,中断响应时不是简单的向设备发出信号就可以了。

标签:操作系统,虚拟化,总结报告,中断,虚拟机,内核,Linux,进程
From: https://www.cnblogs.com/MonoSirius/p/17401332.html

相关文章

  • Linux的一些命令记录
    tar压缩tar-cvfxxx.tarxxx#-c打包,仅打包,无压缩tar-zcvfxxx.tar.gz-Cxxx#-z表示用gzip压缩,常以gz或tgz结尾,-C打包xxx目录的所有内容解压tar-zxvfxxx.tar.gz#-x表示解压选项-c压缩;-x解压;-z使用gzip;-v显示所有过程;-f使用档案名字解决csdn无法复制的问......
  • Linux文件查找命令之locate与find
    locate与find是经常使用的Linux 命令,刚接触Linux时对这两个命令的使用傻傻的分不清。现在我们来对比一下两个命令到底有哪些区别。locatelocate让使用者可以很快速的搜寻档案系统内是否有指定的档案。其方法是先建立一个包括系统内所有档案名称及路径的数据库,之后当寻找......
  • RedHat Enterprise Linux 8.0终端命令界面字体放大缩小
    一、打开RedHat的终端命令界面。 二、放大界面中字体,Ctrl+Shit +“+”三、缩小界面中字体,Ctrl+ “-” ......
  • 最新ArchLinux安装教程【建议收藏】
    主要分为以下步骤1、下载Archlinux并制作U盘启动器2、开机选择U盘启动3、系统联网4、更换国内镜像源5、开始硬盘分区(UEFI+GPT)6、格式化并挂载分区7、安装操作系统8、配置GRUB等基础设置9、用户配置10、安装桌面环境及必备软件安装步骤如下一、制作U盘启动工具目前A......
  • 60秒内检查Linux服务器性能,你能做到吗?
    导读如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。概述:通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解uptim......
  • 常用linux命令以及git
    git最基本的流程1.创建工作目录,对工作目录进行修改(写代码开发)2.gitadd./里面包括githash-object-w文件名(修改了多少个目录中的文件,此命令就要被执行多少次)gitupdate-index .....3.gitcommit-m"这里写注释"里面包括gitwerite-treeg......
  • 如何优雅地删除 Linux 中的垃圾文件
    本文正在参与“性能优化实战记录”话题征文活动不知道大家是否也跟我一样,是一只要把的自己电脑文件安排的条理有序,把没用的文件会及时删掉的程序猿呢?如果是的话,那么我们可以愉快地探讨下文章的内容。如果不是的话,你也可以留下来凑凑热闹嘛(>-<)。下面要介绍的是今天的主角——tm......
  • Linux安装KafKa
    Linux安装KafKa​ 官方下载地址:http://kafka.apache.org/downloads.html​ 解压安装包tar-zxvfkafka_2.12-3.3.2.tgz​ 修改配置文件vimserver.properties#broker的全局唯一编号,不能重复,只能是数字broker.id=0#kafka运行日志(数据)存放的路径,路径不需要提前创......
  • Python 语言程序设计结课总结报告
            一整学期的python课程已经结束了,时间过的非常快,令人意犹未尽,也有许多课堂收获。        Python是一种代表简单主义思想的语言。阅读一个Python程序就像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。Python语言简单易学,语法规......
  • Linux(centos7.9)搭建DNS服务器
    一.DNS是什么 后期更新,目前只介绍服务器的搭建 二.linux搭建DNS服务器(目前只支持正向解析)以下服务器信息为该文档安装DNS服务环境 服务器信息:CentOS7  内核版本:3.10.0-1160.el7.x86_64 2.1 使用yum进行安装yuminstall-ybindbind-utils2.2安装完成后,查看......