摘要: 进程: 从进程的结构看:进程是一个应用程序运行时刻的实例; 从进程的功能看:进程是应用程序运行时所需资源的容器; 从操作系统对进程的实现角度看:进程是一堆数据结构; 进程的结构: 进程必须要有一个地址空间:这个地址空间包括至少两部分:一部分是内核,一部分是用户的应用程序; 每个进程拥有x86 CPU 阅读全文
posted @ 2023-04-29 10:41 QianFa01 阅读(42) 评论(0) 推荐(0)
摘要: 伙伴系统: buddy 物理内存页面管理算法,最先源自Sun公司的 Solaris操作系统;Linux后来也引入了伙伴系统; 表示一个物理内存页面: Linux定义了一个 page 结构体,大量使用了c的union联合体定义结构字段,其大小取决于结构体里面占用内存最大的变量决定;好处是信息量很多,占 阅读全文
posted @ 2023-04-28 17:30 QianFa01 阅读(65) 评论(0) 推荐(0)
摘要: 虚拟地址空间的分配和释放: 1、虚拟地址空间分配接口: vma_new_vadrs 接口函数:进行参数检查,开始地址要和页面对齐,结束地址不超过整个虚拟地址空间;;接着调用虚拟地址空间分配的核心函数 vma_new_vadrs_core 函数; vma_new_vadrs_core 核心函数:调用v 阅读全文
posted @ 2023-04-27 21:52 QianFa01 阅读(309) 评论(0) 推荐(0)
摘要: x86 CPU 的虚拟地址空间划分: 一个应用往往拥有很大的连续地址空间,并且每个应用都是一样的,只有在运行时才能分配到真正的 物理内存,在操作系统中被称为虚拟内存; x86CPU支持虚拟地址时要么开启保护模式要么开启长模式;保护模式下是32位,没有进行任何划分;长模式下64位,但是CPU只是实现了 阅读全文
posted @ 2023-04-27 21:09 QianFa01 阅读(52) 评论(0) 推荐(0)
摘要: 建立内存页面管理器:既可以分配单个页面,也可以分配多个连续的页面,还能指定在特殊内存地址区域中分配页面;但是这种分配至少是一个页面4KB大小,无法分配一个小于单页大小的 内存; malloc 函数启发: 内存对象: 设计:页基础上进行细分,分成32字节、64、128、256、512、1024、204 阅读全文
posted @ 2023-04-26 22:17 QianFa01 阅读(65) 评论(0) 推荐(0)
摘要: 初始化完内存页和内存区,接下来就实现分配和释放内存页面; 内存页的分配: 内存分配页面接口函数:mm_division_pages,进而调用mm_divpages_fmwk 内存分配页面框架函数,此函数先返回对应的内存区结构的指针,然后调用内存分配核心函数 mm_divpages_core ,返回m 阅读全文
posted @ 2023-04-25 21:55 QianFa01 阅读(52) 评论(0) 推荐(0)
摘要: 初始化: hal层的初始化函数 init_halmm 中,调用init_memmgr Cosmos物理内存管理器初始化函数,该函数完成对 内存页 结构msadsc_t ,memarea_t 结构的初始化; 内存页结构初始化: 即初始化 msadsc_t 结构对应的变量;init_msadsc_cor 阅读全文
posted @ 2023-04-25 21:08 QianFa01 阅读(55) 评论(0) 推荐(0)
摘要: 分段分页的问题: 表示方式和状态确定角度:段的长度和大小不一,页大小固定,只需用位图就能表示页的分配与释放; 内存碎片的利用:段的内存碎片会难以利用,页碎片可以利用修改页表的方式,让连续的虚拟页面映射到非连续的物理页面; 内存和硬盘的数据交换效率:遇到内存不足时系统会将一部分数据写回硬盘,释放内存, 阅读全文
posted @ 2023-04-25 16:25 QianFa01 阅读(74) 评论(0) 推荐(0)
摘要: hal_start 函数:执行板级初始化, 初始化hal层: 就是硬件抽象层,分离硬件特性,向上提供接口,让内核不在关注硬件相关的细节,也能方便以后的 移植和扩展;Cosmos是x86平台下 的,其他平台替换hal层即可; init_hal函数,初始化平台、初始化内存、初始化中断; 初始化平台:in 阅读全文
posted @ 2023-04-23 20:00 QianFa01 阅读(120) 评论(0) 推荐(0)
摘要: 本节将实现二级引导器的具体工作:检查CPU是否支持64位工作模式,收集内存信息,是否符合系统最低运行要求,接着再设置系统需要的MMU页表,显卡模式,释放中文字体文件; init_bstartparm()函数:检查CPU模式,收集内存信息,设置内核栈,设置内核字体,建立内核MMU页表数据; 检查与收集 阅读全文
posted @ 2023-04-21 10:07 QianFa01 阅读(60) 评论(0) 推荐(0)