在办公室内吃完午饭,林北马上在那台计算机前面坐了下来。
他面前摊着一本手写的笔记,里面是用铅笔写满的系统架构草稿。
从系统奖励超级计算机,林北完全掌握了超级计算机的完整技术后,就开始在构思完整的计算机系统。
超级计算机上的操作系统,只是为超算服务的系统,不合适作为普通计算机的系统来使用。
因此林北需要一套完全基于汉语言的底层操作系统,适用于未来的超计算机。
而这个东西,别说是种花家了,全世界只有林北一个人懂,没有人可以帮他。
需要他亲自一点点的完成。
这套操作系统,不需要翻译英文指令,不需要记忆那些和日常语言毫无关联的缩写词,所有的指令代码全部用汉字书写。
运算指令是“加”“减”“乘”“除”,跳转指令是“转”,条件判断是“若”“则”“否则”,循环是“循环”和“止”,输入输出是“读”“写”,程序结构用“开始”和“结束”包裹起来。
这套方案的核心原则是:任何一个识字的人,拿着操作手册看一遍,就能大致猜到每一行指令是在做什么。
他早就想清楚了,计算机的未来不应该是少数几个掌握英文的人才能触碰的工具。
特别是在种花家,计算机的操作系统,就应该以最方便的形式进行推广。
甚至汉语言系统,将会在这个时空,彻底取代未来的英文操作系统。
因为林北占据了所有的先机。
他打开第一块空白的内存区域,开始写最底层的引导程序。
这段程序不需要多复杂,只需要完成三件事。
初始化中央处理器和内存的起始状态,从固定地址加载操作系统的内核代码,然后将控制权移交给内核。
他用铅笔在纸上写了十几行代码,逐条读了一遍确认逻辑无误,然后开始一条一条地往机器里输入。
“开始
设基址=零
清内存
载入核心自磁盘
转核心
结束”
他把这五行指令输入完毕之后按下回车键,屏幕上没有报错,光标平静地跳到下一行起始处,像是已经接受了这段指令,正在等着后面的内容。
他开始写内存管理模块。
内存管理是操作系统的骨架,没有它,所有程序都将堆叠在一起互相踩踏。
他的方案是分段式管理,把内存划分成若干个大小不等的段,每个段记录起始地址、段长和使用状态,内核在分配和回收时只操作这些段表,不直接碰物理地址。
分配空间时若找到空闲段就标记为已占用,回收空间时则合并相邻的空闲块。
他把这个逻辑写成一段大约三十行的程序,一边写一边在脑子里逐行推演边界情况。
“分配段大小:
寻空闲段其中段长>=大小
若找着:
标该段已占用
返段址
否则:
返空
止
回”
写完之后他把这一段和引导程序衔接在一起,确认没有语法冲突,然后继续往下写进程管理模块。
进程管理的核心是时间片轮转。
每一道运行中的程序被看作一个进程,内核记录它的状态、寄存器值和程序计数器位置,每个进程获得一个固定长度的时间片,时间片用完之后内核自动切换上下文保存当前进程状态、恢复下一个进程的状态、把中央处理器交给它。
他为此设计了一个进程控制块的结构,包含进程标识、运行状态、寄存器备份、优先级和时间片计数器,并配有相应的调度机制让多个程序像轮流使用机器一样交替运行。
“若时间片满:
存当前
恢复下一进程
转继续
止”
他写到设备驱动部分的时候,天已经黑透了。
键盘的输入中断、显示器的输出缓冲、磁盘的读写控制,每一块都需要单独的接口定义和状态机逻辑。
他没有把所有的驱动一次性写完,而是先搭了一个基础的设备抽象层,把每种设备的操作抽象成统一的“读”“写”“控制”三个入口,具体的实现留到后续填充。
这样将来接入任何新设备都不会影响到上层应用程序的执行。
第一版完整的系统内核手稿写完的时候,时钟已经指向下午五点。
他把手稿从头到尾通读了一遍,修改了几处边界条件处理不当的地方,又补了一段异常处理逻辑,确保程序在遇到未定义指令或者内存越界时不会直接死机。
“异常:
停当前
记错误码于日志
转调度”
林北没有立刻把这些代码全部录入机器,而是下个礼拜一上班的时候,跑一趟超算中心,打算使用超级计算机上的仿真环境,把整个内核的架构模型输入进去跑一遍。
确认仿真结果确认逻辑无死锁、内存无泄漏、时间片切换没有跨周期丢失之后,这套系统才能证明没有问题。
至于眼前的这台计算机,事实上,连一个壳子都没有,目前还只是最原始的阶段。
而这台计算机将来系统完成,也彻底组装起来,其运算速度,并不会太快,也就是每秒一万次左右。
其集成电路板的芯片有一百个,每一个芯片集成了512个晶体管,总晶体管数量五万个,主频1兆赫兹左右。
运算能力每秒一万次加法运算。
对比超级计算机来说,这款计算机运算能力真不怎么样。
可问题是,这款计算机,他只是一台小巧的普通台式计算机,不是超级计算机,足足占据了一个房间大小。
是一台可以随时拆卸带走,转移,然后插上电,就可以使用的计算机。
和现代的台式机,并没有太大的区别。
并且只要完成,就可以实现初步的计算机办公。
中文输入、编辑、存储、打印。
这是最基础也是最有价值的功能之一,可以替代传统的打字机和手写文件。
只需要弄一台打印机,林北甚至连图纸都不需要手绘,直接在计算机上绘制,然后打印出来即可。
或者是使用移动数据存储,直接拷贝到其他计算机上。
此外,它还具备存储和检索信息,比如工人档案、物资台账、设备维修记录等,查询效率比手工翻档案快得多。
至于操作的话,也很简单,教一下,只要识字,基本上就会。
其次就是科学计算辅助,虽然无法直接处理完整的流体力学方程等复杂数据的计算,但可以承担子任务的前处理和后处理,比如数据录入、表格生成、中间结果的整理和归档。
特别是任务前处理,使用超算的时候,有一个很大的步骤,很影响时间,那就是录入计算内容。
有了这种计算机的话,可以将计算的内容,提前输入好,再利用存储器连接到超算,就不需要再超算上一步步输入计算内容,超算可以自动读取需要计算的内容。
这样的话,可以节省大量的时间。
再者就是培养大批的编程人员,供程序员在上面练习和调试代码,积累编程经验,为将来更复杂的计算机应用做人力储备。
还有就是数控机床上的编程,也可以先在计算机上完成,甚至可以制作一个模拟的程序,不需要到机床设备上检验,可以先模拟测试。
这样可以减少数控机床的大量停机调试时间。