问题标签 [xv6]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1630 浏览

c - 一个进程在 xv6 中可以获得(分配)多大(多少内存)?

假设我想使用 malloc() 在进程中分配一些内存

我可以将 SOME_NUM 设置为的最大数字是多少?

0 投票
2 回答
2978 浏览

c - xv6中的PGROUNDUP和PGROUNDDOWN是什么意思?

在 xv6mmu.h文件中,有这两行代码

他们在做什么?

0 投票
1 回答
277 浏览

c - 为什么这个程序分配了 8 个页面,却只能容纳 2048 个大小为 8 字节的节点?

一个节点定义如下:

通过使用sizeof(struct node),我了解到一个节点是 8 个字节(在 xv6 中)。所以我使用malloc分配一些内存空间来存储一些节点。xv6 中单页是 4096 字节,如果我有 8 页,我可以存储 4096 个这样的节点。但是,这不是发生的事情,在我malloc2048 个这样的节点之后,如果我malloc再添加一个,则为当前进程分配更多的页面,这是为什么呢?

这就是我很困惑的地方,前8页不应该有很多空间吗?既然单个节点的大小只有8个字节,为什么还要给进程分配更多的页呢?

0 投票
1 回答
349 浏览

unix - xv6 中上下文切换期间的硬件和软件保存

我正在研究操作系统上的 xv6上下文切换:三件简单书。我无法完全理解第 6 章(第 8 页)的保存和恢复上下文部分。

  • 为什么在上下文切换协议期间会发生两种类型的寄存器保存/恢复?
  • 提到的用户寄存器内核寄存器有什么区别?
  • 是什么意思:

    通过切换堆栈,内核在一个进程(被中断的进程)的上下文中进入对切换代码的​​调用,并在另一个进程(即将执行的进程)的上下文中返回。

0 投票
0 回答
953 浏览

c - 在 xv6 中为 char 数组赋值

我在 xv6 中进行了系统调用,并试图更改进程名称。进程名称存在于如下所示的 proc 结构中:

我尝试使用以下代码访问该名称,并为其分配一个值:

我收到以下错误:

proc.c:在函数“modifyCurrentProcessName”中:proc.c:490:15:错误:赋值给数组类型为 proc->name= &newName; 的表达式 ^ : 目标 'proc.o' 的配方失败 make: *** [proc.o] 错误 1

0 投票
0 回答
2092 浏览

assembly - xv6 上下文切换

此代码是 xv6 中为上下文切换给出的代码。虽然我能够理解整个代码将寄存器从旧上下文保存到 PCB 上,但我无法理解每条线的工作原理。

有人可以帮助我了解如何将 CPU 寄存器保存到 PCB 上吗?

0 投票
1 回答
1609 浏览

c - 如何使文件在 xv6 QEMU 中显示为“ls”?

我在 QEMU 中搞乱 xv6,我在我所在的目录中创建了一个新文件,当我在 QEMU 中并键入ls该文件时没有列出。事实上,很多文件都没有列出,我不明白为什么它列出了它列出的那些。它似乎只列出了编译.c文件,出于某种原因是一个 README,而不是.c我刚刚制作的编译文件。

0 投票
2 回答
2910 浏览

linux - 如何在 xv6 中获取 pgdir?

我正在尝试向 xv6 添加一个系统调用,该系统调用在给定虚拟地址的情况下提供翻译后的物理地址。结合下面的函数定义,我写了一个系统调用。使用的功能:



这是我的代码:

proc.c

系统进程

addr_translation.c(从我调用系统调用的地方)

基本上,我将虚拟地址作为用户的参数并将其传递给我的系统调用。我正在检索argstr()系统调用中使用的虚拟地址。

我被卡住的部分是,我无法理解如何在我的add_translate()函数中初始化 pgdir(页面目录) proc.c

0 投票
2 回答
5180 浏览

xv6 - 如何将值传递给系统调用 XV6

我正在尝试创建一个系统调用,它将增加一个添加到 cpu 结构中的数字。但是我相信一个系统调用必须是无效的,所以我如何在调用它时传递一个值。

增量号(3);

0 投票
1 回答
510 浏览

qemu - 使用模拟器 QEMU 时无法在 xv6 中执行 cd

我用 os xv6 安装了 qemu 模拟器。我试图编译一个用 c 编写的项目,其中包括:makefile、2 个 c 文件和头文件。我打开了 qemu 终端,并尝试使用命令 cd 更改目录以获取文件,它对我说:“无法 cd”

qem 控制台