主题:
字号:
16
行距:
2.0

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

一起互相踩踏。

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

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

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

“分配段大小:

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

若找着:

标该段已占用

返段址

否则:

返空

回”

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

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

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

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

“若时间片满:

存当前

恢复下一进程

转继续

止”

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

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

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

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

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

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

“异常:

停当前

记错误码于日志

转调度”

林北没有立刻把这些代码全部录入机器,而是下个礼拜一上班的时候,跑一趟超算中心,打算使

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

综影视:成为女主角攻略计划
山木有兮沐兮
任务流神豪
幼儿园高手
重回1982小渔村
米饭的米
公若不弃,愿拜为义父
辣酱热干面
路明非,成为艾尔登之王吧!
苏三十二
第四天灾从不相信钢铁洪流!
喀秋莎第一可爱
修仙界只有妖女了是吗
月下千早
四合院之扮猪吃老虎
戈壁孤狼夜
青山
会说话的肘子
北海道赛马物语
点旗2009
仙命在我
杜养吾
半岛头号玩咖!
HKDoll
半岛小行星
鸡兔同笼
被夺一切后我成了仙道魁首
盛唐无夜
重生鉴宝:我真没想当专家
眀智
华娱从洪世贤开始
在下励志师
风起北美1625
一贱下天山
工业克苏鲁,从海岛领主开始
刀如故
娱乐:我就是顶峰
疑似风月
以一龙之力打倒整个世界!
唐宋元明氢
我在俄国当文豪
卡拉马佐夫
美警生存实录:以德服人
夜叶总差
循规蹈矩能叫重生吗?
法学院新生
苟在武道世界成圣
在水中的纸老虎
我以奥术登临神座
危楼听雨
全球觉醒:开局加入聊天群
飞翔的四眼
大明:从战场捡属性开创诸天大明
无谅888
税收只在机枪射程内!
践行践远
道君,从蓬莱筑基开始
临渊今天一定更
诸天影视从四合院开始
洒家要吃肉
魔王大人深不可测
晨星LL
穿越,然后被富家JK堵门
晚不鸽
人在斗破:天赋绝世竟带系统
仪昔
超武斗东京
木隐红尘
诸天:谁把他放进恐怖片的?
三维的乱象
F1:车神养成日记
诸位贱笑了
高武:陪练十年,一招出手天下知
江南一只花
嫡明
戈昔
祭祀百年,我成了部落先祖
山人有妙计
斗罗:三位一体,我贯穿了时间线
我不开挂
谁教他这么复国的
星罗封陈
别打扰邪术师搞科研
一枚有趣的土豆
穿越七零做外贸
青铜老五
精灵:开局格斗馆主,被娜姿缠上
今天洛尘涅槃了么
黑木崖抄书百年,我成了魔道祖师
仍是少年
重生华娱,95小花养成日记
闻风太白
坐忘长生
飞翔的黎哥
超凡崛起:开局契约银龙女伯爵
汤姆不吃糖
六十大寿来系统,儿子被退婚了!
九月有二
我靠烧香爆红娱乐圈
容焉