课程总结报告

Linux系统的一般执行过程

(1)正在运行的用户态进程X。
(2)发生中断(包括异常、系统调用等),CPU完成以下动作。
    •    save cs:eip/ss:esp/eflags:当前CPU上下文压入进程X的内核堆栈。
    •    load cs:eip(entry of a specific ISR) and ss:esp(point to kernel stack):加载当前进程内核堆栈相关信息,跳转到中断处理程序,即中断执行路径的起点。
(3)SAVE_ALL,保存现场,此时完成了中断上下文切换,即从进程X的用户态到进程X的内核态。
(4)中断处理过程中或中断返回前调用了schedule函数,其中的switch_to做了关键的进程上下文切换。将当前进程X的内核堆栈切换到进程调度算法选出来的next进程(本例假定为进程Y)的内核堆栈,并完成了进程上下文所需的EIP等寄存器状态切换。详细过程见前述内容。
(5)标号1,即前述3.18.6内核的swtich_to代码第50行“”1:\t“ ”(地址为switch_to中的“$1f”),之后开始运行进程Y(这里进程Y曾经通过以上步骤被切换出去,因此可以从标号1继续执行)。
(6)restore_all,恢复现场,与(3)中保存现场相对应。注意这里是进程Y的中断处理过程中,而(3)中保存现场是在进程X的中断处理过程中,因为内核堆栈从进程X切换到进程Y了。
(7)iret - pop cs:eip/ss:esp/eflags,从Y进程的内核堆栈中弹出(2)中硬件完成的压栈内容。此时完成了中断上下文的切换,即从进程Y的内核态返回到进程Y的用户态。
(8)继续运行用户态进程Y。

Linux虚拟系统的原理是基于虚拟化技术实现的。虚拟化技术是一种将物理计算机资源(如CPU、内存、存储等)划分为多个虚拟计算机的技术。虚拟计算机可以运行不同的操作系统和应用程序,就像在不同的物理计算机上运行一样。

 Linux虚拟系统的实现有两种方式:全虚拟化和半虚拟化。全虚拟化是指在虚拟机中模拟完整的硬件环境,包括CPU、内存、存储、网络等。虚拟机中运行的操作系统和应用程序不需要做任何修改,就可以在虚拟机中运行。全虚拟化的缺点是性能较低,因为需要模拟完整的硬件环境。

 半虚拟化是指在虚拟机中模拟部分的硬件环境,如CPU和内存。虚拟机中运行的操作系统和应用程序需要做一些修改,以便能够在虚拟机中运行。半虚拟化的优点是性能较高,因为不需要模拟完整的硬件环境。

课程收获

本来对linux没什么兴趣,甚至从开学以来选课都在避开linux,但是这个课的时间实在是太好了,于是选了这门起初不感兴趣的课。没想到上了几节课后,在孟宁老师幽默风趣的讲课风格下我慢慢对linux有了兴趣,课上老师讲的linux的部分源码以及课下的实验作业让我从了解到明白了整体上的linux的内核启动、系统调用到细节上的进程的执行。在学习系统调用时,通过课堂以及课下实验我掌握了execv和fork的系统调用过程,这部分正好与我的工程实践有相关联系,收获颇多。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值