问题标签 [pintos]
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 - 在 Bochs 中安装 PintOS
过去几天我在 Bochs 安装 Pintos。一切都在“线程”目录中编译得很好,我也把所有的路径都设置好了。我在构建目录中有 kernel.lo 和其他文件。
问题在于我运行的最后一个命令: pintos run alarm-multiple
这会产生一个错误:无法识别的字符 \x16; if ($<-- HERE 在 /home/superboy/pintos/src/utils/pintos 第 911 行的第 7 列附近由 <-- HERE 标记。
pintos 脚本第 911 行的代码是:
我正在使用 Debian-9 Stretch
ubuntu - 使检查失败 pintos 测试用例
所以我对 Ubuntu 和 PintOS 也很陌生。我们的第一个任务是在 qemu 上安装 PintOS,并对一些文件进行一些更改以执行它们。但是,make check 在 Ubuntu 16.04 LTS 上给了我这些错误。
我朋友在 Ubuntu 14.04 上使用时没有报错。我可以得到任何建议,以便我可以在 16.04 LTS 上运行它而不是安装旧版本的 Ubuntu 吗?
c++ - 编译代码时出现类型定义错误
我已经在另一个可以运行的 Linux 环境中运行了这段代码,但是当我在我的机器上运行这段代码时,它显示了一个错误。
代码是:
我在机器中遇到的错误是:
linux - Pintos,检查失败。运行未正确启动:没有“Pintos booting”消息
我发现有人在PintOS 之前问过一个相关问题,内核恐慌与 -v 选项 bochs on ubuntu
但是,我尝试了,但没有奏效。“pintos -- run alarm-multiple”看起来不错,但是当我做“检查”时
......
Run didn't start up properly: no "Pintos booting" message
pintos -v -k -T 480 --bochs -- -q -mlfqs run mlfqs-block < /dev/null 2> tests/threads/mlfqs-block.errors > tests/threads/mlfqs-block.output
perl -I../.. ../../tests/threads/mlfqs-block.ck tests/threads/mlfqs-block tests/threads/mlfqs-block.result
FAIL tests/threads/mlfqs-block
Run didn't start up properly: no "Pintos booting" message
FAIL tests/threads/alarm-single
FAIL tests/threads/alarm-multiple
FAIL tests/threads/alarm-simultaneous
FAIL tests/threads/alarm-priority
FAIL tests/threads/alarm-zero
FAIL tests/threads/alarm-negative
FAIL tests/threads/priority-change
FAIL tests/threads/priority-donate-one
FAIL tests/threads/priority-donate-multiple
FAIL tests/threads/priority-donate-multiple2
FAIL tests/threads/priority-donate-nest
FAIL tests/threads/priority-donate-sema
FAIL tests/threads/priority-donate-lower
FAIL tests/threads/priority-fifo
FAIL tests/threads/priority-preempt
FAIL tests/threads/priority-sema
FAIL tests/threads/priority-condvar
FAIL tests/threads/priority-donate-chain
FAIL tests/threads/mlfqs-load-1
FAIL tests/threads/mlfqs-load-60
FAIL tests/threads/mlfqs-load-avg
FAIL tests/threads/mlfqs-recent-1
FAIL tests/threads/mlfqs-fair-2
FAIL tests/threads/mlfqs-fair-20
FAIL tests/threads/mlfqs-nice-2
FAIL tests/threads/mlfqs-nice-10
FAIL tests/threads/mlfqs-block
27 of 27 tests failed.
../../tests/Make.tests:26: recipe for target 'check' failed
make: *** [check] Error 1
multithreading - “堆栈”如何影响线程的执行?
我正在研究 Pintos。
这有点像用于学习构建操作系统的教育工具,并且我正在从事第二个项目,该项目旨在为用户程序构建支持。
因此,首要任务是设置堆栈!伟大的。
问题是——从一开始我就对堆栈这个词感到不寒而栗——因为我永远无法完全理解堆栈是什么以及它如何影响程序或线程的执行。所以我知道这是在 RAM 中设置的内存区域,仅此而已。
我的问题如下:
- 栈的作用是什么?
- 关于程序计数器、寄存器和堆栈指针,“堆栈”如何影响 CPU 中线程的执行?
- 东西是如何添加到堆栈中的,又是如何从堆栈中删除的?
- 此外,即使您不了解 Pintos,在操作系统中构建对用户程序的支持时,“设置堆栈”是什么意思?
c - 将指向 A 的指针转换为指向嵌入 A 的结构 B 的指针
在 Pintos 项目中,有一个宏可以像我在标题中写的那样转换指针。
(在 src/lib/kernel/list.h)
为什么不是这样?
pintos - Pintos - UserProg 所有测试都失败 is_kernel_vaddr()
我正在做 Pintos 项目,以了解有关操作系统的更多信息。起初我遇到了大量的开发问题,因为它在 18.04 的 Ubuntu droplet 上运行不佳。我现在在 UCCS 告诉学生下载 pintos 的 VirtualBox 图像上运行它。
我完成了项目 1 并开始为项目 2 制定解决方案。按照说明创建我运行的文件
但我收到错误
然后我尝试运行 make check (所有测试)。由于同样的原因,他们都失败了。
我错过了什么吗?我需要实施什么来解决这个问题吗?我重新阅读说明并没有看到任何内容?
非常感谢帮助!谢谢
pintos - Pintos - 系统调用项目 2
我正在做 Pintos 项目,以了解有关操作系统的更多信息。我完成了项目 1 并开始了第二个项目。我已经验证了设置堆栈并且可以正常工作(通过 hex_dump)。现在我在获取正确的系统调用参数时遇到问题。
在 user/syscall.c 中有 4 个程序集存根(0 - 4 个存根)由用户系统调用包装。
我的 syscall_handler 中有一些代码在内核中调用正确的函数。
在我的 write 函数中,我打印出 FD 和 Size
运行“echo hello stack overflow 1 22 333”将产生以下结果。注意我在括号中添加了注释。() <- 有些事情搞砸了,FD 被大小覆盖(包括空终止符)
我已经用 GDB 设置断点和转储帧来运行它,但无法弄清楚。有没有人遇到过类似的事情?如果是这样,您是如何解决的?
谢谢!
c - PintOS proj2 userprog Kernel Panic 格式化文件系统分区
pintos -f -q
此命令将导致此错误
00000000000i[ ] 从 bochsrc.txt 读取配置 00000000000e[ ] bochsrc.txt:8: 'user_shortcut' 将被新的 'keyboard' 选项替换。00000000000i[ ] 将 nogui 模块安装为 Bochs GUI 00000000000i[ ] 使用日志文件 bochsout.txt PiLo hda1 Loading........ 内核命令行:-f -q Kernel PANIC at ../../threads vtop() 中的 /vaddr.h:84:断言“is_kernel_vaddr (vaddr)”失败。调用堆栈:0xc0028d9f。
shell - 在 Pintos 中多次“检查”的 shell 脚本
现在,我正在使用 Pintos,我想通过编写一个 shell 脚本一次多次“检查”。
我的想法是制作一个 test-five.sh 文件
我认为运行这个 test-five.sh 文件然后执行 test-five.sh > result.txt 就可以了。
但是,我无法弄清楚我应该将这个文件放在哪个目录,以及这是否是正确的做法。