主题:
字号:
16
行距:
2.0

第58章 野猪泛滥,和大佬们一起进山打猎[2 / 10]

有它,所有程序都将堆叠在一起互相踩踏。

他的方案是分段式管理,把内存划分成若干个大小不等的段,每个段记录起始地址、段长和使用状态,内核在分配和回收时只操作这些段表,不直接碰物理地址。

分配空间时若找到空闲段就标记为已占用,回收空间时则合并相邻的空闲块。

他把这个逻辑写成一段大约三十行的程序,一边写一边在脑子里逐行推演边界情况。

“分配段大小:

寻空闲段其中段长>=大小

若找着:

标该段已占用

返段址

否则:

返空

回”

写完之后他把这一段和引导程序衔接在一起,确认没有语法冲突,然后继续往下写进程管理模块。

进程管理的核心是时间片轮转。

每一道运行中的程序被看作一个进程,内核记录它的状态、寄存器值和程序计数器位置,每个进程获得一个固定长度的时间片,时间片用完之后内核自动切换上下文保存当前进程状态、恢复下一个进程的状态、把中央处理器交给它。

他为此设计了一个进程控制块的结构,包含进程标识、运行状态、寄存器备份、优先级和时间片计数器,并配有相应的调度机制让多个程序像轮流使用机器一样交替运行。

“若时间片满:

存当前

恢复下一进程

转继续

止”

他写到设备驱动部分的时候,天已经黑透了。

键盘的输入中断、显示器的输出缓冲、磁盘的读写控制,每一块都需要单独的接口定义和状态机逻辑。

他没有把所有的驱动一次性写完,而是先搭了一个基础的设备抽象层,把每种设备的操作抽象成统一的“读”“写”“控制”三个入口,具体的实现留到后续填充。

这样将来接入任何新设备都不会影响到上层应用程序的执行。

第一版完整的系统内核手稿写完的时候,时钟已经指向下午五点。

他把手稿从头到尾通读了一遍,修改了几处边界条件处理不当的地方,又补了一段异常处理逻辑,确保程序在遇到未定义指令或者内存越界时不会直接死机。

“异常:

停当前

记错误码于日志

转调度”

林北没有立刻把这些代码全部录入机器,

本章未完,请点击下一页继续阅读!

斩神:你管这叫度假世界?
君翎羽
宗门独宠小师弟?我连夜提桶跑路
柴犬和居八
别人夺嫡偷偷来,我家皇帝下圣旨
荒漠之缘
穿到1980,开局就有铁饭碗
提米拉苏
玄幻:简化功法,从喽啰开始成霸主
帝天
高武:开局永比呆萌校花高一境
太古一剑
怎么误会我是反派?那我真上岗了
原李
海上求生?我带美女享受人生
夏日冰瓜
重生八零嫁给全军第一硬汉
九羊猪猪
合欢老祖重生赘婿,开局掀桌子!
只喝橙汁
我老婆有白月光?她怎么不知道
加把
快穿:病弱美人她武力值爆表
帅小依
秦时明月:这个公子不对劲
怀念吃面的胖胖
仙界覆灭后,我收留了陨落仙子
鱼鱼鱼鱼籽
进城后被闺蜜哥哥宠上天
我不是煮妇
上岸斩我?上恋综爆火成偶像男友
傻兔会飞了
二婚的秘密
田泡泡
分手后,我聘上女同学妈妈小司机
无敌书生
满级大佬闯五哈,马甲掉一地
墨笔成书
洪武朝的子孙们
光头李三
民间禁忌笔记
青椒肉虾
诡异西游求生:我有选择模拟器
月影猫
749局秘闻档案
南笙
亮剑:让你发展,你带回一个师?
钢轨
风水王吴劫李玄通刘婆子
紫梦游龙
战龙归来林北林楠
我不是z
我以狐仙镇百鬼吴劫李通玄
紫梦游龙
大焰师
梁 木
都市战神林北
我不是z
战龙归来
我不是z
快活驴!
七月江南
六年后,她带三个奶团炸翻全球
月下长安
大明重启:年方三岁,登基称帝
独孤世遗
吴劫李通玄
紫梦游龙
任务流神豪
幼儿园高手
重回1982小渔村
米饭的米
公若不弃,愿拜为义父
辣酱热干面
第四天灾从不相信钢铁洪流!
喀秋莎第一可爱
修仙界只有妖女了是吗
月下千早
四合院之扮猪吃老虎
戈壁孤狼夜
半岛小行星
鸡兔同笼
青山
会说话的肘子
北海道赛马物语
点旗2009
仙命在我
杜养吾
半岛头号玩咖!
HKDoll
被夺一切后我成了仙道魁首
盛唐无夜
重生鉴宝:我真没想当专家
眀智
华娱从洪世贤开始
在下励志师
风起北美1625
一贱下天山
工业克苏鲁,从海岛领主开始
刀如故