自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (3)
  • 收藏
  • 关注

原创 从头写一个操作系统 14 (在屏幕上打印点什么)

如果跟着我学到现在,一定知道到哪里去下载代码,算了,地址在这https://github.com/cfenollosa/os-tutorial/tree/master/15-video-ports,这个地址里有这节课要用到的代码,如果之前你只是看看就算了,这节课就是不上手就再也跟不上的关键节点。代码中有一点点问题,Makefile中在qemu 调用-s时加一个-S(比如这样 -sS),这样gdb才...

2019-05-02 15:22:17 231

原创 从头写一个操作系统 13 (构建工具->GDB调试QEMU)

请自行google:monolithic kernel, microkernel, debugger, gdb本节课目标:稍微暂停,梳理一下我们的代码,然后学习如何使用gdb调试我们的kernel。也许你没有意识到你已经拥有了一个可以跑起来的内核。虽然我们的内核还很小,只能打印’X’。但现在是时候停一下,将这些代码放入各自的文件夹中,写一个Makefile。看一看新的文件结构吧,几乎都是从...

2019-05-02 14:36:51 394

原创 从头写一个操作系统 12

**你可能需要google: kernel, ELF format, makefile目标: 写一个简单的kernel,让bootsect启动它The kernel我们用C语言写的内核只能做一点点事,就是在屏幕左上角打印一个’X’,打开这个kernel.c。你会发现第一个函数中什么都没写,这个函数创建了指向main函数的内核入口。i386-elf-gcc -ffreestanding -...

2019-04-18 10:33:39 304

原创 从头写一个操作系统 11

你应该先google:C,ojbect code, linker, disassemble目标:用C语言做底层汇编语言做的那些事Compile我们得研究研究C编译器如何编译代码,并且比较它与汇编器生成的机器码两者是否有所差别。写一个只有一个简单函数的程序function.c。打开function.c看一眼。int my_function() { return 0xbaba;}...

2019-04-18 10:32:11 205

原创 从头写一个操作系统 10 (cross-compiler i386-elf-gcc)

lesson 111你需要google:cross-compiler目标:配置可编译32位内核的开发环境如果你用Mac,你应该立即着手做,如果使用别的系统可以再等几节课。不过,当用c语言开发时,你一定得有交叉编译环境。为什么?我会稍微修改一下这个 指南.Required packages第一步,你需要安装需求的库。在linux上,用你的包管理软件。在Mac上, install brew...

2019-04-18 10:31:02 1389

原创 从头写一个操作系统 09

