当前位置: 首页 > news >正文

Lab 3 Page Table

题目链接

我的问题:

1 每个进程的kernel stack是干啥的来着?在何时初始化的?

题目2:A kernel page table per process (hard)

1 一些题目要求

Your first job is to modify the kernel so that every process uses its own copy of the kernel page table when executing in the kernel. Modify struct proc to maintain a kernel page table for each process, and modify the scheduler to switch kernel page tables when switching processes.

思路:
1 首先得修改每个proc的结构体,在里面新添加一份page table,还得找地方给这个page table初始化。

2 Make sure that each process’s kernel page table has a mapping for that process’s kernel stack.
XV6原来代码中 procinit函数中把每个process的kernel stack初始化映射到kernel page table中

// initialize the proc table at boot time.
void
procinit(void)
{
  struct proc *p;
  
  initlock(&pid_lock, "nextpid");
  for(p = proc; p < &proc[NPROC]; p++) {
      initlock(&p->lock, "proc");

      // Allocate a page for the process's kernel stack.
      // Map it high in memory, followed by an invalid
      // guard page.
      char *pa = kalloc();
      if(pa == 0)
        panic("kalloc");
      uint64 va = KSTACK((int) (p - proc));
      kvmmap(va, (uint64)pa, PGSIZE, PTE_R | PTE_W);
      p->kstack = va;
      p->kstack_pa = pa;
  }
  kvminithart();
}
// Switch h/w page table register to the kernel's page table,
// and enable paging.
void
kvminithart()
{
  w_satp(MAKE_SATP(kernel_pagetable));
  sfence_vma();
}

在XV6操作系统中,kalloc 和 kfree 是内核中用于物理内存页管理的核心函数。它们负责分配和释放物理内存页(每个页的大小为4KB),为内核其他模块(如进程创建、文件系统、页表等)提供动态内存支持。

相关文章:

  • Linux系统基于ARM平台的LVGL移植
  • 深度学习语义分割数据集全景解析
  • 物理机、虚拟机、容器化怎么选择?
  • JT1078和GB28181差别在哪里?
  • C++(初阶)(二)——类和对象
  • 文件 IO
  • 豆包大模型 MarsCode AI 刷题专栏 001
  • Kotlin协程(六)Flow流
  • 掌握高效大模型任务流搭建术(二):链式流程如何赋能 AI 处理能力提升
  • Chapter 1 Introduction
  • qt open3dAlpha重建
  • proto3语法
  • 修改git fetch后引用没更新
  • 1493. 删掉一个元素以后全为 1 的最长子数组
  • Redis - 核心原理深度解析:线程模型、持久化与高可用性
  • TensorFlow深度学习实战(10)——迁移学习详解
  • Swagger UI界面的使用
  • 系统架构设计师教材:数据库设计基础知识
  • 从零开始的 Kafka 学习(二)| 集群启动
  • 深入解析 Umi-OCR:高效的免费开源 OCR 文字识别工具
  • 建设大型网站制作品牌/关键词优化推广公司排名
  • 响应式模板网站建设哪家好/关键词词库
  • 武汉做网站的知名公司/网站排名点击工具
  • 给别人做网站赚钱/优云优客百度推广效果怎么样
  • 总公司网站备案后 分公司网站还需要备案吗/长春seo公司
  • php网站服务器搭建/seo外链推广工具下载