深圳,深圳
我还依稀记得在高考填报志愿的时候,我和我的父亲正在讨论去哪个地方的学校,当时正在考虑上海,我的父亲说了这么一段话:
“上海不行,上海压力太大了,到处都是高楼,抬头都望不见天的,很压抑。”
“抬头望不见天”是一个压力具象化的极其震撼的描绘,但高三刚毕业的我显然对这个描绘理解不够,但填报志愿还是避开了上海的高校,留在了武汉。现在三年过去了,我来到了深圳,打了第一份工,我才能真实地理解“抬头望不见天”,对于上班族而言是何等的绝望。
我还依稀记得在高考填报志愿的时候,我和我的父亲正在讨论去哪个地方的学校,当时正在考虑上海,我的父亲说了这么一段话:
“上海不行,上海压力太大了,到处都是高楼,抬头都望不见天的,很压抑。”
“抬头望不见天”是一个压力具象化的极其震撼的描绘,但高三刚毕业的我显然对这个描绘理解不够,但填报志愿还是避开了上海的高校,留在了武汉。现在三年过去了,我来到了深圳,打了第一份工,我才能真实地理解“抬头望不见天”,对于上班族而言是何等的绝望。
本文主要介绍办小型ACM赛事而需要的配置机房的步骤。
为了完成物理内存管理,首先要探测可用的物理内存资源,了解物理内存位于什么地方,有多大,再以固定页面大小划分整个物理内存空间,准备以此为最小内存分配单位来管理整个物理内存,设置其可用状态为free,used,reserved。再建立页表,启动分页机制,让MMU将预先建好的页表项读到TLB中,根据页表项描述的虚拟页和物理页的对应关系完成CPU对内存的读写执行操作。
在实验中主要关注pmm_init
函数,完成的工作包括:
pmm_manager
获取内存大小方法由BIOS中断调用和直接探测两种。BIOS中断调用一般只能在实模式下完成,直接探测方法必须在保护模式下完成。终端获取内存布局有三种方法,基于INT 15h中断,分别为88h,e801h和e820h,并非所有情况三种都生效,在linux中是依次尝试三种方法。在本实验中采用e820h来实现。因为在实模式下,因此写在了bootloader中,调用该中断,将映射结构保存在0x8000处。
INT 15h能完成一系列功能,这里调用参数为e820h的INT 15h BIOS中断,获取内存映射地址描述符。
INT 15h中断这里的调用参数如下
1 | eax: e820h |
返回值如下:
1 | eflags CF位:中断执行成功则不置位,否则置位 |
我们便可以通过此中断调用,递增di的值(20的倍数),从而找到内存布局的entry,放到保存地址范围描述副结构的缓冲区中,便于后续ucore管理。该缓冲区结构体定义如下:
1 | struct e820map { |
接下来我们来观察在bootloader中的汇编码实现探测内存,汇编代码如下:
1 | probe_memory: |
获得可用内存范围后,需要建立想对应数据结构来完成管理操作,4KB对齐。这里每个物理页采用Page的数据结构来实现,Page设计需要尽量小
当对自己的真实实力没有真正的认识,期望便成为了负担。本文是一篇随笔,记录与总结我个人在第一次参加hackthon之后的经验与教训。
主要为SICP in Python的读书笔记,记录了书中的一些平时不是很熟悉的知识点。
软件开发不仅停留于理论,还需要实践来意识到理论的实用性。本文是一篇随笔,讲了读后感以及自己在实际管理项目的一些经验与教训。
本系列旨在完成uCore实验,通过实验了解操作系统的概念,从汇编,c语言编程的角度,以微观的视角了解操作系统的运行过程。
本文为本系列第一篇,介绍机器启动到启动os的过程。
本文主要是看图解HTTP书的一些学习笔记。
记录一些枪病钢里面的事与观点。
Update your browser to view this website correctly.&npsb;Update my browser now