Linux内核
记录学习Linux内核的过程
fxnfk
这个作者很懒,什么都没留下…
展开
-
汇编直接在显存地址写字符显示
汇编器:nasm 虚拟机:bochs 操作系统:mac osx将汇编代码写入磁盘的0柱面,0磁道,1扇区,开机启动后bios会自动加载这512字节到内存0x7c00处,然后跳到这开始执行。在屏幕上显示字符,可以直接写到显存里,就直接在屏幕上显示出来了,显存地址从0x8000开始,每个字符占两个字节,一个字节存放字符,一个字节存放这个字节的显示属性。 具体可参考王爽汇编语言实验9。...原创 2018-07-19 17:19:03 · 4619 阅读 · 0 评论 -
利用bios中断在屏幕上显示字符和读磁盘
写两个汇编文件,来模拟引导程序和内核程序。引导扇区负责把内核程序读到内存中(通过bios 0x13中断),读入内存后,通过判断是否读成功,在屏幕上显示不同的提示字符(通过bios 0x10中断)。bootsect.sBOOTSEG equ 0x7c0section .text vstart=0jmp BOOTSEG:startstart: mov ax, cs ...原创 2018-07-19 16:29:01 · 1026 阅读 · 0 评论 -
用bios中断在屏幕上显示字符串
bximage //bochs的工具,用于生成软盘影像原创 2018-07-12 16:27:12 · 3218 阅读 · 0 评论 -
进程与线程
从内核角度看进程 PCB:进程控制块 pcb.tss线程 TCB:线程控制块进程是由内核实现和控制的,线程可以完全由用户级程序实现。 线程也可以由操作系统实现。系统调用 int ...原创 2018-07-09 20:04:02 · 185 阅读 · 0 评论 -
8253定时芯片
控制字: PC默认分配给8253的端口地址为40H~ 43H。三个计数器的端口地址分别为40H~42H,控制字寄存器的端口址为43H。 参考:https://my.oschina.net/u/2374598/blog/548760...原创 2018-07-05 18:26:46 · 2636 阅读 · 0 评论 -
赵炯 第4章 一个简单的多任务内核实例 设置idt setup_idt
4.9.3 多任务内核程序 head.s中设置idt中断向量表相关的代码如下: 中断门、陷阱门、和任务门的描述符格式如下图: 下面对上面的代码简单解释。第33-40行是设置定时中断门描述符。 定时处理程序是timer_interrupt,属于内核,中断向量是0x08,段选择符就是内核代码段0x08。 根据上图中断们描述符可以得出这个描述符的内容如下: |00|00...原创 2018-07-05 16:26:42 · 349 阅读 · 0 评论 -
赵炯 第4章 一个简单的多任务内核实例 gdt详解
head.s程序的170行开始是gdt表:gdt: .quad 0x0000000000000000 # GDT表。第1个描述符不用。 .quad 0x00c09a00000007ff # 第2个是内核代码段描述符。其选择符是0x08。 .quad 0x00c09200000007ff # 第3个是内核数据段描...原创 2018-07-05 13:05:56 · 625 阅读 · 0 评论 -
linux内核
http://down.51cto.com/zt/6417/1原创 2018-07-04 18:14:09 · 232 阅读 · 0 评论 -
gcc makefile
gcc hello.cgcc hello.c -o hello-world./a.out./hello-worldgcc -S hello.c // 会得到汇编代码as ldgcc -O2 hello.c -o hello-worldgcc -O0gcc -O3objdump -S hello-world原创 2018-07-04 16:28:31 · 174 阅读 · 0 评论 -
操作系统启动
启动 取值执行 bootsect.s setup.s原创 2018-07-04 16:27:59 · 201 阅读 · 0 评论 -
qemu bochs
qemu-system-i386 -boot a -fda booting -serial stdioqemu-system-i386 linux.img安装:brew install qemuQEMU DOWNLOADQEMU USER DOCUMENTATION原创 2018-07-04 16:25:51 · 566 阅读 · 0 评论 -
MacOS X上安装bochs
在MacOS X上安装bochs,并且要用X windows的GUI,而且要用调试功能。首先安装X windows GUI下载XQuartz-2.7.11.dmg;安装;brew install gtk+brew install pkg-configexport PKG_CONFIG_PATH=/opt/X11/lib/pkgconfigpkg-config --libs --c...原创 2018-07-04 16:24:57 · 2629 阅读 · 0 评论 -
bootsect.S Makefile
bootsect.S.code16.global _bootstart.equ BOOTSEG, 0X07C0ljmp $BOOTSEG, $_bootstart_bootstart: jmp _bootstart.=510signature: .word 0xaa55Makefileall: Image.PHONY=cleanb...原创 2018-07-04 16:23:09 · 223 阅读 · 0 评论 -
内存地址空间
如果地址线是32位,那可寻址的范围是4G,内存地址从0-0xffffffff。BIOS在内存最高地址处,最低1M空间内又有很多固定的用途,如下图所示: (图片出自:赵炯——Linux内核完全剖析——基于0.12内核,图2-4)我原来不明白,ROM和RAM是连着的吗?还是把ROM BIOS拷贝到RAM中的指定位置。后来看到王爽老师的《汇编语言》才明白,原来上图只是个逻辑存储器,实际是由...原创 2018-06-01 17:23:23 · 5334 阅读 · 0 评论