问题标签 [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.
c - 一个进程在 xv6 中可以获得(分配)多大(多少内存)?
假设我想使用 malloc() 在进程中分配一些内存
我可以将 SOME_NUM 设置为的最大数字是多少?
c - xv6中的PGROUNDUP和PGROUNDDOWN是什么意思?
在 xv6mmu.h
文件中,有这两行代码
他们在做什么?
c - 为什么这个程序分配了 8 个页面,却只能容纳 2048 个大小为 8 字节的节点?
一个节点定义如下:
通过使用sizeof(struct node)
,我了解到一个节点是 8 个字节(在 xv6 中)。所以我使用malloc
分配一些内存空间来存储一些节点。xv6 中单页是 4096 字节,如果我有 8 页,我可以存储 4096 个这样的节点。但是,这不是发生的事情,在我malloc
2048 个这样的节点之后,如果我malloc
再添加一个,则为当前进程分配更多的页面,这是为什么呢?
这就是我很困惑的地方,前8页不应该有很多空间吗?既然单个节点的大小只有8个字节,为什么还要给进程分配更多的页呢?
c - 在 xv6 中为 char 数组赋值
我在 xv6 中进行了系统调用,并试图更改进程名称。进程名称存在于如下所示的 proc 结构中:
我尝试使用以下代码访问该名称,并为其分配一个值:
我收到以下错误:
proc.c:在函数“modifyCurrentProcessName”中:proc.c:490:15:错误:赋值给数组类型为 proc->name= &newName; 的表达式 ^ : 目标 'proc.o' 的配方失败 make: *** [proc.o] 错误 1
assembly - xv6 上下文切换
此代码是 xv6 中为上下文切换给出的代码。虽然我能够理解整个代码将寄存器从旧上下文保存到 PCB 上,但我无法理解每条线的工作原理。
有人可以帮助我了解如何将 CPU 寄存器保存到 PCB 上吗?
c - 如何使文件在 xv6 QEMU 中显示为“ls”?
我在 QEMU 中搞乱 xv6,我在我所在的目录中创建了一个新文件,当我在 QEMU 中并键入ls
该文件时没有列出。事实上,很多文件都没有列出,我不明白为什么它列出了它列出的那些。它似乎只列出了编译.c
文件,出于某种原因是一个 README,而不是.c
我刚刚制作的编译文件。
linux - 如何在 xv6 中获取 pgdir?
我正在尝试向 xv6 添加一个系统调用,该系统调用在给定虚拟地址的情况下提供翻译后的物理地址。结合下面的函数定义,我写了一个系统调用。使用的功能:
这是我的代码:
proc.c
系统进程
addr_translation.c(从我调用系统调用的地方)
基本上,我将虚拟地址作为用户的参数并将其传递给我的系统调用。我正在检索argstr()
系统调用中使用的虚拟地址。
我被卡住的部分是,我无法理解如何在我的add_translate()
函数中初始化 pgdir(页面目录) proc.c
。
xv6 - 如何将值传递给系统调用 XV6
我正在尝试创建一个系统调用,它将增加一个添加到 cpu 结构中的数字。但是我相信一个系统调用必须是无效的,所以我如何在调用它时传递一个值。
增量号(3);