第510章 系统布署(1/2)
请关闭浏览器的阅读/畅读/小说模式并且关闭广告屏蔽过滤功能,避免出现内容无法显示或者段落错乱。
陈教授来的时候,是个大晴天。
九月初的北京,热浪从地面蒸起来,把远处的楼宇烤得发虚。
一辆草绿色的吉普车停在红星所门口,陈教授从副驾驶下来,手里拎着一个军绿色的帆布包,包带在肩上勒出一道深痕。
他穿着短袖白衬衫,领口的扣子解了一颗,露出晒得黝黑的脖颈。
头发花白,但梳得一丝不苟,眼镜片后面的眼睛不大,却很亮,像两颗打磨过的黑石子。
宋颜教授和吕辰已经等在门口。
“陈教授,辛苦了。”宋颜迎上去,接过帆布包,沉甸甸的,里面全是资料。
陈教授摆摆手,在台阶上站定,抬头看了看主楼上“红星工业研究所”几个大字,然后低头看了看表:“不辛苦,时间紧。机房准备好了?”
“准备好了。”
“数据库的框架写完了,我今天把微程序装上,跑通之后,你们就可以开始填数据了。”
他顿了顿:“另外,汪教授那边的分布式调度微程序也编译好了,存在二维卡里,我一并带过来了。”
他又补了一句:“三百多张卡,装了两个箱子,在后备箱里。”
宋颜眼睛一亮:“微程序也好了?”
“好了。”陈教授一边往车子后面走,一边说,“汪教授带着人熬了六个多月,调度器的核心代码写了1万多条指令。已经在计算机所的模拟环境里跑通了基本功能,任务分发、负载均衡、结果回收。但还没在你们这个16节点的真机上跑过。今天一并试。”
三个人走到后备箱,两个木箱子和那个帆布包,一人抱一个,往右附楼走。
机房的铁门开着,冷气从门缝里溢出来,在走廊里凝成一层薄薄的白雾。
陈教授站在门口,没有立刻进去,而是先透过门上的玻璃窗往里看了几秒。
“好。”他轻轻说了一个字,推门进去。
冷气扑面而来,干燥,带着一种电子设备特有的气味,焊锡、松香、还有一点臭氧。
陈教授把帆布包放在管理员桌上,宋颜教授和吕辰把两个木箱子放在地上,撬开盖子。
里面是码得整整齐齐的二维卡,每一张都用牛皮纸信封封装,信封上贴着标签,写着程序模块名称、版本号、日期和负责人签名,信封里还有具体的指令文本。
字迹工工整整,一丝不苟。
陈教授从帆布包里抽出一沓厚厚的资料,翻开第一页,是一张手绘的系统架构图。
中央是一个大方块,写着“调度器”,周围围着16个小方块,代表16台KJ-0A,线缆连接成星型和环型的混合拓扑。
“我先讲一下整体设计。”他把图纸摊在管理员桌上,宋颜、吕辰、诸葛彪、钱兰、曾祺、陈工都围过来。
“分布式辅助设计系统,分成三层。”
他竖起一根手指:“最底层,是硬件和通信。16台KJ-0A,星型网连存储柜,环状网做协同。这一层你们已经跑通了,我不多说。”
竖起第二根手指:“中间层,是调度器。跑在16台机器中的一台,我们叫它‘主控节点’。它负责任务的接收、分解、分发、监控、回收。工程师坐在任何一台终端上提交一个仿真任务,调度器会根据当前各节点的负载,决定把任务分给哪台机器去算。算完了,结果返回给终端,同时存入存储柜。”
他顿了顿,竖起第三根手指:“最上层,是应用软件。标准单元库的数据库管理程序、版图编辑器的交互程序、仿真器的前端界面。这些是你们红星所要自己写的,理论组只提供底层调用的接口。”
陈教授讲得很细,从任务队列的数据结构,到节点负载的衡量标准,到故障节点的检测与隔离。
吕辰一边听一边在笔记本上记,偶尔提问。
钱兰问的是数据一致性,如果主控节点把同一个任务分给了两台机器怎么办?
陈教授说调度器里有一个“任务去重表”,每个任务有唯一编号,分出去之前先查表,分出去之后立刻写入。
诸葛彪问的是环网通信的可靠性,如果令牌在传输过程中被干扰了怎么办?
陈教授说微程序里实现了超时重传机制,发送方发出令牌后启动定时器,如果在规定时间内没收到应答,就重发。连续三次失败,就判定节点故障,启动隔离流程。
其他人也纷纷提问。
一个小时后,方案讲完了。
陈教授合上资料,看着所有人:“有问题吗?现在提。等装上去了再改,麻烦。”
沉默了几秒。
吕辰说:“有一个问题。如果主控节点自己死机了怎么办?”
陈教授看了他一眼,嘴角微微翘了一下:“这个问题,汪教授想到了。所以调度器不是单点,而是双机热备。两台机器同时运行调度器,一台主用,一台备用。主用每十秒钟向备用发送心跳。如果备用连续三次没收到心跳,就自动接管。工程师终端上的任务提交接口有两个地址,主用连不上就切备用。”
他从资料里抽出一张图,是双机热备的状态转移图,画得清清楚楚。
“还有问题吗?”
没人再问。
“好。那就开始装。”
先装存储柜上的数据库系统。
陈教授从帆布包里拿出一个防静电盒,打开,里面是一块陶瓷封装的只读存储器芯片,银灰色的外壳,表面印着白色的丝印字。
“数据库的内核,固化在这块芯片里。插到中央存储柜的背板上,上电之后会自动加载到指定内存区域。”
吕辰接过芯片,用拇指摩挲了一下封装表面,然后走到中央存储柜后面,找到背板上预留的插槽,小心地插进去。“咔嗒”一声,到位。
陈教授走到管理员桌前,按下监控终端的电源开关。
显示器亮起来,绿色的字符开始跳动。
他敲了几行命令,屏幕上的输出一行一行地滚过:
LOADINGDATABASEKERNEL……
KERNELLOADEDAT0x1000
INITIALIZINGBUFFERPOOL……
BUFFERPOOLSIZE:64KB
INITIALIZINGIRUCTURE……
B+TREEROOTCREATED
DATABASEREADY.
陈教授又敲了一个命令,屏幕上出现了一个简单的提示符:DB>
他回头看了一眼吕辰:“数据库内核跑起来了。接下来装管理工具。”
他从帆布包里拿出一个牛皮纸信封,里面装着厚厚一沓二维卡,每张卡上打满了孔。
他把卡片一张一张地塞进读卡机,每塞一张,读卡机就“咔嗒”一声把卡片吞进去,显示器上逐行显示加载信息:
LOADINGDB_MAOOL……DONE
LOADINGDB_QUERY_TOOL……DONE
LOADINGDB_IMPORT_TOOL……DONE
……
加载了将近二十张卡,最后屏幕上出现了一行提示:ALLTOOLSLOADED.TYPEHELPFORANDS.
陈教授敲了“HELP”,屏幕上列出十几个命令:
REATE_TABLE、I、SELECT、UPDATE、DELETE、CREATE_INDEX、DROP_INDEX……
“数据库的表结构我已经建好了。”他切换到另一个界面,屏幕上出现了一个表格状的输出:
TABLE:CELLS
NS:
ID(INT,PRIMARYKEY)
NAME(CHAR(32))
FUN(CHAR(16))
TECH(CHAR(4))//5UMOR2UM
LAYOUT_DATA(BLOB)
SIM_MODEL(BLOB)
TEST_VECTORS(BLOB)
VERSION(INT)
MODIFIED_BY(CHAR(32))
MODIFIED_AT(TIMESTAMP)
“每个标准单元存成一条记录。ID是唯一编号,NAME是单元名称,FUN是逻辑功能,TECH是工艺版本——5微米还是2微米。LAYOUT_DATA存版图的坐标数据,SIM_MODEL存仿真模型的参数,TEST_VECTORS存测试向量。VERSION、MODIFIED_BY、MODIFIED_AT是版本管理用的。”
陈教授转过身,看着吕辰:“你们的人要做的,就是对着手册,把每个单元的这几项数据,用IMPORT工具一条一条地塞进数据库。IMPORT工具支持从文本文件批量导入,你们可以先把数据写成文本文件,再一次性导入,比一条一条敲命令快。”
本章未完,点击下一页继续阅读。