问题标签 [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.

0 投票
1 回答
1773 浏览

operating-system - Pintos 安装 SIGVTALRM() 重新定义错误

我在安装过程中没有出错,所有的 make 命令都运行良好,但最后当我运行“pintos run alarm-multiple”时,我收到以下错误

任何帮助将不胜感激。谢谢。

0 投票
1 回答
1120 浏览

multithreading - 获取信号量必须是原子的。Pintos 的 sema_down 安全吗?

这段代码来自 Pintos 源码: https ://www.cs.usfca.edu/~benson/cs326/pintos/pintos/src/threads/synch.c

取信号量的事实是sema->value--;. 如果它有效,它必须是一个原子操作。我们怎么知道它实际上是原子操作呢?我知道现代 CPU 保证对齐的内存操作(对于 word/doubleword/quadword- 它取决于)是原子的。但是,在这里,我不相信为什么它是原子的。

0 投票
0 回答
693 浏览

x86 - 在 Pintos 中切换上下文

我正在分析 Pintos 的调度程序(我的意思是 - 由本机实现提供的简单调度程序)。

当一个滴答声(我的意思是计时器引发的滴答声)发生时,它将由以下方式处理:

args包含(除其他IP外)下一条指令中断线程的结构。因此,记住当前线程以让他将来继续工作至关重要。请注意,该处理程序只会增加ticks和调用thread_tick()没有args. 现在,有关eip(和段寄存器等)的信息丢失了。

这是否意味着提供的调度程序无法继续线程的工作?在这种情况下,它可能是第一个项目的一部分。

我问是因为我不确定我是否误解了某些东西。

我为每个中断处理程序附加了一个“入口点”:


intr_handler功能:

因此,如您所见intr_handler,它根本不考虑上下文。基本上,它调用特定的处理程序,如timer_interrupt(见上文)。timer_interrupt调用thread_tick

intr_yield_on_return

intr_yield_on_return设置标志。intr_handler有一段代码:

所以它调用thread_yield

thread_yield也不记得IP当前线程(和其他人)。

0 投票
2 回答
2764 浏览

pintos - 运行 pintos 时测试超时

我刚刚开始使用 pintos 项目,在运行 ubuntu 14.04 x64 系统的家用计算机上工作。

我能够从src/threads/目录编译项目,并且初始测试pintos run alarm-multiple似乎工作正常(注意它默认运行 qemu):

但是,当我在make check下运行时src/threads/build,所有测试都会出现超时错误:

我应该做哪些改变来解决这个问题?

0 投票
1 回答
196 浏览

operating-system - 将 pintOS 移植到 Raspberry-pi

对于一个长达 6 个月的项目,我正在考虑为raspberry -pi 编写类似 OS 的 PintOS。由于我是初学者,没有操作系统的实际知识,我想从移植(PintOS)开始,而不是自己编写操作系统。我的问题是:

  1. 如何进行,即在开始移植之前我应该​​知道什么。(我有汇编知识、操作系统的理论概念、启动顺序概述等)。
  2. 请问交叉编译源代码就够了吗?
  3. 这个项目在 6 个月内值得做多远(答案取决于第一个问题:p)?

以下是我发现的一些类似工作:

将嵌入式 Xinu 操作系统移植到 Raspberry Pi

PS我是本科生。

0 投票
2 回答
1000 浏览

c - Emacs - GDB 跟踪权以中断而不单步执行所有文件

我正在开发 Pintos OS 项目。我收到这条消息:

Pintos OS 项目的问题在于它不会简单地告诉导致异常的行和方法。

我知道如何使用断点/观察点等,但是有没有办法直接进入它而无需逐行遍历整个流程和所有操作系统文件,这样我就可以跳入导致异常的行并将断点放在那里?我查看了 GDB 命令,但没有找到任何东西。

当我调试这个项目时,我必须逐步完成整个程序,直到发现非常耗时的错误/异常。可能有一种更快的方法可以做到这一点。

谢谢。整个跟踪:

0 投票
2 回答
2106 浏览

linux - 进程结束后如何自动关闭`qemu`的执行?

我希望qemu打开并显示输出后的窗口在运行后自动关闭pintOS

就像我pintos -- run alarm-multipletcshshell 中运行命令一样,qemu 显示该进程开始,然后显示一些alarm-notifications然后进程结束,但之后 qemu 窗口不会关闭

我想在成功完成系统调用后退出窗口。

0 投票
3 回答
1346 浏览

qemu - 如何在进程结束后自动关闭 QEMU 窗口

其实之前也有同样的问题,

进程结束后如何自动关闭`qemu`的执行?

但我再次问这个问题,因为还没有人回答。

在此处输入图像描述

我正在尝试在 qemu 上模拟 pintos。当我调用命令“pintos run alarm-multiple”时,会出现一个新的 QEMU 窗口,如上所示,并且它在断电后不会自行关闭。但是,我想当我尝试“make check”时这会导致问题,因为每个测试都不会自动结束。所以“-T 60”选项最终会终止测试,就像下面一样。

在此处输入图像描述

如何让 QEMU 在结束进程时自动退出?

0 投票
1 回答
325 浏览

makefile - 相同的 Makefile 在不同的计算机上执行不同的命令

在安装 pintos 期间,我必须运行make.

以下是 Makefile。

在一台计算机上它正确执行。(命令的输出如下)

但在其他计算机上我收到以下错误

如果查看两个make命令的第一行输出

它们不一样。

为什么make对同一个 Makefile 执行不同的命令?我应该怎么做才能消除错误?

0 投票
2 回答
4114 浏览

perl - 如何解决 PintOS 无法识别的字符 \x16

我在我的家用电脑上下载并设置了 PintOS 和依赖项,但是当我尝试运行时pintos run alarm-multiple,我得到了错误:

Unrecognized character \x16; marked by <-- HERE after if ($<-- HERE near column 7 at ~/code/pintos/src/utils/pintos line 911.

那条线上有^V同步空闲控制字符。我无法找到有关此问题的任何信息;好像只有我一个人经历过。

我安装了 Perl v5.26.0。