书栈网 · BookStack 本次搜索耗时 0.010 秒,为您找到 178 个相关结果.
  • 实现:初始化中断门描述符表

    【实现】初始化中断门描述符表 【实现】初始化中断门描述符表 ucore操作系统如果要正确处理各种不同的中断事件,就需要安排应该由哪个中断服务例程负责处理特定的中断事件。系统将所有的中断事件统一进行了编号(0~255),这个编号称为中断号或中断向量。 为了完成中断号和中断服务例程起始地址的对应关系,首先需要建立256个中断处理例程的入口地址。为此,通...
  • 基本思路

    基本思路 基本思路 【提示】请先看练习2中提到的论文, 理解后在看下面的内容。 考察 round-robin 调度器,在假设所有进程都充分使用了其拥有的 CPU 时间资源的情况下,所有进程得到的 CPU 时间应该是相等的。但是有时候我们希望调度器能够更智能地为每个进程分配合理的 CPU 资源。假设我们为不同的进程分配不同的优先级,则我们有可能希望...
  • 练习5

    练习5:实现函数调用堆栈跟踪函数 (需要编程) 练习5:实现函数调用堆栈跟踪函数 (需要编程) 我们需要在lab1中完成kdebug.c中函数print_stackframe的实现,可以通过函数print_stackframe来跟踪函数调用堆栈中记录的返回地址。在如果能够正确实现此函数,可在lab1中执行 “make qemu”后,在qemu模拟器中...
  • lab1中对中断的处理实现

    lab1中对中断的处理实现 lab1中对中断的处理实现 (1) 外设基本初始化设置 Lab1实现了中断初始化和对键盘、串口、时钟外设进行中断处理。串口的初始化函数serial_init(位于/kern/driver/console.c)中涉及中断初始化工作的很简单: ...... // 使能串口1接收字符后产生中断 outb...
  • BIOS启动过程

    BIOS启动过程 补充信息 BIOS启动过程 当计算机加电后,一般不直接执行操作系统,而是执行系统初始化软件完成基本IO初始化和引导加载功能。简单地说,系统初始化软件就是在操作系统内核运行之前运行的一段小软件。通过这段小软件,我们可以初始化硬件设备、建立系统的内存空间映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好...
  • 实现:中断处理过程

    【实现】中断处理过程 【实现】中断处理过程 当中断产生后,首先硬件要完成一系列的工作(如小节“中断处理中硬件负责完成的工作”所描述的“硬件中断处理过程1(起始)”内容),由于中断发生在内核态执行过程中,所以特权级没有变化,所以CPU在跳转到中断处理例程之前,还会在内核栈中依次压入错误码(可选)、EIP、CS和EFLAGS,下图显示了在相同特权级下中断...
  • 附录A. 探测物理内存分布和大小的方法

    探测物理内存分布和大小的方法 操作系统需要知道了解整个计算机系统中的物理内存如何分布的,哪些可用,哪些不可用。其基本方法是通过BIOS中断调用来帮助完成的。其中BIOS中断调用必须在实模式下进行,所以在bootloader进入保护模式前完成这部分工作相对比较合适。这些部分由boot/bootasm.S中从probe_memory处到finish_pro...
  • 调度点的相关关键函数

    调度点的相关关键函数 调度点的相关关键函数 虽然进程各种状态变化的原因和导致的调度处理各异,但其实仔细观察各个流程的共性部分,会发现其中只涉及了三个关键调度相关函数:wakup_proc、shedule、run_timer_list。如果我们能够让这三个调度相关函数的实现与具体调度算法无关,那么就可以认为ucore实现了一个与调度算法无关的调度框架。...
  • 练习6

    练习6:完善中断初始化和处理 (需要编程) 练习6:完善中断初始化和处理 (需要编程) 请完成编码工作和回答如下问题: 中断描述符表(也可简称为保护模式下的中断向量表)中一个表项占多少字节?其中哪几位代表中断处理代码的入口? 请编程完善kern/trap/trap.c中对中断向量表进行初始化的函数idt_init。在idt_init函数中,依次对...
  • proj8:支持页换入换出

    proj8:支持页换入换出 proj8项目组成 proj8编译运行 proj8:支持页换入换出 proj8项目组成 编译并运行proj8的命令如下: make make qemu 则可以得到如下显示界面 proj8 │ ├── driver │ │ ├── … │ │ ├...