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

1.虚拟化技术

1.1虚拟化技术介绍:

虚拟化是云计算的基础。虚拟化使得在一台物理服务器上可以运行多台虚拟机,虚拟机共享物理机的CPU、内存、I/O硬件资源,但逻辑上虚拟机之间是相互隔离的。OpenStack作为IaaS云操作系统,最主要的服务就是为用户提供虚拟机。在目前 OpenStack 的实际应用中,主要使用 KVM 和Xen这两种Linux虚拟化技术。

1.2计算机虚拟化的基础

虚拟化主要是指通过软件实现的方案,常见的体系结构是一个直接在物理主机上运行虚拟机管理程序的虚拟化系统。在 x86平台虚拟化技术中,这个虚拟机管理程序通常被称为虚拟机监控器(Virtual Machine Monitor,VMM),又称为Hypervisor。它是运行在物理机和虚拟机之间的一个软件层,物理机被称为主机(Host),虚拟机被称为客户机(Guest),中间软件层即Hypervisor。

主机:指物理存在的计算机,又称宿主计算机(简称宿主机)。当虚拟机嵌套时,运行虚拟机的虚拟机也是宿主机,但不是物理机。主机操作系统是指宿主计算机上的操作系统,在主机操作系统上安装的虚拟机软件可以在计算机上模拟一台或多台虚拟机。

虚拟机:指在物理计算机上运行的操作系统中模拟出来的计算机,又称客户机,理论上完全等同于实体的物理计算机。每个虚拟机都可安装自己的操作系统或应用程序,并连接网络。运行在虚拟机上的操作系统称为客户操作系统。

Hypervisor基于主机的硬件资源给虚拟机提供了一个虚拟的操作平台并管理每个虚拟机的运行,所有虚拟机独立运行并共享主机的所有硬件资源。Hypervisor就是提供虚拟机硬件模拟的专门软件,可分为两类:原生型和宿主型。

原生型(Native):原生型又称裸机型(Bare-metal),Hypervisor作为一个精简的操作系统(操作系统也是软件,只不过它是一个比较特殊的软件)直接运行在硬件之上以控制硬件资源并管理虚拟机。比较常见的有VMware ESXi、Microsoft Hyper-V等。

宿主型(Hosted):宿主型又称托管型,Hypervisor运行在传统的操作系统上,同样可模拟出一整套虚拟硬件平台。比较著名的有VMware Workstation、Oracle Virtual Box等。

从性能角度来看,不论原生型还是宿主型都会有性能损耗,但宿主型比原生型的损耗更大,所以企业生产环境中基本使用的是原生型Hypervisor,宿主型的Hypervisor一般用于实验或测试环境中。

全虚拟化和半虚拟化
根据虚拟化实现技术的不同,虚拟化可分为全虚拟化和半虚拟化两种,其中,全虚拟化产品将是未来虚拟化的主流。

全虚拟化(Full Virtualization):用全虚拟化模拟出来的虚拟机中的操作系统是与底层的硬件完全隔离的,虚拟机中所有的硬件资源都通过虚拟化软件来模拟。这为虚拟机提供了完整的虚拟硬件平台,包括处理器、内存和外设,支持运行任何理论上可在真实物理平台上运行的操作系统,为虚拟机的配置提供了较大程度的灵活性。每台虚拟机都有一个完全独立和安全的运行环境,虚拟机中的操作系统也不需要做任何修改,并且易于迁移。在操作全虚拟化的虚拟机的时候,用户感觉不到它是一台虚拟机。全虚拟化的代表产品有VMware ESXi和KVM。

由于虚拟机的资源都需要通过虚拟化软件来模拟,虚拟机会损失一部分的性能。

半虚拟化(Para Virtualization):半虚拟化的架构与全虚拟化基本相同,需要修改虚拟机中的操作系统来集成一些虚拟化方面的代码,以减小虚拟化软件的负载。其代表产品有Microsoft Hyper-V和XEN。

半虚拟化模拟出来的虚拟机整体性能会更好些,因为修改后的虚拟机操作系统承载了部分虚拟化软件的工作。不足之处是,由于要修改虚拟机的操作系统,用户会感知使用的环境是虚拟化环境,而且兼容性比较差,用户使用时也比较麻烦,需要获得集成虚拟化代码的操作系统。

2.Linux系统的一般执行过程

2.1Linux系统的一般执行过程分析

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

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

(2)发生中断——save cs:eip/esp/eflags(current) to kernel stack,then 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

2.2Linux系统执行过程中的几个特殊情况

(1)通过中断处理过程中的调度时机,用户态进程与内核线程之间互相切换和内核线程之间互相切换,与最一般的情况非常类似,只是内核线程运行过程中发生中断没有进程用户态和内核态的转换;

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

(3)创建子进程的系统调用在子进程中的执行起点及返回用户态,如fork;

(4)加载一个新的可执行程序后返回到用户态的情况,如execve;

3.课程总结:

通过这门课程,我学会了如何创建虚拟机,并在虚拟机上通过vscode对Linux源码进行调试,了解了进程的是如何在Linux系统中进行创建并且进行切换,理解了系统调用的实现流程,更加深刻的了解了中断在系统中的实现过程,最后也感受到了虚拟化技术的神奇之处,让我更加深刻了理解了所谓的系统是怎样一种东西,为我之后进行嵌入式开发和后端开发的学习过程打下了坚实的理论基础。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值