摘要: 问题 最近在学习vulkan,按照vulkan官网教程学习到Instance这个章节时遇到了一个问题。就是在MacOS下调用createInstance函数创建instance时,会提示VK_ERROR_INCOMPATIBLE_DRIVER,而Windows下却没有这个问题。 解决过程 一开始以为 阅读全文
posted @ 2023-11-26 00:59 basic60 阅读(486) 评论(0) 推荐(0) 编辑
摘要: 前言 我们的Bootloader目标是加载64位的ELF可执行文件,因此需要理解64位ELF文件的结构,并且支持运行ELF文件。 ELF文件结构 ELF文件的结构如下图所示: 它包含了ELF头部,一个可选的Program Header Table,多个Section和一个Section Header 阅读全文
posted @ 2023-11-11 23:47 basic60 阅读(176) 评论(0) 推荐(0) 编辑
摘要: 前言 本项目是基于IA32架构架构(32位Intel架构)的,而IA32架构有以下的操作模式: 实模式、保护模式、虚拟8086模式和系统管理模式。这些模式被称为 传统模式。 实模式是计算机刚启动时的模式,在实模式下可以随意访问可用的内存地址,实模式比较简单直接,但是随着操作系统的发展,实模式这种直接 阅读全文
posted @ 2023-11-11 17:00 basic60 阅读(413) 评论(0) 推荐(0) 编辑
摘要: 计算机启动流程简介 要知道如何设计bootloader,需要先了解一下计算机启动的流程。具体可见引用1,这里只需要关注以下这一点即可: 系统启动后会自动将硬盘的第一个扇区(主引导记录,MBR)加载至内存0x7c00处,并检查MBR的第511和第512个字节是否为0x55和0xaa,如果是,则跳转至0 阅读全文
posted @ 2023-11-05 01:35 basic60 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 前言 数年前,出于对于操作系统内核的好奇和兴趣,看了一些自制内核资料和教程,断断续续地也写了一个简单的的玩具内核。 在学习的过程中,往往第一步遇到的问题就是内核的加载和系统的引导,发现不少教程都使用grub等现成的工具直接完成这一步骤,这样能快速的完成读取硬盘、加载内核文件、探测内存等这些dirty 阅读全文
posted @ 2023-10-28 17:54 basic60 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 前言 对于多核CPU,开机上电后,最开始其实只有一个cpu核心会启动,称为bootstrap processor (BSP) ,而其他的核心则称为application processors (APs)。BSP的启动无需操心,而启动AP则需要我们自己代码实现,学习时发现少有相关的资料,也踩了一些坑, 阅读全文
posted @ 2023-10-21 01:59 basic60 阅读(228) 评论(0) 推荐(0) 编辑