MINIX 没有利用 x86 任务切换,对吧?
我正在研究MINIX book version (3.1.0) source code,发现MINIX 3没有使用cpu的任务切换功能,它只是执行一个普通的iret,没有设置NT标志。 对吗? _restart: ! Restart the current process or the next process if it is set. cmp (_next_ptr), 0 ... »
我正在研究MINIX book version (3.1.0) source code,发现MINIX 3没有使用cpu的任务切换功能,它只是执行一个普通的iret,没有设置NT标志。 对吗? _restart: ! Restart the current process or the next process if it is set. cmp (_next_ptr), 0 ... »
我最近购买了这本书,以更好地了解操作系统的工作原理。我在第二章,我被这个问题困住了,我的操作系统无法使用我添加的代码启动。下面的代码是在 pic_proc 函数开始时添加到 proc.c 中的,以尝试修改调度程序。 修改。 int realtime; clock_t recent_time[NR_TASKS + NR_PROCS]; clock_t stopwatch; realtime = g... »
例如,在 FreeBSD 中,strcpy 定义在 lib/libc/string/strcpy.c 中。为什么在 minix 中它是在 lib/libc/string/Lint_strcpy.c 中定义的,而不是像在 FreeBSD 中那样在 strcpy.c 中定义? Lint 前缀是什么意思? 值得一提的是,在 minix 中,一些函数(如 strpcpy)是这样定义的。我的意思是,strp... »
我必须在 Minix 操作系统中编辑 exec 系统调用,使其创建的每个进程都应该打印程序文件路径 + 程序名称: 例如,如果我在终端中输入ls,下一行应该显示path/to/ls/ls 始终采用这种格式:filepath/programName。 我已经设法打印了程序名称,但文件路径有问题。谁能告诉我如何打印? 这是 sys_exec.c 的代码: #include "syslib.h"... »
我正在尝试在 Minix 中实现系统调用,但我无法理解我需要去哪里。这是我需要添加的系统调用,它在成功时返回 0,在失败时返回 -1,同时还返回 a+b、a-b 和 a*b: int mycall(int a, int b, int *sum, int *difr, int *prod); 我做了什么: main.c: #include <stdio.h> int main... »
正如标题所暗示的,我试图在与我正在运行的程序相同的目录中打开一个文本文件。这是我正在使用的代码: int main(int argc, char *argv[]){ FILE *filePtr; filePtr = fopen("something.txt", "r"); if (filePtr == NULL){ printf("Oh dear, some... »
如何在windows、ubuntu或OSX上运行的VirtualBox下调试MINIX内核? 我正在使用 MINIX 3.2.1 和 Eclipse CPP。... »
从概念上讲,Minix 中的系统调用和内核调用有什么区别? 我有点理解像 Linux 这样的操作系统中的这种差异,但是在像 Minix 这样的微内核中呢?两种类型的调用是否相同?... »
我正在创建一个简单版本的 Minix。我正在使用fgets() 来获取用户输入。然后我使用strtok() 将字符串与分隔符" " 分开。问题是当我调用strtok(NULL, " ") 时,我存储的令牌会在最后一个字符后面附加一个空格。因此,如果我通过"minimount imagefile.img",我的程序将抓取minimount 并将其存储在变量cmd 中,然后它将抓取"imagefile... »
我曾经设法返回该函数,并且当我运行测试时它通过了我在 utils.c 上有这个函数: int (util_sys_inb)(int port, uint8_t *value) { uint32_t val; if(sys_inb(port, &val) != OK) return 1; *value = (uint8_t... »
所以我试图在 PM 服务器上创建一个新的系统调用。我的问题是,我怎样才能发送某种消息来运行。 在 IPC 服务器中,我所要做的就是将我的系统调用添加到列表中,因为那里的所有函数都定义为 (*func)(message *) (...)/servers/ipc/main.c static struct { int type; int (*func)(message *); ... »
我正在尝试修改 MINIX 3.2.1 中的 cat 命令,但遇到了一些问题。我想添加-H 标志,以便在使用时,在其内容之前打印文件名。我在 cat.c 中添加了一些代码(参考原始行号): 第 64 行(Hflag 变量): int Hflag, bflag, eflag, fflag, lflag, nflag, sflag, tflag, vflag; 第 85 行('H' 大小写):... »
我正在使用 Microsoft Azure Face 从在 android 盒子 (minix) 中运行的 Android 应用程序中的图像中获取数据,当我到达代码中发送图像以接收此数据的位置时,我得到以下信息错误: 检测失败:证书中的主机名不匹配:!= OR 我不知道这个错误是什么意思,因为我没有使用证书。 我使用的基本代码来自原始存储库: https://github.com/Azu... »
time_t t; printf("%f\n",time(&t)); 它抛出“无法打印浮点数”... »
在kernel/ipc.hTanenbaum 中将系统调用位定义为: /* System call numbers that are passed when trapping to the kernel. The * numbers are carefully defined so that it can easily be seen (based on * the bits that ... »
我查看了 MINIX 3 的标头,在 include/signal.h 中有一些看似不寻常的定义: /* Macros used as function pointers */ #define SIG_ERR ((sig_handler_t) -1) /* error return */ #define SIG_DFL ((sig_handler_t) 0) /* default ... »
作为大学调整的一部分,我必须修改位于/usr/src/minix/fs/mfs/link.c 中的函数unlink_file,因此(在某些情况下)不是删除文件,而是更改它们的名称。 我将父目录的 inode、文件的 inode 及其名称作为参数传递给函数: static int unlink_file(dirp, rip, file_name) struct inode *dirp; ... »
我一直想知道如何解决以下问题。我目前正在学习如何根据自己的喜好修改操作系统的源代码,工作示例是 A.S.Tanenbaum 的 minix。 假设我使用qemu 运行minix,并将ssh 端口重定向到localhost:10022(使用-net user,hostfwd=tcp::10022-:22),这样我就可以ssh -p 10022 user@localhost 连接到在qemu 上运行... »
MINIX 3 中的这段代码将引导监视器的(引导)GDT 复制到内核空间并切换它。但是我很难理解代码。在代码中,_gdt 是在 C 中声明的描述符表数组的地址 (gdt[GDT_SIZE])。 gdt的结构如下: struct segdesc_s { /* segment descriptor for protected mode */ u16_t limit_low; u16... »
正在处理一个类项目,我收到一个未知类型名称“EXTERN”错误。我正在创建系统调用(稍后将通过库调用访问)。出于某种原因,当我尝试在 usr/src/releasetools 中运行“make services”时,我无法弄清楚为什么我的 mproc.h 文件不合作。这是我得到的错误: In file included from do_getaccesslvl.c:2: ./mproc.h:16... »