首页 > 其他分享 >MIT 6.1810 Lab: Summary

MIT 6.1810 Lab: Summary

时间:2024-02-25 19:56:56浏览次数:23  
标签:中断 Lab CPU 内核 进程 6.1810 上下文 MIT

实验笔记

MIT 6.1810 Lab: Xv6 and Unix utilities

MIT 6.1810 Lab: system calls

MIT 6.1810 Lab: page tables

MIT 6.1810 Lab: traps

MIT 6.1810 Lab: Copy-on-Write Fork for xv6

MIT 6.1810 Lab: Multithreading

待续

总结

xv6是一个十分精巧的操作系统,它的每个模块是否简单,却又保留各种操作系统设计的理念。通过对xv6的源码进行学习,可以真正理解操作系统的原理与底层的代码逻辑。

内核

对于内核的理解一直是让人困惑的。一方面,内核在系统调用时接管,代进程执行;另一方面,内核维护着整个系统运作,处理中断与外设,像是一个庞大的后台进程。内核可以被调度、可以被中断、中断又是内核在执行……学习操作系统时总是会有各种各样的概念、设计、方法,但是如果不能真正的理解内核,就难以将操作系统的学习连成一个有机的整体。

XV6是一个精简版的操作系统,可能与现在Linux内核有很大的不同,但却对我对内核的理解有了很大的启发。我们知道内核往往是由Bootloader在开机加电后塞到内存中,然后程序流跳转的内核的入口,内核进行初始化,这段时间内核表现像是CPU的唯一进程。另一个问题就是多CPU怎么办,每个CPU核心都会跳转到内核的初始化程序处,但是这段程序往往会根据获取CPU编号,只用一个核心完成初始化。

初始化的最后,这里内核变成永远循环的调度程序,从属于每个CPU核心。调度程序会不停的将CPU跳转到某一进程,进程会因时钟中断将CPU跳转到调度程序。在此之后,就要把内核理解为常驻内存的一段程序。当发生系统调用、外部中断,CPU就会按照预先的设置,执行一部分内核代码,并最终返回。

进程上下文、中断上下文这些概念往往是指,特定状态下,内核实现某一功能的逻辑程序流,不能孤立的认为某一段程序是某上下文。

此外还有内核线程,它的组织与用户进程一样,但是永远执行内核程序,与用户进程一起被调度。

进程调度

xv6中不区分进程与线程。进程是xv6调度的单位,进程运行在CPU上,时钟中断使进程进入内核态,时钟中断会将激活调度程序。从进程切换到调度程序的最后,就是将当前的上下文(此时位于内核,保存的是内核上下文,用户程序的上下文在发生中断时,保存在进程的虚拟地址空间中)保存在当前进程的进程描述符中,切换前的最后一条语句是ret,将控制流指向ra寄存器指向的位置,ra即调用切换寄存器函数的函数下一句,因为切换寄存器函数是被调用的,因此在切换寄存器函数中,ra存储的是调用函数的下一句。

中断

在XV6中,在用户空间和内核空间发生中断时,处理的逻辑是不同的。发生中断时,CPU会根据寄存器中存储的中断向量,跳转到指定的位置。因此在用户空间和内核空间中,中断寄存器中保存的地址是不同的,这个寄存器的修改会在特权空间切换时修改。

在用户空间,系统调用又称软中断,与硬件中断的处理方式相同。中断发生时,硬件关中断、改特权、保存PC、跳转程序。在XV6中首先跳转到uservec,在这里保存用户上下文到进程地址空间的保留区域,最后切换内核页表,由内核完成相应操作。最终会由userret恢复用户上下文。

在内核空间,发生中断时会将当前的内核上下文保存在内核栈中(内核栈属于当前内核上下文的从属进程)。其中kernelvec保存内核上下文,kernelret恢复内核上下文。

时钟中断无论发生在用户空间还是内核空间都会激活调度程序,两者的区别是,用户空间发生时钟中断时,会先保存用户上下文陷入内核,后续除了调用的trap函数不同外,处理逻辑基本一致。

