操作系统
wang_sun_1983
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
自己动手写操作系统(二)
系统启动流程简单来说就是下面的顺序: =============================== 1.BIOS:开机主动执行的韧体,会认识到第一个可开机的设备 2.MBR:第一个可开机设备的第一个扇区内的主引导分区块,内包含引导加载程序 =>由stage1.asm编译成的boot.bin被写入mbr分区 3.引导加载程序(Boot loade原创 2017-06-17 22:18:09 · 832 阅读 · 0 评论 -
自己动手写操作系统(三)
这篇文章先乱入一下,这几天一直在写内存分配器(coalition,姑且这么叫吧)。参考的主要还kernel的伙伴内存分配方式。 这里先说一下为什么要用参考伙伴分配方式重新写内存分配器吧。 原先的内存分配设计是采用一个bitmap来记录所有的free page,每次分配都从bitmap里面找4k的页。例如我申请一个16K的内存,我直接找2个4K的页,然后更新PGD表和TLB表,这原创 2017-06-29 23:19:35 · 653 阅读 · 0 评论 -
自己动手写操作系统(四)
今天主要接着(二)来看一下stage2.asm。stage2.asm的功能主要有下面几个: ============================= 1.将系统从实模式切换到保护模式 2.找到core.sys(就是kernel)的位置,并且将core.sys导入内存 3.跳转到core.sys的入口函数处 ====================原创 2017-07-01 14:05:23 · 721 阅读 · 0 评论 -
自己动手写操作系统(一)
操作系统一直是一个比较神秘的东西,程序员聊天,要是哪个GG说自己搞kernel的,那直接可以鄙视我们这些做app的好几条街。哈哈。 我是做Android性能优化的,搞了这么多年上层,说实话,余地不大,基本都依赖于kernel的提升(文件系统,内存压缩)。所以只能硬着头皮开始学kernel。只是kernel的代码量比较大,看了几天还没搞出啥头绪。作为一个刚猛的程序员,怎么能忍受这样的挫折,原创 2017-06-10 21:58:26 · 7514 阅读 · 2 评论 -
自己动手写操作系统(五)
这里开始就进入了core的启动流程(类似于linux的kernel)。core的入口函数是start_core,如何定义如何函数呢?我们这里通过编译指令就可以了。参看下面的配置文件: ENTRY (start_core) SECTIONS { . = 0x100000; .text :{ *(.text) } .rodata ALIGN (0原创 2017-07-16 21:37:48 · 2728 阅读 · 0 评论 -
自己动手写操作系统(六)
今天开始进入内存管理的编写。按照顺序,我们首先要实现的是kmalloc。在arale os中我们用coalition_allocator来进行kmalloc对应的内存管理。实际上,coalition_allocator的内存管理方法是参照了buddy来的。有兴趣的同学可以在网上找到很多关于buddy的内存管理文章,这里就不在多说了。 我们先来看几个比较关键的结构体: 1.已分配内存头:原创 2017-09-06 23:45:48 · 378 阅读 · 0 评论 -
自己动手写操作系统(七)
今天主要分析coalition_allocator的内存分配流程。看过linux相关数据的同学都听说过kernel的buddy内存管理。实际上coalition内存分配的远离和buddy基本相同:将物理内存分为4k,8k,16k,32k......2的幂。例如,目前需要分配一个9k的内存,步骤如下: ======================================== 1.调用GE原创 2017-09-11 23:47:28 · 473 阅读 · 0 评论
分享