MSDOS作者讲述历史.docx
- 文档编号:15824260
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:17
- 大小:29.99KB
MSDOS作者讲述历史.docx
《MSDOS作者讲述历史.docx》由会员分享,可在线阅读,更多相关《MSDOS作者讲述历史.docx(17页珍藏版)》请在冰点文库上搜索。
MSDOS作者讲述历史
MS-DOS作者自诉
2011年8月2日星期二
保罗艾伦和我
我最近得到了保罗艾伦的自传“创意人”的副本。
我还没读过,但是我已经浏览了我扮演角色的部分。
我的第一反应是:
真的保罗,你不知道怎么拼我的名字?
除此之外,提到我的一切看起来都很准确。
在我第一次参加微软工作时,保罗是我的直接主管(我想当时每个人都向保罗或比尔报告)。
他在1981年进行了我的面对面表现评估。
那次评论结果有一个有趣的时刻。
当我被聘用在微软时,我签署了修改后的雇佣协议。
通常的协议会让微软有权在我在那里工作时想到的任何事情;修改限制了我被指派去做的工作范围。
改变的目的是让我咨询我以前的雇主西雅图计算机产品公司。
因此,在受雇于微软的同时,我是SCP的顾问,得到了微软的祝福。
作为一名SCP顾问,我为IBMPC设计了一个附加卡,SCP作为RAM+出售。
这是一个包含串口的存储卡。
SCP的价格略低于单独存储卡的IBM价格,并且取得了巨大的成功。
IBMPC只有五个附加插槽,其中一个总是被视频卡占用,因此多功能卡特别吸引人。
在我1981年12月的性能评估期间,我从保罗那里了解到微软计划推出一款IBMPC附加存储卡。
微软进入硬件业务让我感到惊讶。
我不得不告诉保罗我已经设计了什么是SCP的竞争卡。
他是一个随和的人,只是说“不要再做了。
”我没有遇到任何麻烦,我松了一口气。
(我不确定我是否向比尔报告说我会这么容易得到的。
)
TimPaterson发表于11:
40AM13评论:
2011年4月16日星期六
所有那些软盘格式......
西雅图计算机产品公司将DOS改编为一系列软盘系统。
我们使用了NorthStar,Cromemco和Tarbell软盘控制器,后来设计了我们自己的软盘控制器(“DiskMaster”)。
软盘有两种尺寸,我们称之为5“和8”(但5“实际上是5.25”)。
8“磁盘首先由IBM推出,包含77个26个扇区的磁道,每个扇区存储128个字节的数据,总容量为256,256个字节。
在轮毂附近的盘中打出一个小孔作为“索引”或每次旋转的起点。
这意味着磁盘是“软扇区”:
没有扇区边界的物理指示。
扇区启动只能通过从磁盘读取来确定。
北极星系统使用5“磁盘,35个磁道,10个扇区,256字节,总容量为89,600字节。
这些磁盘是“硬扇形的”,其中有11个孔(10个用于扇区,另外一个用于索引)。
据我所知,这种格式对于北极星来说是独一无二的,而且该行业的其余部分已经演变为在具有软扇区的5英寸磁盘上使用40个磁道。
这些5“磁盘将以300RPM(每秒5转)旋转,略慢于8”磁盘的360RPM(每秒6转)。
5“磁盘的数据速率正好是一半,每秒125,000位,而8”则为250kbps。
输入双密度
比特流存储在软盘上的方式非常简单。
首先是一个“时钟”脉冲,表明数据位即将到来。
接着是1位的数据脉冲,或者0位的无脉冲。
在速度为125kbps的5“软盘中,时钟脉冲每8微秒发生一次。
数据脉冲(如果存在)将在4微秒之后,在时钟脉冲之间的中间。
对于8英寸磁盘,所有时间都减少了一半。
发送时钟脉冲以使磁盘控制器“锁定”到数据流。
旋转磁盘的电机不能保证完全正确的速度,因此时钟脉冲允许控制器调整到实际速率。
如果没有它们,控制器可能会在长串0位(无脉冲)后丢失。
但是有人发现1位可以用作时钟脉冲(用于锁定速率),允许消除一些时钟脉冲,因此可以将位发送得更靠近。
由此,双重密度诞生了。
您只需取出除两个0位之间的时钟脉冲之外的所有时钟脉冲,并以两倍的速度发送数据。
因此,对于双密度,与原始单密度一样,最近的两个脉冲可能仍然相隔4微秒(对于5“磁盘)。
1位后的0位将相隔6微秒,0位后的1位也是如此。
相隔4微秒的一串脉冲可以是0位(没有数据位的时钟位)或1位(没有时钟位的数据位)-您必须从头开始跟踪。
再一次,将8英寸磁盘的所有时间都减半。
IBMPC软盘
IBM选择使用5个“双密度软扇形磁盘,40个磁道,每个磁道8个扇区,每个扇区512个字节。
这使得他们的磁盘总容量为163,840字节,称为“160k磁盘”。
1981年春天,我离开西雅图计算机公司为微软工作。
我的第一个任务是帮助完成DOS对IBMPC硬件的调整。
这项工作通常是由IBM的错误报告和功能请求驱动的,我坚持做我被要求做的工作。
但最终我不禁要问:
为什么IBM软盘上每个轨道只有8个扇区?
我们曾在西雅图计算机公司处理过许多磁盘格式,而且我已经深入了解了它们的布局。
5英寸圆盘以300转/分钟旋转,或每转0.2秒。
双密度比特率为250kbps,这意味着在一次旋转中有50,000个原始比特或6250字节的时间。
每个扇区都有相当大的开销,比如114字节。
但IBM只使用(512+114)*8=5008字节的轨道。
在轨道上添加第9个扇区会将其增加到5634个字节,仍远低于可用总量。
你可能几乎适合第10个扇区,但不完全(或者你可以减少开销并使10个适合!
)。
IBM的回答是“哦,真的吗?
”他们从未做过计算。
将这样的改变投入到产品中也是为时已晚(可能是PC发货前2-3个月)。
他们表示将把它保存为DOS1.1的新升级功能。
首批IBMPC将采用160k格式。
更多格式
IBM在首次发布后大约6个月更新了个人计算机产品线。
这不仅包括DOS1.1,而且现在软盘驱动器可以使用磁盘的两面,使容量翻倍。
为了兼容性,他们仍然采用单面格式,每个轨道有8个扇区--160k磁盘。
但是现在旧的PC(带有单面磁盘)可以升级到DOS1.1并使用9扇区格式--180k磁盘。
当然,新机器需要使用双面9扇区格式--360k磁盘。
出于某种原因,IBM还支持双面8扇区格式--320k磁盘-没有任何用处。
两年后,IBM推出了基于Intel286微处理器的个人计算机AT。
随之而来的是高容量的5英寸软盘。
它基本上使5“磁盘的规格与旧的8”磁盘相同-使数据速率加倍并以更快的360RPM旋转磁盘。
容量增加到1.2MB,与8“磁盘相同。
最终,5英寸软盘被3.5英寸磁盘取代,其容量为1.44MB。
我仍然在办公室看到一些配有3.5英寸磁盘驱动器的计算机,但他们的时间也过去了。
TimPaterson发表于3:
57PM9评论:
2009年3月17日,星期二
IBMPCDesignAntics
最初的IBMPC的时钟速度为4.77MHz。
内部的8088处理器实际上被指定为以5MHz运行,那么IBM最终如何以4.77的速度运行?
为了讲述整个故事,我们需要简要地运回1953年。
那一年,国家电视标准委员会(NTSC)批准了一项新标准,允许电视广播增加色彩,同时保持与现有的黑白电视完全兼容。
这是通过添加不干扰原始B&W信号的“彩色副载波”来完成的。
彩色副载波是频率为3.579545MHz的信号。
接下来我们转向Intel8088微处理器的设计。
这是不寻常的,因为它需要一个不对称的时钟而不是通常的方波。
当时常见的8位处理器,如8080和Z80,需要占空比为50%的时钟-即“高”时间恰好为50%,而“低”为其他50%。
高和低时间一起是时钟周期,因此对于Z80,在一秒钟内(4MHz)将有4,000,000个这样的时钟周期。
另一方面,8088需要1/3占空比时钟-即33%的时间和67%的低时间。
为了确保8088的时钟恰到好处,英特尔提供了一个配套时钟发生器芯片8284.为了让8284产生正确的1/3占空比时钟,它需要以一个比实际时钟长三倍的时钟开始。
期望的速度。
由于8088的设计运行频率为5MHz,因此8284的设计输入频率为15MHz。
在某些时候,IBM硬件设计工程师实现了飞跃:
彩色图形适配器需要3.579545MHz信号来创建彩色副载波;获得该信号的一种方法是将14.31818MHz除以4;14.31818MHz仅比Intel8284时钟发生器的最大速度低约5%(将其除以3以获得8088处理器的4.77273MHz)。
因此,通过牺牲5%的性能,可以节省大约0.50美元的零件-对于那些选择CGA视频卡而不是单色显示适配器的客户。
TimPaterson发表于4:
02PM6评论:
2007年11月24日星期六
第一台DOS机器
西雅图计算机产品公司(SCP)于1979年10月推出了他们的808616位计算机系统,这是IBMPC推出的近两年。
通过“计算机系统”,我实际上是指用于S-100总线的一组三个插卡:
8086CPU卡,CPU支持卡和8/16RAM。
那时SCP没有制造这些卡插入的S-100机箱。
需要该机箱和计算机终端来制作完整的工作计算机。
S-100巴士
在现代个人计算机内部,你会发现一块主板充满了计算机系统的核心:
CPU,内存,磁盘接口,网络接口,USB接口等。
在一个角落里,您通常可以找到四个或五个PCI插槽用于添加-in卡,但对于大多数人来说,不需要额外的卡(除了可能是显卡)。
相比之下,S-100总线主板根本不包含任何组件。
一个全尺寸的主板只有18-22卡槽。
每个插槽都接受一个带有100针边缘连接器的5“x10”S-100卡。
典型的计算机系统将具有带CPU的卡,可能有几个带存储器的卡,用于软盘接口的卡,用于串行I/O的卡,可能是视频卡等。
这种安排由MITS与Altair8800计算机一起开始,但最终由电气和电子工程师协会标准化为IEEE-696。
在标准化过程中,S-100总线从8位总线(通常由8080和Z80处理器使用)扩展为16位总线。
正是这种16位扩展使得S-100总线成为SCP8086计算机的合适目标。
SCP还希望利用S-100总线上现有的各种卡片。
他们不需要为磁盘接口,串行I/O,视频等制作卡片,因为它们已经可用。
即使(空)底盘本身也是一个标准项目。
现有的计算机所有者可以简单地更换他的8位CPU卡并将其替换为16位SCP卡,并且所有硬件都可以一起工作(但软件是另一回事)。
SCP16位计算机系统
8086CPU卡是Intel8086微处理器,需要几十个逻辑芯片才能将它连接到S-100总线。
总线的信号和时序是围绕原始的8位Intel8080构建的,并且需要大量的“胶水”逻辑才能使用不同的微处理器创建相同的信号(对于Z80也是如此)。
然而,对于8086,还有一个重要的增加层工作在“8位模式”或“16位模式”。
这些模式由IEEE标准定义,因此16位CPU可以与现有的8位存储器一起使用,性能下降,或者全速使用新的16位存储器。
实质上,CPU卡可以为每个存储器访问请求16位。
如果没有响应,则卡进入8位模式:
SCP8086CPU上有一个机械开关,允许微处理器以4MHz或8MHz运行(而你今天获得的处理器将在3,000MHz=3GHz左右运行)。
当SCP首次开始销售时,英特尔还无法提供8MHzCPU芯片,因此早期的设备只能以4MHz的频率运行。
CPU支持卡是制作工作计算机所需的东西的集合。
最重要的项目是:
带调试器的引导ROM。
用于连接计算机终端的串行端口。
一个时钟。
8/16RAM有16KB(不是MB!
)的内存。
它可以在“16位模式”下运行,因此16位处理器可以全速运行。
在早期,使用其中四张卡来构建具有64KB内存的系统将被认为是充足的。
系统首次发布时唯一可用的16位软件是MicrosoftStand-AloneDiskBASIC。
SCP没有制作软盘控制器,而是支持Cromemco和Tarbell制造的磁盘控制器。
发展时间表
我于1978年6月获得计算机科学学士学位,并开始在SCP工作。
英特尔刚刚宣布了他们新的8086微处理器,我被派去参加一个技术研讨会来检查它。
1978年5月的IEEE计算机杂志发布了S-100标准的初稿,其中包括16位扩展,因此我对制作16位S-100计算机的可能性感到兴奋。
我在SCP的主要职责是改进和制造新的S-100存储卡,当时这是SCP唯一的产品。
但是当我有空的时候,我被允许调查计算机设计。
到1979年1月,我的8086CPU和CPU支持卡的设计已经在原型中实现。
我能够做一些测试,但是当我编写一些软件时,硬件开发需要被搁置。
甚至英特尔都没有为我提供8086汇编程序来完成最基本的编程,所以我自己写了一个。
它实际上是一个在CP/M下运行的Z80程序,但它生成了8086个代码。
接下来,我编写了一个适合CPU支持卡上的2KBROM的调试器。
5月份,我们开始与微软合作,让他们的BASIC在我们的机器上运行。
我把计算机带到他们的办公室,并在调试时与BobO'Rear并肩坐在一起。
他的工作速度让我印象深刻。
他们以前没有使用真正的8086,但是他们已经模拟了它,所以当我到达时,BASIC几乎准备好了。
在微软的邀请下,我将8086计算机带到纽约,在6月的第一周在全国计算机大会上展示。
1979年6月的IEEE计算机杂志出版时出现了一个小小的挫折。
IEEES-100标准草案发生了重大变化。
我参与了标准流程,以纠正已经引入的一些错误。
但我仍然不得不对8086CPU进行设计更改,这需要一个全新的电路板布局,存在引入新错误的风险。
然而,事实证明,没有犯错,所以生产能够在3个月后开始。
演化
16KB存储卡最终被64KB卡取代。
英特尔推出了执行浮点运算的8087协处理器,并且SCP制作了一个插入8086微处理器插槽的适配器,为它提供了空间。
后来SCP更新了8086CPU卡,因此它有8087的空间。
在我为这台机器编写DOS之前,软件情况没有改变,首先在1980年8月发布。
当IBM在1981年8月推出他们的PC时,它的8088处理器使用了8位内存,性能几乎与使用8位内存和SCP8086CPU相同。
除了IBM以4.77MHz运行处理器,而SCP机器以8MHz运行时。
因此,SCP8086计算机系统的速度比IBMPC快约三倍。
IBM还重新引入了我在设计8086CPU时特别避免的内存限制。
对于S-100计算机,使用普通计算机终端的低成本替代方法是使用视频卡。
但是,视频卡占用了一些内存地址空间。
引导ROM通常也会占用地址空间。
SCP系统设计用于终端,启动后可以禁用启动ROM。
这使得整个1MB的内存地址空间可用于RAM。
另一方面,由于视频和启动/BIOSROM,IBM将其PC中的地址空间限制为640KB的RAM。
这种限制被称为“DOS640K屏障”,但它与DOS无关。
Microsoft充分利用了SCP系统功能。
1988年,SCP关闭后的几年,他们仍在使用SCP系统完成一项任务,只能执行(“连接链接器”)。
他们的机器配备了完整的1MBRAM-64KB卡中的16个。
在为英特尔386微处理器开发32位软件工具之前,该机器无法退役。
TimPaterson发表于2:
15PM4评论:
2007年9月30日星期日
DOS的设计
我打算在1980年4月为16位Intel8086微处理器编写一个操作系统(OS)。
那时我的雇主西雅图计算机产品公司(SCP)一直在运送他们的8086计算机系统(我设计的)大约6个月。
我们用于计算机系统的唯一软件是MicrosoftStand-AloneDiskBASIC。
“Stand-Alone”意味着它可以在没有操作系统的情况下工作,直接使用自己的文件系统管理磁盘。
它对BASIC来说很快,但它不适合写一个文字处理器。
我们知道DigitalResearch正在开发一款16位操作系统CP/M-86。
有一次,我们期待它在1979年底可用。
如果它在DOS工作之前的任何时候首次亮相,DOS项目就会被取消。
SCP希望成为一家硬件公司,而不是一家软件公司。
我设想8086的强大功能使得拥有多用户操作系统变得切实可行,我为SCP董事会制定了一个计划,以开发一个单用户操作系统和一个多用户操作系统,共享相同的应用程序接口(API)。
这将是一项需要时间才能做到的大型设计工作-但我们已经在运送我们的计算机系统并且现在需要一个操作系统。
所以我提议从一个“快速而肮脏”的操作系统开始,最终会被丢弃。
基线经验
我不到两年前就读大学(计算机科学学士学位)。
我还在研究生院暂时度过了第二年,同时也在SCP工作。
所以我在计算机行业没有多少经验。
这并不是说我根本没有经验。
在大学里我有一个带有北极星软盘系统的IMSAI8080。
我为它制作了自己的外围设备,其中包括Qume菊花轮打印机和我自己设计和编程的基于Z80的控制器。
我还设计了自己的基于Z80的道路拉力计算机,该计算机使用安装在我车的手套箱中的9英寸CRT视频显示器。
我的学校工作包括为Z80微处理器编写多任务操作系统作为一个术语项目。
该项目的主旨是展示先发制人的多任务处理,并在任务之间实现同步。
对于SCP,我的工作表面上看起来是以硬件为导向的。
但8086CPU要求我开发软件工具,包括汇编程序(编程新处理器的最基本工具)和调试器。
这些工具随产品一起提供。
我对操作系统的实践经验仅限于我在微型计算机上使用过的经验。
我从来没有使用过“大电脑”操作系统。
高中和大学的所有编程项目都是用穿孔卡提交的。
在我自己的计算机上,我使用了NorthStarDOS,而在SCP,我们使用了CromemcoCDOS,这是一种类似CP/M的外观。
文件系统性能
操作系统的一个重要设计参数是性能,这促使我选择了文件系统。
我学会了一些文件管理技术,在做出选择之前,我花了一些时间分析我所知道的内容。
这些是候选人:
NorthStarDOS和UCSDp系统使用最简单的方法:
连续文件分配。
也就是说,每个文件占用磁盘上的连续扇区。
磁盘目录只需要跟踪第一个扇区和每个文件的长度-非常紧凑。
随机访问文件数据与顺序访问一样快,因为计算所需的扇区非常简单。
但最大的缺点是,一旦文件被磁盘上的其他文件装入,它就无法增长。
然后整个文件必须移动到具有更多连续可用空间的新位置,旧位置留下“洞”。
过了一会儿,剩下的就是洞。
然后你必须做一个耗时的“包”来将所有文件混合在一起并关闭这些洞。
我认为连续分配的缺点太严重了。
UNIX使用巧妙的多层方法。
对于小文件,文件的目录条目具有组成文件的扇区的短表。
这些扇区不必是连续的,因此扩展文件很容易。
如果文件太大而无法使列表适合表,则UNIX会添加一个层。
表中列出的扇区不再引用文件中的数据;相反,每个条目标识一个扇区,该扇区本身只包含文件数据扇区列表。
如果文件变得庞大,则添加另一层-每个表条目引用一个扇区,该条目的条目引用其条目标识文件数据的扇区。
对于小文件,随机访问文件数据非常快,但随着文件变大和层数增加,如果需要一两个额外的磁盘读取,只需找到您真正想要的数据的位置。
CP/M没有直接跟踪扇区的磁盘空间。
相反,它将扇区组合成一个“集群”或“分配单元”。
最初的CP/M是专门设计的8“磁盘,其中2002个扇区各128字节。
通过使每个簇8个扇区(1K),磁盘上少于256个簇。
因此,可以仅使用一个字节来识别簇。
CP/M的目录条目有一个包含16个文件簇条目的表,因此对于16K或更小的文件,随机和顺序访问都是快速有效的。
但是当文件超过16K时,它需要一个全新的目录条目来存储额外的16K簇号。
这些条目之间没有联系;它们只包含相同的名称和一个数字,用于标识它所代表的文件的哪个部分(“范围”)。
这导致潜在的性能噩梦,尤其是随机访问。
在范围之间切换时,系统必须对目录执行标准线性搜索,以获取正确名称和范围的文件。
在找到请求的数据之前,此搜索可能需要多次磁盘读取。
Microsoft独立磁盘BASIC使用文件分配表(FAT)。
与所有其他文件系统不同,FAT系统将目录条目(具有文件名,文件大小等)与数据存储方式(FAT)分开。
我不会详细解释这是如何工作的,因为系统已经有详细记录,例如我的1983年文章在MS-DOS上的内幕看/M一样,BASIC使用了1K集群,因此在当天的标准8“软盘上再次使用了不到256个集群。
FAT需要每个群集一个条目,而对于BASIC,条目只需要一个字节,因此FAT适合两个128字节扇区。
这种小尺寸也意味着即使在时间有限的情况下,也可以将整个FAT始终保存在内存中。
对我而言,FAT系统的最大吸引力在于,您永远不必只是为了找到您真正想要的数据的位置而读取磁盘。
FAT条目在链中-如果不访问其中的每个条目,就无法到达终点-因此操作系统可能必须通过许多条目来查找数据的位置。
但是FAT完全在内存中,通过长链仍然比从软盘读取的单个扇区快100倍。
我喜欢FAT的另一件事是它的空间效率。
没有可能半满的扇区或集群表,因为文件不够大而不需要它们。
FAT的大小由磁盘大小设置。
当我设计DOS时,我知道在单个字节中拟合簇号,将簇的数量限制为256,在磁盘变大时不会完成工作。
我将FAT条目增加到12位,允许超过4000个集群。
如果簇大小高达16K字节,则允许大小为64MB的磁盘。
您甚至可以将其推送到32K群集和128MB磁盘大小,尽管这个大型群集可能会浪费很多空间。
这些磁盘大小对我来说在1980年看起来很大。
直到最近我们才看到第一批10MB硬盘出现在微型计算机上,而这个大小看起来非常奢侈(而且价格昂贵)。
显然我不是有远见的。
磁盘大小增长速度超过任何其他计算机属性,增加了100,000倍。
(典型内存大小增加了30,000倍,而时钟速度仅增加了1000倍。
)Microsoft将FAT条目扩展为16位,然后扩展到32位以保持同步。
但这使得FAT变得如此之大,以至于它不再完全保留在内存中,从而剥夺了性能优势。
硬件性能
在我个人使用的少数计算机系统上,我经历了一系列磁盘系统性能。
北极星DOS加载的文件具有闪电般的速度,而CP/M外观相似的CromemcoCDOS需要更长的时间。
这不是文件系统问题-差异仍然存在于小于16K的文件(只有一个CP/M“范围”)并且是连续分配的。
北极星DOS的硬件做得最好。
每个轨道有10个扇区,每个扇区256个字节,它可以不间断地连续读入这10个扇区到存储器中。
要读入8KB的文件需要读取32个扇区;文件系统的性质确保它们是连续的,因此数据将在四个连续的轨道上找到。
当从一个轨道走到另一个轨道时,它将错过新轨道的开始并且不得不等待它再次旋转。
这意味着要读取8KB,总共需要6.2转(包括三次转动才能跟踪步进)。
5英寸磁盘以每秒5转的速度转动,因此总时间将小于1.3秒。
具有CP/M(CDOS)的标准磁盘具有26个扇区,每个扇区128字节。
CP/M无法连续读取这些部门。
它使用了6的交错因子,这意味着它将读取每第六个扇区。
读取之间的五个部门差距可能允许处理时间。
一个8KB的文件将占据大约2½个磁道,在每个磁道6转(由于交错),将需要大约17转的磁盘读取(包括两个转子丢失以跟踪步进)。
8英寸磁盘以每秒6转的速度转动,因此总时间将超过2.8秒。
这是使用从根本上较慢的硬件的北极星系统的两倍多。
至少部分原因是CP/M速度慢得多,因为它与低级“设备驱动”软件的接口很差。
CP/M将此称为BIOS(用于基本输入/输出系统)。
读取单个磁盘扇区需要五个单独的请求,并且一次只能请求一个扇区。
(五个请求是SelectDisk,SetTrack,SetSector,SetMemoryAddress,最后是ReadSector。
如果磁盘或内存地址相同,我不知道是否每个Read都需要这五个。
)
我把低级驱动程序软件称为I/O系统,我确定它的接口不会成为瓶颈。
读取磁盘数据只需要一个请求,该请求可以用于任意数量的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MSDOS 作者 讲述 历史