系统调用

待续

标签:中断,Lab,CPU,内核,进程,6.1810,上下文,MIT
From: https://www.cnblogs.com/benoqtr/p/18032830

相关文章

  • 基于Harris角点的多视角图像全景拼接算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述       基于Harris角点的多视角图像全景拼接算法是一种在计算机视觉和图像处理领域中广泛应用的算法,用于将来自不同视角的多个图像拼接成一个全景图像。该算法主要依赖于特征点检测和图像......
  • SciTech-Mathmatics-automatic equation Numbering / \tag{E} / \label{E} / \ref{
    https://discourse.devontechnologies.com/t/numbering-and-tagging-equations-in-mathjax/69524/2IwentaroundincirclestryingtofigureouthowtonumberandtagequationsinMathJaxinDT3.TheMathJaxDocsshowshowtodoautomaticequationnumbering21......
  • [MIT 6.S081] Lab: mmap
    Lab:mmap在本次实验中,我们要实现的是一个比较简简单的mmap实现,将文件映射到内存中的某个块,并根据权限设置这块内存的行为,以及为其提供延迟分配策略。mmap对于将文件映射到内存,其实是先规划好一块区域给文件使用,为什么要提供延迟分配,是因为如果需要映射一个文件时,就规划好一......
  • rebase 删除分支中某个 commit 之前的 commit
    要删除分支中的commit,可以使用gitrebase命令。以下是具体步骤:首先,使用gitlog命令查看要删除的commit的哈希值。然后,使用gitrebase-i<commit>命令进入交互式rebase模式,其中<commit>是要删除的commit的前一个commit的哈希值。在交互式rebase模式中......
  • MIT 6.5840 MapReduce Lab
    MapReduceMapReduce是一种编程模型,其思想是让程序员通过编写简单的Map和Reduce程序就能完成分布式系统的任务,而不需要关注分布式的具体细节。用户自定义的Map函数接受一个key/valuepair的输入值,然后产生一个中间key/valuepair值的集合。MapReduce库把所有具有相同中......
  • Linear-Time Graph Neural Networks for Scalable Recommendations
    目录概符号说明MotivationLTGNN代码ZhangJ.,XueR.,FanW.,XuX.,LiQ.,PeiJ.andLiuX.Linear-timegraphneuralnetworksforscalablerecommendations.WWW,2024.概在大图上的一种高效的训练方式.符号说明\(\mathcal{V}\),nodeset;\(\mathcal{E}\),edg......
  • 基于yolov2深度学习网络的车辆行人检测算法matlab仿真
    1.算法运行效果图预览   2.算法运行软件版本MATLAB2022a 3.算法理论概述      近年来,深度学习在计算机视觉领域取得了显著成果,特别是在目标检测任务中。YOLO(YouOnlyLookOnce)系列算法作为其中的代表,以其高效和实时的性能受到广泛关注。YOLOv2,作为YOL......
  • 基于WIFI指纹的室内定位算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a 3.算法理论概述        随着移动互联网和物联网技术的飞速发展,位置服务(LBS)已成为许多应用的核心功能,如导航、社交网络和智能物流等。室外定位技术,如全球定位系统(GPS),已相当成熟并广泛应用。然而,由于建......
  • m基于深度学习网络的活体人脸和视频人脸识别系统matlab仿真,带GUI界面
    1.算法仿真效果matlab2022a仿真结果如下:  2.算法涉及理论知识概要        随着人工智能技术的快速发展,人脸识别技术已经广泛应用于身份验证、安全监控、智能支付等领域。活体人脸和视频人脸识别系统是其中的重要分支,旨在通过深度学习网络对人脸进行高效、准确......
  • [GIT] 修改之前的commit提交的作者信息和邮箱信息 [转]
    1总体思路更改之前提交的作者信息和邮箱信息需要进行两步操作。首先,使用gitfilter-branch命令进行历史重写然后,使用gitpush--force将更改推送到远程仓库。Step1使用gitfilter-branch进行历史重写在终端或命令行中执行以下命令:gitfilter-branch--env-filte......