首页 > 其他分享 >xv6 traps

xv6 traps

时间:2023-10-18 13:55:29浏览次数:31  
标签:traps xv6 硬件 trap 寄存器 切换

trap: 在xv6操作系统中,"trap"是指程序从用户态切换到内核态的一种机制。这种切换通常会在几种情况下发生,例如:系统调用、出现页错误(page fault)或者外部设备触发了中断。Trap机制是通过一些特定的硬件指令和硬件状态来实现的,例如修改程序计数器(PC)的值,以便将程序的控制权转移到内核中的特定代码段。在这个过程中,硬件会自动执行一些操作,例如设置某些寄存器的状态,并可能涉及到一些汇编层面的处理,如保存寄存器的状态或切换页表等。

标签:traps,xv6,硬件,trap,寄存器,切换
From: https://www.cnblogs.com/ijpq/p/17771897.html

相关文章

  • xv6 进程切换中的锁:MIT6.s081/6.828 lectrue12:Coordination 以及 Lab6 Thread 心得
    引言这节课和上一节xv6进程切换是一个完整的的进程切换专题,上一节主要讨论进程切换过程中的细节,而这一节主要讨论进程切换过程中锁的使用,所以本节的两大关键词就是"Coordination"(协调)和"lostwakeup"Coordination就是有关出让CPU,直到等待的事件发生再恢复执行。人们发明了很......
  • Xv6 Lab10: file system
    Largefiles这个作业需要我们将xv6的最大文件大小从12+256Bytes修改为11+256+256*256Bytes。为了达成这个目标,我们需要使用二级索引块,对inode的addrs字段,首先将NDIRECT从$12$修改为$11$,即前$11$个block是directblock,addrs[NDIRECT]对应的块是一......
  • Mit6.s081 Lec15: xv6 的 logging system
    Logginglayerfilesystem设计的一大重要问题就是crashrecovery。这是因为文件系统操作往往涉及向磁盘多次写入,而几次写入之后的crash可能导致磁盘上的文件系统处于一个不一致的状态。Forexample,supposeacrashoccursduringfiletruncation(settingthelengthof......
  • Xv6 Lab9: Locks
    Memoryallocator这一题很简单,主要任务,就是为每个cpu维护一个空闲物理内存的链表freelist,xv6默认使用的结构体kmem,其中包含一个freelist供所有的cpu使用。我们要做的,就是把freelist修改成freelist的数组,即structrun*freelist[NCPU],其中NCPU是定义于kernel/par......
  • Xv6 Lab7: Multithreading
    Uthread:switchingbetweenthreads这个题还是对的起它moderate的难度了,如果认真看了book-riscv-rev2.pdf的Scheduling章节,以及看了这个课程翻译,那么这题可以很快做出来,个人觉得pdf讲得更加清楚一些。这个题甚至帮你把需要添加代码的地方都标注出来了,参照题目说明,主要......
  • Xv6 Lab6: Copy-on-Write Fork for xv6
    思路经过lab5:lazypageallocation之后,对xv6的pagefault的处理,算是有所了解了。今天这个COW实验,在2020年的课程视频中有对思路的讲解,可以先看看课程翻译,厘清一下思路。整体思路其实也不难,默认情况下,fokr会调用uvmcopy,将父进程的PP(物理页)复制一份,将这个PP的......
  • Xv6 Lab2
    系统调用Lab1主要是基于提供的系统调用接口来编写一些小工具程序,而Lab2则是要我们自己实现系统调用,并提供系统调用的接口。以本次Lab要我们实现的trace调用为例,说明一下系统调用的流程:在user/trace.c的第$15$行,调用了属于systemcall的trace函数,当前执行makeq......
  • Xv6 Lab4
    RISC-VassemblyWhichregisterscontainargumentstofunctions?Forexample,whichregisterholds13inmain'scalltoprintf?a2寄存器,函数调用时,参数从左到右会依次保存在a0,a1,a2,a3寄存器,似乎是一直到寄存器a7的。Whereisthecalltofunctionfinthe......
  • Xv6 Lab2
    系统调用Lab1主要是基于提供的系统调用接口来编写一些小工具程序,而Lab2则是要我们自己实现系统调用,并提供系统调用的接口。以本次Lab要我们实现的trace调用为例,说明一下系统调用的流程:在user/trace.c的第$15$行,调用了属于systemcall的trace函数,当前执行makeq......
  • Xv6 操作系统组织架构
    进程概述64位的RISC-V的VAS是39位的,即VA只有39位,而Xv6则只有38位,最大虚拟地址为#defineMAXVA0x3fffffffff。VAS的顶端,即最高位存放了两个page,一个是用于trampoline,一个用于mappingtheprocess'strapframe。Xv6使用这两个page来切换到内核以及返回。......