自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 一步一步实现一个简单的OS(任务切换)

之前因为工作忙,好长时间没更了。这次把进程切换里面的寄存器上下文切换详细的说一下吧。感觉有必要先码几行代码,这样好说// 任务的寄存器上下文数据结构/* * 在内存里面的数据结构为 * 0x00000000 [eip] * 0x00000004 [esp] * 0x00000008 [ebx] * 0x00000012 [ecx] * 0x00000016 [e

2016-03-24 10:11:36 771

原创 一步一步实现一个简单的OS(试验任务切换)

............extern void swtch(struct context *old, struct context *new);struct context kmainContext; // 内核任务struct context testContext0; // 任务0struct context testContext1; // 任务1// 任务0堆栈uc

2016-03-12 11:54:40 580

原创 一步一步实现一个简单的OS(初始化GDT)

代码量不多,也不难,网上资料也不少,gdt初始化的代码,大多都是看一个操作系统实现里面的。内容不多,也没有什么实际效果,不过感觉后面会用到。。。。。所以就写上了。。。。gdt.cstatic struct GDTDesc sys_gdt[GDT_NUM]; // 系统GDT// 初始化系统GDTvoid init_gdt(){ // 第一个是空的 set_desc

2016-03-11 11:35:57 711

原创 一步一步实现一个简单的OS(时钟中断)

这个写的比较简单,。。。。。。。直接代码kmain函数中加入// 初始化8259Ainit_8259a();// 初始化时钟中断init_timer();8259A的初始化代码就不贴了。这个网上太多了。timer.c// 初始化时钟中断void init_timer(){ timer_long = 0; outb(0x43, 0x36)

2016-03-09 13:38:53 418

原创 一步一步实现一个简单的OS(异常处理)

简单的对IDT进行初始化,实现系统异常显示(MMU里面有大部分宏定义是抄“自己动手写操作系统里面的pm.inc文件中的”)main.c/** * 内核入口 */int kmain(){ // 这里,就显示个信息吧,简单些 printf("in the kernel code\n"); // 初始化,异常处理 printf("init traps\n"); init_tr

2016-03-09 10:04:09 533

原创 一步一步实现一个简单的OS(加载内核)

这一块更新的代码比较多,所以就不方便全部贴出来了。。。具体的代码大家直接到群里面找就可以了(OS0.3)另外,我配置了bochs虚拟机,这样大家载下来就可以使用bochs虚拟机直接调试了。下面我就直接贴一下主要的代码吧,,,,,,setupasm.S ( 这里,跳转到c函数直接call就可以了)start32: # 初始化保护模式下的各个段的段寄存器 movw

2016-03-08 10:42:08 1266

原创 一步一步实现一个简单的OS(进入保护模式)

这块的基础至少,网上太多了,自己看去吧,废话不多说,直接贴代码 # bootasm.S # 加载Setup模块 .set SETUP_SEG, 0x0000 # SETUP模块加载段地址 .set SETUP_OFF, 0x7D00 # SETUP模块加载偏移地址 .globl startstart:

2016-03-03 10:12:33 1049

原创 一步一步实现一个简单的OS(简单的让boot加载setup)

这次直接写用boot加载setup模块,文件系统就先不弄了,以后再说,咱先整个转简单的加载器,我把软盘引导改成硬盘了,因为硬盘的读扇区函数简单一些。这里没有做硬盘的mbr区,我觉得在现在我的这个系统里面,mbr区还不是必须的。好了,不废话了,贴代码。这个是bootasm.S的代码: .globl startstart: # 入口地址 .cod

2016-03-02 13:17:00 978

原创 一步一步实现一个简单的OS(环境搭建)

更具各位领导的要求,特么加了这个。。。。。废话不说了。跟这做,第一步:到群里面,把1号和2号下载下来。先找个位置,比如F:\解包1号,之后在1号根目录下建立src文件夹然后把2号拷贝到src文件夹下。解包然后开跑....打开1号的更目录。双击运行msys.bat输入“cd os0.0 ”然后回车然后输入make,回车编译运行

2016-02-29 13:44:44 552

原创 一步一步实现一个简单的OS(HelloWorld)

先弄个HelloWorld吧,虽然这个网上一大堆,不过不知道的人还是不少,就简单的弄一个吧。。。。。。。系统启动时,第一步是BIOS自检(这个不管),然后从CMOS中设置的默认引导介质中加载第一个扇区(512字节)到内存的0x07C00处(0x0000:0x7C00),之后,跳转执行。所以,引导启动系统的第一部分就是对这512字节进行编程。。。这次呢,就写一个简单的HelloWor

2016-02-29 11:53:58 1657

原创 一步一步实现一个简单的OS(先小装一下)

第一次写博客,没啥好说的这个OS暂时还没想好名称,后面慢慢想吧。下一章开始整这个OS,总共分几章我也不知道,走一步看一步吧。最后想写一个可以上网、玩游戏、看电影的OS(貌似想的挺高的、想吐槽就吐槽吧),这个OS会参考linux,xv6,wrk里面的代码,所以也不是啥的国产,也别说我抄袭,,,我提前说的,这个是参考人家的,不是我自己写的!!!!!当然部分思想和代码还是咱自己搞

2016-02-26 14:02:00 1121 1

空空如也

空空如也

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

TA关注的人

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