Re: [问卦] 要怎么用针在光盘上戳出一个作业系统

楼主: jserv (松鼠)   2021-09-04 04:54:37
※ 引述《GentleJena (耶拿)》之铭言:
[...]
: 他看了一下电脑,问我有没有XP的安装光盘? 我说没有
: 他想了一下,叫我拿一张空的DVD烧录片和一根针给他,我想修电脑要烧录片和针干什么?
: 但人家是高手,我也不好说什么,就把烧录片和针拿来给他了
: 他把针头对着光盘戳,他戳的速度非常快,但是只有深和浅的差别
[...]
: 原来当时那位高手是用针头把烧录片刻成了单面双层的DVD光盘片,然后在光盘片里刻上
: 了Win XP、Office、Photoshop、迅雷、魔兽世界……等软件的安装程式
: 后来询问我朋友,那位高手的下落,我朋友说他前几年去了美国之后,就杳无音讯了....
: 有没有八卦
“既然你诚心诚意地发问了,我们就大发慈悲地告诉你”(语出“火箭队”)
这则笑话在 2010 年就出现巴哈姆特电玩资讯站 [1],内容改写自中国网友的创作,
已有十余年,不过该笑话的弊端在于“针”。DVD 烧录仰赖光学读写头,其最底层有一
枚雷射二极管的元件,后者主要功能是射出雷射光,接着其光向是朝齐聚光棱镜射去,
而聚光棱镜会将光束直接射向分光镜。示意如下图:
___________ 光盘 ____________
\ \
\ ___ 沟(pit) \
\_________/ | \______________\
|投射光
____+____
/ \ 物透镜
\_________/
| _
分光镜\\_|__......... / \聚光棱镜...\
| \\___......... | |........... 光学传感器
| |\\__......... | | ........../
| | | \_/
| | |
______
/ \聚光棱镜
\______/
\|/
|
雷射二极管
分光镜会将光束射向两种不同方向:
1. 射向“物透镜”(图中的向上),可将光束“聚焦”;
2. 射向“光学传感器”(图中的向右),用途是等待物透镜反射回来的光
光盘片表面的沟 (pit),就是光盘在烧录过程的“烙印”。因此,原发问者提到“在光盘
片里刻上了 Win XP”,实际就是光盘表面各种 pit。由光学读写头射出的光束,若射进
pit 时,其反射光先是射回“分光镜”,再转向“光学传感器”。
接下来,我们要思考:如何纪录数位资料在光盘上呢?
* 将 1 记录为“有标记”,即有熔凹 (光盘片的记录膜上,熔掉染料所形成的标记,
在平坦与高起、凹下的交界处)
* 将 0 纪录为“无标记”,表示无熔凹的情况
在光学读写头中,光束由下往上射向光盘记录层,当光束射向记录层时,其记录膜会有
010110 一类标记资料,于是,当光驱要读取光盘上的资料时,同样也会发射光束,但
其光束的强度不足以熔化记录膜,因此光束又会反射回来,此时反射光强度会因照射到
0 或 1 (即“未凹陷”与“凹陷”的记录膜) 而有不同。
光学读写头中的“光学传感器”会持续接收反射光,无论是读取 0 或 1 都会产生不同
波长的反射光,这是类比讯号,接着送到解码芯片 (这也是联发科技 [MediaTek] 公司
初期主要产品: CD-ROM 芯片组,英文名称的 "Media" 就是指“光学媒体储存”),转换
为数位资料,提供给电脑装置运用。
为了让标记能正确在光盘上纪录,在光盘上有“导沟”(pre-groove),从光盘的中心
一圈又一圈地,螺旋状往外延伸到光盘的最外围,从而引导光学读写头的位置。至于
引导光学读写头的作用,是让它得以依循特定规则去写入或读取资料,因物镜所射出的
光束聚焦在光盘片的记录膜时,其记录膜上会形成一个“光点”(spot),后者就会依循
导沟的线圈行进,且光点亦可追踪光盘的位置,换言之,光点可持续寻找光盘所移动的
方向,从而完成烧录。
光盘无论是“读取”,抑或“烧录”,都在“光学”的基础 (不然怎么叫作“光”碟
呢?),不是利用“针”。
当然,里头学问相当大,例如烧录器的“一倍”速度指每秒 1358KB 的资料量,于是
24 倍速就是每秒 33.2 MB 的资料量,烧录器转速大增,也会产生相当大的马达旋转
声响,马达加速不算太难,但关键是如何稳定地运作,否则光学读写头离光盘表面非常
近,若马达不够平稳,就会损害光学读写头和光盘片。参见 Wikipedia 的 DVD 词目:
https://en.wikipedia.org/wiki/DVD
回到最初的笑话,人类史上是否用“针”来记录电脑软件呢?有的,而且早在 1960 年代
的阿波罗计画中。
在希腊和罗马神话中,阿波罗 (Apollo) 是太阳神,也是光明之神、真理之神。Apollo
是宙斯与黑暗女神勒托 (Leto) 的儿子,也是音乐家、诗人和射手等职业者的保护神。
他从不说谎,光明磊落,典型形象是右手拿七弦的里拉琴,左手拿象征太阳的金球。他
擅长弹奏里拉琴,精通箭术,他把医术传给人们;且由于他聪明,通晓世事,因而他也是
预言之神。Apollo 掌管音乐、医药、艺术、预言,是希腊神话中最多才多艺、最美/英俊
的神祇,同时也象徴著男性之美。
正因为 Apollo 的正面形象,美苏冷战时期,美国在 1960 年代末期到 1970 年代初期的
登陆月球计画,就命名为阿波罗计画 (the Apollo Program)。1967 年 1 月,Apollo 1
还在地面时,因太空舱高压氧气使火势无法控制,3 名太空人罹难,由于这次严重挫败,
致使 Apollo 2 到 Apollo 6 之间的计画被取消。随后的 Apollo 7 到 Apollo 10 获得
成功,并在技术上屡次超越过往。1969 年 7 月的 Apollo 11,人类首度登陆月球,直到
1972 年 12 月的 Apollo 17 才停止。
阿波罗计画中的导航软件的确用针线“编织”而成。毫无疑问地,导航软件相当重要,当
太空船绕行到月球背面时,无法和地球直接通信,太空船的导航全靠软件指挥 ——这样
的软件当然不容有错。当时导航软件的开发主管 Margaret Hamilton,使用“软件工程”
字眼,将软件开发与硬件还有其他工程学类做出区别,并沿用至今。
1960 年,时年 24 岁的 Hamilton 在 MIT 担任程式设计师,最初的动机是赚钱来支持她
丈夫在哈佛大学攻读法学院,并打算在丈夫毕业后,换她去读研究所,不料她却一直工作
下去,还主导阿波罗计画的软件开发 [2]。2016 年她从欧巴码总统手上,获得总统自由
勋章 [3]。
除了对软件本身正确性的高度要求,软件储存媒介介质自然也是关键议题 —— 顾及暴露
在太空环境,会有个是宇宙射线破坏储存媒介的内容,就算起出软件设计是正确,但过程
中在太空中受到损害,后果亦是不堪设想。
当时较流行的储存媒介是打孔纸带,即在纸带上不同位置以打孔与否,表示 0 和 1。但
载人太空任务显然无法将性命攸关的安全,寄托在纸带上面。至于磁带 (tape),它依赖
于过于巨大的读写装置,且在太空环境也无法保证品质。于是,最终选择是磁环和导线。
储存器是个有很多磁环构成的阵列,导线从阵列中穿越,以二进制机械码 (即 0 和 1)
来保存软件资讯,可参见 Wikipedia 词目 Core rope memory:
https://en.wikipedia.org/wiki/Core_rope_memory
在阿波罗导航系统所用的储存器中,清楚可见红色的磁环和绿色的导线。磁环的作用是
改变导线上电压的状态:
* 若导线穿过磁环,导线上的电压就会改变,系统检测到这改变后,就将这条导线上
的资料解读为 1
* 若导线没有穿过磁环,导线上的电压就不改变,系统将这条线上的资料解读为 0
详见影片: Knitting to the Moon!
https://youtu.be/f2ZCVnk-oRU
使用磁芯-线圈内存 (core rope memory) 的技术考量为,可有效抵抗宇宙射线。
不难想见,软件写入储存装置的过程,和人类传统工艺织布相当类似。于是,阿波罗计画
雇用许多经验丰富的纺织工人 (绝大多数是女性),采用一种类似纺车的装置,搭配一种
特别的毛衣“针”,一个位元 (bit) 接着一个位元地把,整个软件“织”进储存装置。
就是像是老太婆打毛线一样,去“编织”为对应的 core bit,所以 MIT 有些人就戏称
这样的内存为 LOL memory,意思是 "Little Old Lady memory"。
至于要“编织”多少位元呢?大约是 60 万个位元 (即 75KB),虽然以今日标准来说,
甚至还不够网友们放头像,但这些资料都是人工输入、人工编织,还有人工验证。
一个程式需要几个月才能“编织”好,如果出现错误,要修正它简直是个恶梦,于是,
软件开发严重落后于预定时程。1966 年,美国太空总署派来了一位专家 Bill Tindall
来检查阿波罗所使用的软件,事后他写信给总部说:
: “我担心我们可能无法在十年期限里达成登月计画,因为程式无法完成”
阿波罗 11 号的太空人即将启用从未在太空中测试过的软件功能 (!),没有该软件功能,
登月舱就无法在月球上登陆,然而令人诧异的是,该功能是是后由一个初级软件工程师
Don Eyles 所加入,当时他只是个刚毕业的 22 岁年轻人 (!),当他加入团队时,软件
已完成三分之二,软件开发主管将登月相关的程式分配给他写 (!)。
尽管过程相当艰辛,这个编织出来的程式,成功将太空人带去月球,并安全带回家。
Neil Armstrong 说:
“若用 1 到 10 级来表示难度,在月球上行走,大约是 3 级,登陆月球是 13 级”
2009 年,适逢 Apollo 11 成功登月 40 周年,Virtual AGC 计画尝试从 MIT
Instrumentation Laboratory 扫描的技术文件图片中,重新还原用于 Apollo 11 的
Command Module code (Comanche054) 和 Lunar Module code (Luminary099),使其得以
在现代的电脑环境中运作,其中 AGC 就是 Apollo Guidance Computer 的缩写。参见:
Virtual AGC: http://www.ibiblio.org/apollo/
Wikipedia: https://en.wikipedia.org/wiki/Apollo_Guidance_Computer
Virtual AGC 计画还原的程式码进一步整理在 GitHub,请见:
https://github.com/chrislgarry/Apollo-11
阅读 Virtual AGC 计画整理出的程式码,我们不难发现 Don Eyles [5] 的大名,他是
登月艇里头程式的主要开发者,Apollo 11 发射之际,他才 22 岁,就负责开发影响人类
历史的重大计画。这让我想到,ARRC [4] 由一群在美国太空总署服务过、在太空领域深
度耕耘各领域专家所组成的“火箭大叔”,带领着一群年轻人打造台湾人自制的火箭,
宣示要让台湾有自主发射卫星能力。2010 年,ARRC 首次大型试射成功,跌破众人眼镜,
计画主持人的吴宗信教授 (现任国家太空中心主任) 看见学生的眼泪,说道:
“你会发现真的做得到,只是没有人给他们这个机会”
工程就是为了解决人类的种种问题而生,工程师则是肩负这使命的一群无名英雄,年纪
不该是显著的限制。
航太科技是科技发展的火车头,今天我们熟知的 3D 打印、燃料电池、太阳能板、遥控
系统等等,都是阿波罗计画为了克服种种难题,发展而出的各式副产品。于是,发展自制
火箭系统、整合产业链,等于是让台湾产业链从机械代工端,走向航太产业。阿拉巴马
大学航太工程与机械学系教授 Gary. C. Cheng 评论道:
“ARRC 的价值绝对不仅是他们的发射成果,更重要的是他们发展的科技,及栽培出
的下一代,就如同 NASA 不断为美国科技业带来突破与各种新产品那样。”
当时在阿波罗计画中参与飞行电脑系统的 Phill Parker 事后回顾 Don Eyles 等人的
程式码,撰写一篇文章 "Apollo Lunar Module Computer Source Code Humour !",
可见: http://forum.nasaspaceflight.com/index.php?topic=34348.0
登月纪录影片对应的字幕,可参见: http://www.firstmenonthemoon.com/
[1] 标题: [笑话]我见过的几个让我瞠目结舌的电脑高手
https://home.gamer.com.tw/creationDetail.php?sn=675129
[2] Her code got humans on the moon - and invented software itself
https://www.wired.com/2015/10/margaret-hamilton-nasa-apollo/
[3] Apollo software engineer Margaret Hamilton receives Presidential Medal of Freedom
https://www.theverge.com/2016/11/23/13734214/apollo-software-engineer-margaret-hamilton-presidential-medal-of-freedom
[4] Advanced Rocket Research Center (ARRC)
https://arrc.tw/
[5] Don Eyles
https://www.doneyles.com/LM/Tales.html

Links booklink

Contact Us: admin [ a t ] ucptt.com