这里开始就进入了core的启动流程(类似于linux的kernel)。core的入口函数是start_core,如何定义如何函数呢?我们这里通过编译指令就可以了。参看下面的配置文件:

ENTRY (start_core)SECTIONS
{. = 0x100000;.text :{*(.text)}.rodata ALIGN (0x1000) : {*(.rodata)}.data ALIGN (0x1000) : {*(.data)}.bss ALIGN (0x1000) : {sbss = .;*(COMMON)*(.bss)ebss = .;}
}

ENTRY就是入口函数的定义方法。我们自己编写的进程都是以main作为入口函数的。可能用这个也可以修改为其他函数哈~~。

start_core里面做的处理基本就是gdt,中断,内存,时钟等的初始化。我们这里主要先关注一下内存的初始化。

内存目前来说分配器有3个:coalition,fragment,vm。coalition用于内核kmalloc分配连续的物理内存。fragment用于分配4K的页给内核vmallc和用户态的mallc。

vm用来管理每个进程的虚拟地址。相关介绍如下图:

接下来我们会逐一介绍每个内存分配器的实现和遇到的问题点。哈哈,简直就是天坑~~~。大家有兴趣的话可以看一下我的github针对mm的修改。改的天翻地覆~~~。

谢谢。

arale os的github:https://github.com/wangsun1983/arale

自己动手写操作系统(五)相关推荐

  1. 自己动手写操作系统--个人实践

    近期開始看于渊的<自己动手写操作系统>这本书,刚開始看就发现做系统的引导盘居然是软盘!心里那个汗啊! 如今都是U盘了,谁还用软盘.于是考虑用U盘. 于是開始下面步骤: 1.既然书上说给先要 ...

  2. 「操作系统」《自己动手写操作系统》1.1前期准备工作

    一.软硬件 1.硬件 一台计算机(笔者使用的是Win7 x64操作系统) 2.软件 点击此处下载<自己动手写操作系统>的光盘配套文件以及相应工具 汇编编译器:NASM(资源文件中有) 软盘 ...

  3. 自己动手写java虚拟机_自己动手写操作系统(要了解的知识点)

    自己动手写操作系统(开篇) 自己动手写操作系统(字符显示) 说明:Intel 8086 或者不同的处理器,开机寄存器数据可能不一样,但是大致原理差不多 了解过计算机启动的同学肯定知道,当计算机启动的时 ...

  4. 《自己动手写操作系统》读书笔记——初识保护模式

    <自己动手写操作系统>读书笔记--初识保护模式 http://www.cnblogs.com/pang123hui/archive/2010/11/27/2309930.html 书本第三 ...

  5. 全面剖析《自己动手写操作系统》第四章---加载Loader.bin

    全面剖析<自己动手写操作系统>第四章--FAT12文件系统    http://blog.csdn.net/zgh1988/article/details/7284834 1.突破512字 ...

  6. 自己动手写操作系统0

    文章目录 自己动手写操作系统0 环境搭建 NASM VirtualBox 添加软盘启动 VMware 开启虚拟机 其他软件 Floppy 自己动手写操作系统0 参考余渊老师写的<自己动手写操作系 ...

  7. 自己动手写操作系统之环境构建篇

    自己动手写操作系统之环境构建篇 最近开始看自己动手写操作系统,但是书中采用软盘启动很是郁闷,于是想是否可以从优盘启动呢?作为一名BIOS工程师,曾经用优盘启动过dos,linux等系统,于是做了如下尝 ...

  8. 自己动手写操作系统——(1)将引导写入U盘

    为什么写博客呢,想了一下,首先是为了给自己留着复习用,因为时间一长,肯定有好多东西会忘记的,在这里留个记录,以后再整理起来就不会太麻烦了:再者是为了分享一下经验,由于在下比较愚笨,说不定在哪个方面就理 ...

  9. 磨刀不误砍柴工 —— 自己动手写操作系统 入门导引

    磨刀不误砍柴工 刺猬@http://blog.csdn.net/littlehedgehog <自己动手写操作系统>其实阅读所需要的前提不过只是C和汇编了,里面涉及到很多操作系统的东西.于 ...

  10. 磨刀不误砍柴工 ——《自己动手写操作系统》入门导引

    磨刀不误砍柴工 刺猬@http://blog.csdn.net/littlehedgehog <自己动手写操作系统>其实阅读所需要的前提不过只是C和汇编了,里面涉及到很多操作系统的东西.于 ...

最新文章

  1. 雷达篇(八)合成孔径雷达工作模式
  2. 安装OpenCV时提示缺少boostdesc_bgm.i文件的问题解决方案
  3. WINDOWS 需要您的当前凭证
  4. 三层聚合实验的注意事项
  5. mysql 冷热表_Redis+MySQL冷热数据交换
  6. elasticsearch scroll 一页最大数据量_elasticsearch 百亿级数据检索案例与原理
  7. WinAPI【消息及相关结构体】
  8. 郑州轻工业学校计算机网络,计算机网络期末考试a卷(郑州轻工业学院).doc
  9. [转载] 使用python 中的numpy创建数组
  10. 20191202_k-中心聚类算法和k-mean算法Python实现
  11. 熊族部落---要邀请码
  12. 如何正确删除TFS上项目
  13. LabView制作登录界面
  14. 微信小程序 模拟支付宝账单的个人记账小程序
  15. java 拼图游戏_Java 拼图游戏
  16. Java(二十二) -- 生产者消费者模式
  17. 手机开热点,电脑连不上
  18. Android 名词解释
  19. Mos结电容Cgd、Cgs、Cds与分布参数Ciss、Crss、Coss
  20. 3D打印云平台在线显示

热门文章

  1. PHP代码审计工具Rips的使用
  2. c语言万能源代码,经典C语言源代码
  3. 日本现代数学发展历程及其启示
  4. vue前端页面通用模板梳理
  5. 吾爱破解crackme 023 024
  6. 最新Latex安装详细教程
  7. 付费率第一 亏损显著收窄 网易云音乐将实现盈利?
  8. CAD2020操作手册
  9. win10删除自定义的背景图片历史记录
  10. c51用c语言写PO口复用6,毕业回馈—89C51之GPIO使用(示例代码)