lesson 10这一课,不能简单的翻译课文,因为作者并没有写什么内容,一切都在代码里。那就让我们把代码拆开,看看16位实模式是如何跳转到32位保护模式的。分析代码前,先想象为什么会有16位实模式呢?很久以前,大概1985年左右,那时的intel的CPU只有16位,16位就是代表CPU有16根电线接收数据(其实是16根电线发送数据,另外CPU还有32根电线分两组,每组16根各自接受一组数据...

2019-04-18 10:29:45 224

原创 从头写一个操作系统 08

我们一直用qemu来装载.bin文件,模拟计算机启动的过程,qemu很好,后面我们会讲到如何用gdb调试qemu,只能用强大来形容。喜欢折腾的人,永远都不会闲下来,就像用vmware将二进制文件作为启动盘,用qemu模拟树莓派的启动一样,对于学习来说是有意义的。今天介绍另一个很好用的虚拟机:bochs。bochs完全用软件模拟了整个X86计算机的硬件逻辑,然后在其虚拟的硬件上插入虚拟的软盘,...

2019-04-13 13:32:23 210

原创 从头写一个操作系统 07

lesson 9你需要自己去查: GDT本节目标: 编写 GDT还记得lesson 6的segmentation吗?段地址左移一位,只有16位的寻址总线却达到了20位的寻址能力。在32位模式下,段地址的使用方法有了变化。现在,偏移量是GDT中段描述符的索引。段描述符定义了基础地址(32位)、地址范围(20位)和其他一些标志位(只读,权限等)。更让人容易迷惑的是GDT的数据结构有点奇怪,打开...

2019-04-12 18:03:13 150

原创 从头写一个操作系统 06

lesson 8你可能需要google: 32-bit protected mode, VGA, videomemory目标: 在32位保护模式下,打印文字到屏幕上32位保护模式允许我们使用32位寄存器、32位寻址能力、内存保护、虚拟内存以及其他先进的功能,但是我们失去了BIOS提供的中断(之前用的0x10,就是其中的一个中断),并且还需要编写GDT(后面会介绍)。这节课我们要编写一个新...

2019-04-12 18:02:52 153

原创 从头写一个操作系统 05

lesson 6你可能需要google这个概念:segmentation目标: 学习16位实模式下的内存寻址如果非常了解segmentation,可以跳过这节课。lesson3中我们用[org]定义了segmentation,其实它就是所有数据的偏移量。CPU提供了几个特殊的寄存器:cs、ds、 ss 、 es,对应着代码段,数据段,堆栈以及其他段(用户指定...

2019-04-12 18:02:06 168

原创 从头写一个操作系统 04

你可能需要google这几个知识点: control structures, function calling, strings目标: 使用汇编编写基本的逻辑(循环、函数)越来越接近目标中的启动引导区了。在https://github.com/cfenollosa/os-tutorial中的lesson 7中,我们会从硬盘中读取引导数据,而后便进入启动内核的步骤。不过目前我们还需要做些必要的...

2019-04-10 15:46:20 164

原创 从头写一个操作系统 03

写一个操作系统,需要学很多知识,但如果纯研究理论,一万个小时也不可能面面俱到的完全掌握这些理论。当然不是说这些理论有多复杂,恰恰是这些写进了书本的理论为了求大求全,把简单的知识讲的复杂了,让学的人不明所以,不知所图。比如龙书(编译原理)读起来艰深晦涩,但如果从程序运行的角度去看,编译器就是一个翻译软件,将文本翻译成可以执行的机器码或者中间代码,既然是翻译软件,那将’a b c’ 翻译成’A B ...

2019-04-10 15:45:16 208

原创 从头写一个操作系统 02

在开始前,你可能需要google一下: memory offsets, pointers目标: 学习计算机的内存空间是如何分配,如何管理的。请打开 这本书1的14页 ,看看图中的内存布局。这节课的目标就是了解引导区的内容被加载到内存的什么位置。直接告诉你吧,BIOS将它放在0X7C00,随后CPU从这个位置开始运行指令,下面举一个例子,你会很容易明白!我们想在屏幕上打印X,下面有4种不同...

2019-04-10 15:43:54 259

原创 从头写一个操作系统 01

你需要自己去查: assembler, BIOS目标:创建一个可以被BIOS识别为可启动介质的文件我们要亲自写一个引导扇区,你会发现这很爽。理论:计算机启动时,BIOS会启动,它并不知道如何启动操作系统,它会把启动的工作交给引导扇区中的指令。因此,引导扇区需要放在一个约定俗成的标准位置上。这个位置就在磁盘最开始的位置 (cylinder 0, head 0, sector 0) 开始...

2019-04-06 20:36:30 2192 2

原创 c语言字符相关学习记录

C语言学习记录字符printf函数中%s对应着char*变量。char变量占1字节内存空间。char与int区别在于int占4字节,如果int变量地址的低8位数值与char相等,通过%.1s读取int变量内存时,结果与直接读取char是一样的。我们眼中所有的变量,都是对应地址上按变量申明时申请的内存空间中的数据,所以操作字符值时,眼中不能只有‘A’或’a’,而应该是0x41,0...

2018-05-19 11:44:27 160

floppywriter

软盘镜像读写工具

2019-04-10

[Donald_E._Knuth]_The_Art_of_Computer_Programming epub版本 英文4册全

The Art of Computer Programming epub版本 英文4册全

2019-04-10

深入理解计算机系统_第三版英,第二版中英

找了很久的第三版pdf1200页高清文字版,附送第二版中英高清文字

2018-11-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除