自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 从零开始搭建环境编写操作系统 AT&T GCC (九)内存管理

到了十分乏味而又至关重要的部分了,想要一个操作系统运行起来,同时处理不同的程序,就要使用内存管理。   在开始之前,我们给Makefile中所有的gcc命令增加一个-fno-stack-protector,意思是不进行栈溢出检查,这是linux内核程序的一种防止栈溢出漏洞的机制,如果不加这一条指令,在使用栈的时候会发生__stack_chk_fail错误,具体详情百度 linux canary,这

2017-08-09 15:06:51 503 1

原创 从零开始搭建环境编写操作系统 AT&T GCC (十)多任务

最简单的内存管理完成了,我们就可以实现多任务了。 一、x86如何实现多任务      1、多任务的含义   多任务是指一个单处理器同时执行多个不同任务。实际上这样的说法并不完全准确,因为一个单处理器在同一个时刻只能执行一个任务,但它可以在很短的时间内在多个任务之间切换,如每秒在多个任务之间切换100次,它们在同一时刻并不是并行的,但在使用者看来这些任务好似在同时运行的。我们先来看一下CPU在

2017-08-08 14:11:41 728 1

原创 从零开始搭建环境编写操作系统 AT&T GCC (八)使用键盘和滚轮鼠标

终于要让键盘和鼠标使用起来了,前期工作都完成了,这一步其实是非常容易的。 一、键盘中断和处理   当键盘中的一个按钮被按下或抬起时,将通过8259A芯片向CPU发送一个键盘中断的消息,这时CPU将转入键盘中断处理程序。键盘上的每个按键都对应一个扫描码,当有键盘中断时,这个扫描码被送入0x60端口。CPU通过读取0x60端口中的扫描码就可以得知是键盘中的哪个键盘被按下或抬起了。

2017-08-07 09:19:04 839

原创 从零开始搭建环境编写操作系统 AT&T GCC (七)GDB调试和-monitor

一直有个小教程没有写给大家,那就是使用GDB调试和-monitor调试,借这次代码整理,跟大家说一下怎么用。这里我使用到了objdump工具,gdb调试工具,这些工具都可以直接apt-get获得。当然我还用到了qemu的自带调试功能-monitor   这一节就是把system文件夹下lds文件的. = 0x8200;删掉,这是个历史遗留问题哈哈,刚开始写的时候加上了这行代码,导致了后来写程序众多

2017-08-06 17:55:06 1903

原创 从零开始搭建环境编写操作系统 AT&T GCC (六)中断设置和启用 IDT PIC

连界面都已经完工了,下一步要让鼠标动起来,键盘用起来,时钟跑起来,这只是最基本的中断,我们还要使用USB,串口等等有各种各样的中断,慢慢来吧 一、什么是中断    中断是计算机体系中一个非常重要的概念,中断的产生是因为中央处理器CPU与外部设备的性能不匹配而采取的一种提高CPU利用率的改善机制。当多个外设同时请求CPU对其进行操作时,CPU如果采用线性任务处理方式时,执行一个任务对外设进行相应操

2017-08-05 23:05:57 992

原创 从零开始搭建环境编写操作系统 AT&T GCC (五)显示鼠标和字符

前期工作打好了基础,都已经可以画图了,想要显示鼠标和字符知识需要一个字库就可以了。 一、显示字符   新建一个文件夹,叫做font文件夹,以后我们还要增加中文字体的显示等,这样会比较条理。文件夹下新建font.c,font.h,font_code.c,font.c是对显示文字进行操作的一些函数,font_code.c保存有字库数组,font.h头文件。   显示字符的理论非常的简单,首先需要一

2017-08-05 13:19:48 658

原创 从零开始搭建环境编写操作系统 AT&T GCC (四)绘制界面

昨天写了一晚上的文章说没就没了???!!!一夜回到解放前啊,csdn不应该做出点补偿么……从头再来,也没有什么关系嘛。   今天的主要内容是整理文件,改正之前的几个错误点,简单讲一下VGA,然后写几个绘制界面的函数。 一、整理文件   在system.s文件夹创建一个functions.s的文件,这个文件用于补充c语言不能编写的内容,比如底层硬件的in和out操作,关闭中断cli操作,暂停hl

2017-08-04 08:28:58 3142 1

原创 从零开始搭建环境编写操作系统 AT&T GCC (三)引入C语言

搁置了几天,继续我们的操作系统,今天我们的主题是引入C语言,毕竟有了C语言这个工具,开发就便捷了很多,我们C语言依然使用GCC编译器,现在我们有几个事情没有完成,中断没有打开,段选择子没有设置,先把中断搁置一下,把段选择子分配了。 一、段选择子segment selector的分配   在start_protect这个函数中,暂时分配给ds段二号全局描述符,给ss分配三号全局描述符,这里赘述一下

2017-08-03 14:27:51 2405

原创 从零开始搭建环境编写操作系统 AT&T GCC (二)从实模式到保护模式

上午有时间,继续上一篇文章,本篇的主要内容是如何启动保护模式,这样我们可以利用更大的内存来编程了。一、我们创建一个顶层Makefile文件,方便之后我们的编译调试OBJ := system.o loader.oTOP_DIR := $(PWD)OBJ_DIR := $(TOP_DIR)/objBIN_DIR := $(TOP_DIR)/binBIN := system.imgSUB_DIR

2017-07-25 16:35:18 3245

原创 从零开始搭建环境编写操作系统 AT&T GCC (一)搭建环境和测试环境

又有闲时间了,一直没有在x86的计算机上做过裸机编程,只要闲下来就手痒,去买了本30天开发操作系统,因为之前听说过这本书,而且是在x86的电脑上做的,所以就买来研读了一番,之前写的东西也只在群里共享了,这次正好想开个博客,剩下有一年的闲时间可以打理一下这个博客。所以说,这是第一篇文章,我不去照搬照抄书上的内容,我只是参考一下它搭建的过程,所有我操作的过程我会记下来放在这里,以后给自己和大家能有一个参考。

2017-07-24 21:41:02 3741

空空如也

空空如也

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

TA关注的人

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