关灯
护眼
字体:大 中 小
上一章
目录
下一页
在办公室内吃完午饭,林北马上在那台计算机前面坐了下来。
他面前摊着一本手写的笔记,里面是用铅笔写满的系统架构草稿。
从系统奖励超级计算机,林北完全掌握了超级计算机的完整技术后,就开始在构思完整的计算机系统。
超级计算机上的操作系统,只是为超算服务的系统,不合适作为普通计算机的系统来使用。
因此林北需要一套完全基于汉语言的底层操作系统,适用于未来的超计算机。
而这个东西,别说是种花家了,全世界只有林北一个人懂,没有人可以帮他。
需要他亲自一点点的完成。
这套操作系统,不需要翻译英文指令,不需要记忆那些和日常语言毫无关联的缩写词,所有的指令代码全部用汉字书写。
运算指令是“加”“减”“乘”“除”,跳转指令是“转”,条件判断是“若”“则”“否则”,循环是“循环”和“止”,输入输出是“读”“写”,程序结构用“开始”和“结束”包裹起来。
这套方案的核心原则是:任何一个识字的人,拿着操作手册看一遍,就能大致猜到每一行指令是在做什么。
他早就想清楚了,计算机的未来不应该是少数几个掌握英文的人才能触碰的工具。
特别是在种花家,计算机的操作系统,就应该以最方便的形式进行推广。
甚至汉语言系统,将会在这个时空,彻底取代未来的英文操作系统。
因为林北占据了所有的先机。
他打开第一块空白的内存区域,开始写最底层的引导程序。
这段程序不需要多复杂,只需要完成三件事。
初始化中央处理器和内存的起始状态,从固定地址加载操作系统的内核代码,然后将控制权移交给内核。
他用铅笔在纸上写了十几行代码,逐条读了一遍确认逻辑无误,然后开始一条一条地往机器里输入。
“开始
设基址=零
清内存
载入核心自磁盘
转核心
结束”
他把这五行指令输入完毕之后按下回车键,屏幕上没有报错,光标平静地跳到下一行起始处,像是已经接受了这段指令,正在等着后面的内容。
他开始写内存管理模块。
内存管理是操作系统的骨架,没有它,所有程序都将堆叠在一起互相踩踏。
他的方案是分段式管理,把内存划分成若干个大小不等的段,每个段记录起始地址、段长和使用状态,内核在分配和回收时只操作这些段表,不直接碰物理地址。
分配空间时若找到空闲段就标记为已占用,回收空间时则合并相邻的空闲块。
他把这个逻辑写成一段大约三十行的程序,一边写一边在脑子里逐行推演边界情况。
“分配段大小:
寻空闲段其中段长>=大小
若找着:
标该段已占用
返段址
否则:
返空
止
回”
写完之后他把这一段和引导程序衔接在一起,确认没有语法冲突,然后继续往下写进程管理模块。
进程管理的核心是时间片轮转。
每一道运行中的程序被看作一个进程,内核记录它的状态、寄存器值和程序计数器位置,每个进程获得一个固定长度的时间片,时间片用完之后内核自动切换上下文保存当前进程状态、恢复下一个进程的状态、把中央处理器交给它。
他为此设计了一个进程控制块的结构,包含进程标识、运行状态、寄存器备份、优先级和时间片计数器,并配有相应的调度机制让多个程序像轮流使用机器一样交替运行。
“若时间片满:
存当前
恢复下一进程
转继续
止”
他写到设备驱动部分的时候,天已经黑透了。
键盘的输入中断、显示器的输出缓冲、磁盘的读写控制,每一块都需要单独的接口定义和状态机逻辑。
他没有把所有的驱动一次性写完,而是先搭了一个基础的设备抽象层,把每种设备的操作抽象成统一的“读”“写”“控制”三个入口,具体的实现留到后续填充。
这样将来接入任何新设备都不会影响到上层应用程序的执行。
第一版完整的系统内核手稿写完的时候,时钟已经指向下午五点。
他把手稿从头到尾通读了一遍,修改了几处边界条件处理不当的地方,又补了一段异常处理逻辑,确保程序在遇到未定义指令或者内存越界时不会直接死机。
“异常:
停当前
记
本章未完,请点击下一页继续阅读>>『加入书签,方便阅读』
上一章
目录
下一页