今天我们来看看从实模式是如何进入到保护模式的以及为何要进入保护模式。在这之前,我们先来看看什么叫实模式,什么是保护模式。实模式具有以下几个特点:a>它是远古时期的程序开发方式,也就是直接操作物理内存;b>CPU指令的操作数直接使用实地址(也就是实际内存地址);c>程序员拥有绝对的权利(也就是利用CPU指哪打哪)。那么这样好吗?对程序员来说是很好的,因为绝对权是掌握在自己手里的,换句话说,自己掌握程
我们在上节博客中学习了如何进行主引导程序的512字节的扩展,那么我们本节就继续来学习下如何进行控制权的交接。就是将控制权由主引导程序交由下一个将要执行的程序,类似于嵌入式中的uboot在启动内核的时候将控制权由uboot交由kernel。下来我们先来看看BootLoader的内存布局,如下所示我们看到在0x7c00前还有一段预留的空间,那么这段空间就是用来存放栈信息的。在主引导程序的512字节之后
我们今天来接着学习操作系统。在之前我们在一个新的OS上编写了一个打印hello的语句,那么在实际的OS中,主程序的512字节肯定是放不下的。那么我们就要学习如何突破这512个字节,进而接着在OS上运行随后的代码。在上节博客中我们学习了主引导程序的扩展,那么我们在后面的学习中就是要将512字节后的代码交由软盘来存储。也就是将控制权由主引导程序交由软盘上的程序,进而执行后面的工作。我们先来做一个准备工
我们在前面讲解了主引导程序的基础知识,今天我们就来讲讲主引导程序的扩展。不过主引导程序有个限制,那便是主引导程序的代码量不能超过512字节!那么我们如何来突破这个限制呢?我们现在的基本思路是在主引导程序中做如下工作:1、完成最基本的初始化工作;2、从存储介质中加载程序到内存中;3、将控制权交由新加载的程序执行;4、......那么我们具体该如何做呢?思路如下图所示那么主引导程序应如何来加载存储介质
上节博客中我们写了一个主引导程序,运行的还算完美,已经正确的实现了我们想要的功能。那么问题来了,它只是显示一个字符串,如果在字符串没有显示出来程序就挂掉了,那么我们此时应如何去查证?换句话说,如何调试主引导区的代码?今天我们便来介绍下另一款优秀的虚拟机软件(Bochs)。先来看看 Bochs 的一些特点:1、专业模拟 x86 架构的虚拟机;2、它是开源并且可移植度较高,源码是由 C++ 编写的;3、支持操作系统开发过程中的断点调试;4、通过简单的配置就能够运行于绝大多数主流的操作系统。
在上节博客中,我们介绍了一些操作系统的基本概念。本节我们将会继续来学习操作系统,创建一个在屏幕上有输出主引导程序。我们上节讲到主引导程序,那么它究竟是软件还是固件呢?如果是软件,那么是由谁来开发的?如何开发呢? 下来我们来介绍下 主引导程序 的相关知识:1、它是一段存储在主引导区(MBR)中的有效代码;2、它并不固化于硬件,属于操作系统代码的一部分;3、它是启动操作系统内核的桥梁,由汇编程序编写而成;4、代码总量是不能超过 512 个字节(包含 0x55aa 在内)。
从今天开始,我们来进行一个微型的操作系统(基于 x86 架构)的编写。当然了,也是跟着别人学习,只是为了做个总结。将之记录下来,和大家一起学习,也方便日后进行复习。 那么什么是操作系统呢?我们常见的操作系统有:Windows、Unix、Linux、Mac OS、Android 以及 iOS 等。简单来说,操作系统是直接运行于硬件之上的计算机程序。它的一个作用是用于管理和控制计算机的硬件与软件资源;另一个重要的作用是为用户软件的开发提供必要的服务和接口。
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号