osdev

    -3热度

    1回答

    我用C代码中发现的this page: uint16_t* terminal_buffer; 是什么意思?是否与uint16_t *terminal_buffer;相同? 比可变terminal_buffer是accesed像数组: terminal_buffer[index] = make_vgaentry(' ', terminal_color); 有人可以解释我是如何工作的? 谢谢。

    0热度

    1回答

    如果你曾经用gcc链接过内核,你可能知道参数-lgcc。 该参数重要吗?它有什么作用 ?

    1热度

    1回答

    我目前正在编写一个基本的操作系统作为一个学习项目。为此我使用了gcc 4.9.2交叉编译器。 当试图使用存储器映射的I/O I偶然发现C指针(或可能存储器映射I/O),我无法理解的行为。 当通过下面的代码直接访问I/O存储器,I得到预期的结果,这是一个“AB”在黑色背景上的浅灰色字体的左上角。 *((uint16_t *)0xB8000) = 0x0741; *((uint16_t *)0xB8

    3热度

    1回答

    假设我们有一个单一地址空间的操作系统。为了保持稳定性,我们需要强制用户应用程序的内存保护,例如禁止使用'不安全'的关键字,除非用户有特殊的能力。 我们的用户需要有一种方法来安全地从字节流(例如文件)读取/写入任意结构。当然,我们正在讨论不包含引用的结构(否则我们会松散内存安全性)。 现在我试图实现这种通用读卡器功能: #![feature(core)] use std::io; use st

    1热度

    1回答

    我查询有关设备驱动程序的开发。 如果我想用真实的方式制作玩具的操作系统,但决定写一个网络堆栈/套网络驱动程序,是否有足够的空间,这样做呢?我是否需要像DOS那样做,并切换到保护模式来完成这样的事情?

    0热度

    1回答

    如何在程序集(x86,32位保护模式)中实现队列结构? 将它实现为堆栈很简单,但是当从中取出对象时,我必须将每个项目移动一个地方。链接列表也是可能的,但它不是非常有效,也不是很快。 我正在开发我自己的操作系统,所以我不能使用OS功能。

    1热度

    1回答

    我一直认为,这是不是这样的,但是,一个FAQ for a tutorial我最近看过意味着它是: 为什么多重引导头?无论如何,GRUB不会载入纯粹的ELF文件吗? GRUB能够加载多种格式。但是,在本教程中,我们将创建一个兼容Multiboot的内核,该内核可以由任何其他兼容的引导加载程序加载。为了实现这一点,多引导头是强制性的。 我试图立即Google,没有任何有用的结果。所以:GRUB是否支持

    1热度

    2回答

    我正在玩OS的发展,我想用我自己的自定义文件系统。问题是,为了让我的操作系统进入硬盘,我要在CD上创建一个安装程序,我希望使用相同的文件系统创建该程序;这将意味着我不必担心导航CDFS,我将能够使用与我的操作系统相同的引导加载程序系统来开发安装程序(这将是一个单一的二进制文件,其中第一个512字节包含代码以将文件的其余部分加载到内存中并执行其中包含的代码)。所以问题是,这可以通过硬盘模拟来实现吗?

    3热度

    1回答

    当操作系统枚举PCI总线时,它会从每个PCI设备收集信息。我的问题是,操作系统在哪里存储这些信息?每个操作系统在运行时都有一个64KB阵列在RAM中?

    6热度

    2回答

    我正在使用isolinux(syslinux 4.5)作为引导加载程序,使用组织为0x200000的多引导头加载我的内核,从事操作系统项目。 据我所知,内核已经处于32位保护模式。我的问题:有没有更简单的方法可以访问BIOS中断? (基本上我想要0x10:D) 加载后,我的内核设置了自己的GDT和IDT条目,并进一步重映射IRQ。那么,是否有可能在内核加载并设置VGA/SVGA模式(VBE 2.0