• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Linux内核系列—9.操作系统开发之Loader,linuxloader

Linux内核系列—9.操作系统开发之Loader,linuxloader

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了linux内核,linux内核完全剖析,linux内核源码下载,linux内核下载,linux内核设计与实现等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Linux内核系列—9.操作系统开发之Loader,linuxloader


一个操作系统从开机到开始运行,大致经历“引导—>加载内核入内存—>跳入保护模式—>开始执行内核”这样一个过程。也就是说,在内核开始执行之前不但要加载内核,而且还有准备保护模式等一系列工作,如果全都交给引导扇区来做,512字节很可能是不够用的,所以不妨把这个过程交给另外的模块来完成,我们把这个模块叫做Loader。引导扇区负责把Loader加载入内存并且把控制权交给它,其他工作放心地交给Loader来做,因为它没有512字节的限制,将会灵活得多。

为了操作方便,把软盘做成FAT12格式。这样对Loader以及今后的Kernel(内核)的操作将会非常简单易行。

引导扇区是整个软盘的第0个扇区,FAT12格式如下:

loader源码:

org	0100h

	mov	ax, 0B800h
	mov	gs, ax
	mov	ah, 0Fh				; 0000: 黑底    1111: 白字
	mov	al, 'L'
	mov	[gs:((80 * 0 + 39) * 2)], ax	; 屏幕第 0 行, 第 39 列

	jmp	$				; 到此停住

然后执行命令

nasm boot.asm -o boot.bin

nasm loader.asm -o loader.bin

先用bximage生成一个软盘映像,然后在linx下这样做,因为我的linux里只有/mnt/hgfs/

dd if=boot.bin of=a.img bs=512 count=1 conv=notrunc

sudo mount -o loop a.img /mnt/hgfs/

sudo cp loader.bin /mnt/hgfs/ -v

sudo umount /mnt/hgfs/

运行结果如下:

看到了字符“L”。

如果把前面学习的时钟中断程序按照上面的方法来运行也可以,如下

可以在虚拟机上运行,说明已经突破了512字节限制。

那么现在我们假设已经有了一个内核,Loader肯定要加载它入内存,而且内核开始执行的时候肯定已经在保护模式下了,所以,Loader要做的事情至少有两件:

1.加载内核入内存

2.跳入保护模式

 

一个码农的日常 

【源码】

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 内核内存分配常用函数使用
  • Linux内核系列—12.b.操作系统开发之从Loader跳入保护模式,12.bloader
  • Linux内核系列—10.操作系统开发之内核HelloWorld,linuxhelloworld
  • Linux内核系列—11.操作系统开发之ELF格式,linuxelf
  • Linux内核系列—9.操作系统开发之Loader,linuxloader
  • Linux内核系列—7.操作系统开发之中断和异常,linux内核
  • Linux内核系列—8.操作系统开发之时钟中断,linux内核
  • Linux内核系列—6.操作系统开发之内存分页机制,linux分页
  • Linux内核系列—5.操作系统开发之特权级及特权级的转移,linux特权
  • Linux内核系列—4.操作系统开发之LDT,linuxldt

相关文章

  • 2017-05-26实现在矩形框中输入文字,可以显示剩余字数的功能,矩形字数
  • 2017-05-26Android 框架启动流程
  • 2017-05-26Linux GSO逻辑分析
  • 2017-05-26硅谷新闻1--引导界面GuideActivity,1--guideactivity
  • 2017-05-26Android安全专项-Apk加固浅析
  • 2017-05-26android自定义activity,androidactivity
  • 2017-05-26centos7 系统cache的一例故障及解决
  • 2017-05-26Android一些不太常用XML文件属性的总结
  • 2017-05-26Android Studio(Mac版本)最常用的快捷键
  • 2017-05-26修改Android系统关机动画,android关机动画

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 深入了解Kotlin的必备书籍,深入了解kotlin必备
    • Android开发重点难点1:RelativeLayout(相对布局)详解,
    • 大神都是有个起点的,大神都是起点
    • Android Studio中使用AIDL进行进程间通信
    • 手机安全卫士——高级工具-电话归属地查询,安全卫士归属地查询
    • Android学习资料整理
    • Android Intent调用 Uri的使用几种格式,androidintent
    • Android获取本地相册图片、拍照获取图片,
    • android TextView实现跑马灯效果
    • 常用的adb命令,常用adb命令

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有