在开始内存映射之前,我们暂且小憩一下, 聊一聊比较玄学的问题: 目录结构。 之所以这个单拎出来讲是因为在工作中发现许多专业的开发人员对目录结构都不以为意, 即使是有好多年开发经验的人目录结构也可能是一团糟。
但是一个好的目录结构对于构建的效率、代码的可维护性是极为重要的, 所以本篇来说一下我们的Alice OS准备采用的目录结构。
初心忘れるべからず
在开始内存映射之前,我们暂且小憩一下, 聊一聊比较玄学的问题: 目录结构。 之所以这个单拎出来讲是因为在工作中发现许多专业的开发人员对目录结构都不以为意, 即使是有好多年开发经验的人目录结构也可能是一团糟。
但是一个好的目录结构对于构建的效率、代码的可维护性是极为重要的, 所以本篇来说一下我们的Alice OS准备采用的目录结构。
在上一次我们已经知道了内核实际的加载地址在不同平台上是不同的, 本篇我们来设置一个启动的栈,并进入C代码的初始化流程, 同时考虑如何将这不同的加载地址告诉后续的启动代码。
为了方便不同平台的演示,这次我们添加一个新的平台, 是ARM versatilepb 平台的arm926ej-s处理器, 这是一款比较老的ARM处理器 CPU是A9系列的ARM926EJ-S, ARMv5TE架构; 我们来看看这个CPU起始的地址,并且考虑如何给我们的Alice OS初始化一个临时的栈~
本篇我们主要来看一下第一个Commit里面的Makefile
, alice.ld
以及最开始代码startup.S
.
这里会介绍一下查看反汇编的方法以及写ARM汇编的小技巧。
许多学习OS的小伙伴最终也只是停留在买一本翻了一半的《操作系统原理》、 一个下下来没看几眼的Linux源码,和一个甚至都没怎么跑起来过的Qemu。
关于OS最有名的课程就是MIT的6.828 Operating System Engineering课程, 课程讲解xv6,并附有一个难度颇高的JOS操作系统实验。 即使是一个专业的计算机学生、全程跟着上这门课在做这门Lab的时候也会 遇到遇到非常多的困难和阻力,操作系统本身的高难度门槛、不便的调试环境、 和狭窄的就业方向使得有兴趣的小伙伴也往往绊倒在学习的路上。
本系列博客旨在从0构建一个用于我演示各种Demo的小小小OS: Alice OS; 由于x86硬件的复杂性,为了简化,我会从arm,使用Qemu去构建Alice OS。
希望能对OS的一些概念进行一些解释,辅助小伙伴们的学习,也是对自己 在ARM的近两年开发进行一些点滴总结。若有本人理解不对的地方,欢迎指摘。
2019 是没有大起大落平稳生活的一年,生活和自己当初那朴素的设想一样,没有豪运眷顾, 也没有与毕业时的憧憬产生错位。 相比去年多了一点点的沉稳,少了一点点的假想。 少了一些年初的雄心壮志,多了一些生活的苟且,却也过的更加真实和自然。
明媚的阳光下,伴着尖叫与欢笑,玩拖曳伞的游客们像大鸟追逐快艇一样在空中翱翔; 在这一望无际的蓝色背景上,云彩像泼墨艺术般层层洒在这蓝色的画布上, 碧绿的丘陵在翡翠色的海水上划出了一个个海湾,白色的小浪花则跨过这巨大的海湾, 轻轻地拍在海滩上细密的沙子上,尽全力一次次尝试浸湿更远处的沙子, 不过无情的艳阳则让这绵薄的努力顷刻间化作了虚无。
海里是嬉水的孩子们,海滩上则是忙于凹各种造型摆拍的大人们, 每拍个十几分钟,都会筋疲力尽地躲在各种小店摆出来的遮阳伞中。 而女孩们则无暇休息,趁着这拍照的间隙疯狂给自己身上涂防晒。 紧靠沙滩的小路上则是陆陆续续过来的游客,而小路的边上则是各种拾趣、小食与药店,当然还少不了想着歌声与音乐的海边餐厅~
普吉是泰国的明星景点,而普吉岛的巴东地区则是普吉最最热闹与繁华地段,巴东海滩亦成为了游客们的打卡必经之地, 虽筋疲力尽,但也不会忘记这夏日海滩的美丽。
之前一直使用的搬瓦工: https://bandwagonhost.com/, 使用上感觉还不错,但是当vps IPf被封了之后, 需要等待180天才能更换一次IP。 而且其速度并没有非常的快(当然也是因为买的是最便宜的19$/year的套餐)。
听闻Amazon的云服务AWS(Amazon Web Service)可以试用,第一年免费,今天便拿来尝试了一把。 本篇记录了使用Amazon的服务建立一个自用VPS的过程。
不得不说工作之后看动画的时间就少了许多,一方面是时间的原因,也有一方面是是因为为了赶时间许多动画出了后就直接补漫画了… 不过总的来说2018的动画仍然有不少精品(紫罗兰万岁)。 给有兴趣补2018番的小伙伴提供一些参考, 也给自己一个小小的总结。 (由于百度云盘在Mac上的同步功能去掉了,所以中间有次记录从Excel到github的变更, 漏了一些不太重要的动画, 忽略就好啦)