在使用操作系统之前,使用什么概念使它们正常工作?[关闭]


50

操作系统与计算机体系结构紧密相关。操作系统负责计算机系统中的所有输入和输出。它管理用户,进程,内存管理,打印,电信,网络等,并将数据发送到磁盘,打印机,屏幕和其他与计算机连接的外围设备。

在引入操作系统之前,

计算机系统中使用了什么使它们工作?

在我们的计算机发展过程中,操作系统使用了哪种概念?


5
“在此之前,计算机系统中使用的是...” -就像您今天没有运行OS一样。通过将整个计算机系统一次交给一个用户来运行批处理作业。
锯末2014年


4
想想在微控制器上运行的代码。它不是在操作系统中运行,而是将C代码编译为机器代码,并在真实的物理设备上运行(此机器代码“刷新”到固件后)。操作系统只是利用资源共享进程调度的概念,促进多个程序同时与计算机的所有部分进行交互。同样,如果需要,您也可以在该微控制器上使用操作系统
突破

很多答案都集中在I / O,如何加载程序以及外围设备上。但这只是模糊了操作系统的目的:资源管理和共享,以及可能的多用户功能。如果从线路板,打孔的磁带或鼓中加载代码或使用现代的SD卡,则操作系统的用途不会改变。
锯末2014年

卡座。穿孔纸胶带。操作员通过计算机喂食。
Daniel R Hicks 2014年

Answers:


42

早期的计算机†一次运行一个程序。

程序是直接从(例如)纸带上打孔的纸带装入的。

您可以通过设置大量的开关来对最早的计算机进行编程。

巨人:

地图集:

曼彻斯特:


我使用“计算机”一词来表示当今存在的数十亿种设备。在如此众多的计算机中,只有极少数是具有存储程序的数字电子可编程计算机。我敢肯定,最初的问题不是关于职位为“计算机”的人们如何度过他们的工作日。在这两种类型的计算机之间,有一些有趣的设备未包含在此答案中。


1
我有使用的硬件,在第二张图片中使用了那些开关。它还以完全相同的方式运行程序。支持使用如此出色的图片
Ramhound

ENIAC说最早的公司不会硬接线吗?没有切换也没有存储程序?还是因为它而不再是计算机...好奇
Rich Homolka 2014年

1
@RichHomolka:正如您所暗示的,这实际上取决于您对计算机的看法。如今,大多数人可能会使用数字电子可编程计算机。当然,例如,有机械模拟计算机,最早的计算机是人(这是工作名称)。如果我有时间,我可以扩大答案以解决这个问题。我相信ENIAC是通过操纵开关和电缆进行编程的。
RedGrittyBrick 2014年

操作系统的出现相当早(1956年-参见en.wikipedia.org/wiki/GM-NAA_I/O)。第一台量产的计算机大约是1954年
布鲁斯·马丁

“我确定最初的问题不是关于工作职位为“计算机”的人们如何度过的工作时间” –我的祖母是一台计算机。
Paul D. Waite 2014年

13

资料来源:操作系统历史

操作系统经历了许多不同的阶段或演变,大致对应于几十年。

1940年代-第一代

最早的电子数字计算机没有操作系统。当时的机器是如此原始,以至于程序通常一次只能在机械开关(插板)的行上一次输入一点。编程语言是未知的(甚至都不是汇编语言)。操作系统是闻所未闻的。

1950年代-第二代

到1950年代初,打孔卡的引入已使惯例有所改善。在通用汽车研究实验室实施了1950年代初第一个操作系统的IBM 701。50年代的系统通常一次执行一项工作。之所以称为单流批处理系统,是因为程序和数据是按组或批提交的。

资料来源:http : //en.wikipedia.org/wiki/History_of_operating_systems

最早的计算机是大型机,缺少任何形式的操作系统。

每个用户在预定的时间里都只能使用机器,并且通常会在打孔的纸卡,磁带或纸带上带着程序和数据到达计算机。程序将被加载到计算机中,并且计算机将被设置为可以运行,直到程序完成或崩溃。

通常,可以使用拨动开关和面板灯通过控制面板调试程序。据说,艾伦·图灵(Alan Turing)在早期的曼彻斯特马克1(Manchester Mark 1)机器上是一位大师,他已经从通用图灵(Universal Turing)机器的原理中衍生出了操作系统的原始概念。


10

回到计算机系统的开始,您没有单个计算机系统,而是拥有大型机。

在此处输入图片说明

这些大型机将在打孔卡上运行,其中将包含您的程序(通常是您的数据)。人们将在这些系统上获得分配的时间,将他们的卡拿来并将它们插入机器中以进行处理。机器将运行该程序直到完成,然后下一个用户将带着他们的磁带和卡。

基本上就是这样。


4
所以这里的“操作系统”是……谁在为用户安排时间?
Kyle Strand 2014年

2
我的观点是,您的回答实际上并不能解释“严格意义上讲操作系统以一种或另一种形式存在已经很长时间了”的含义。您提供了大型机的基本描述,但是完全不清楚这些大型机具有与我们所谓的“操作系统”非常相似的功能。
凯尔·斯特兰德

3
我知道您要说的是什么,但是我对这个描述并不满意,因为它足够老,可以在满足您对上面的大型机的精确描述的大型机上工作,但是确实包含一个操作系统。您图中的大型机可能是运行OS / 360或早期版本的MVS的1970年代IBM大型机(as / 360或s / 370?)。
罗伯·摩尔

2
没有“打孔磁卡”之类的东西。您的“大型机”照片与好莱坞和非专业人士的计算机视觉保持一致:成排的磁带传输器。
锯末2014年

1
这里有很多错误的陈述。正如@sawdust所说,打孔卡没有磁性。另外,打孔卡经常包含您的程序数据;否则您的程序可能在纸带(打孔)上。磁带线轴要晚得多。在此之前,程序是通过面板开关加载的,如RedGrittyBrick的答案所示,或者通过插板重新连接计算机。我发现父亲,儿子和儿子公司的历史有趣而内容丰富。
Stephen P

6

1890-1950-系统固有的操作 最早的计算机具有与现在内置的操作系统相同的功能。您(操作员)也属于操作系统的一部分。您翻转了寄存器开关(或使用了打孔卡),并物理交换了总线电线(如老式电话接线员的想法),并且内存(通过物理电线)直接与灯泡(当前的显示器)和打印机(长期存储),以使程序输出将亮起并直接打印到设备中(将其放置在输出存储缓冲区中)。这些事情并不需要驱动程序,因为(由于这些物理线路的运行方式)它们“工作正常”(如今也没有监视器之类的东西)。实际上,距发明数字数字显示器还需要几十年的时间,这样您才可以实际看到已经输入到寄存器中的数字和输出为十进制数字。打印机统治了整个时代,直到显示器出现。它们的接线完全符合正常工作所需。从机械(1890年代)到电气模拟(1910年代)到数字(1930年代)的转变,这部分内容并没有真正改变。在这段时间里,这种“即插即用”的体系结构被中断系统所取代,直到90年代后期才再次出现。当然,届时堵塞将大大减少。通过中断,设备被允许占用CPU时间,从而导致架构无法 它与硬件直接相关,但是花了几代人的时间才真正成为我们在x86 arch(及更高版本)中看到的简化流程;早期系统经常遇到可怕的竞争状况,硬件兼容性\延迟问题以及其他与中断有关的奇怪行为。因为在此期间,每台机器都使用了截然不同的(实验性)架构;几乎所有设备都是为其工作的机器定制的。

1950-1973-系统内的操作 这个时代见证了我们谈论真正的操作系统时想到的大多数功能的问世。在这个时代引入了调试,编程语言,多用户,多任务,终端,磁盘类型驱动器,网络,组件标准化等。这次,我们看到了朝着大部分标准化迈进的巨大飞跃,这意味着我们拥有更多的标准化设备,但是每个OS都是为每台机器手工制作的,这意味着,设计特定系统的工程师决定他们需要的OS功能都受到严重限制。 。在这段时间内,操作系统是一个很大的灰色区域,因为不同的体系结构处理事物的方式大不相同,而且与包含硬件来处理相同任务的计算机相比,更通用的计算机将需要更多的OS。事实是,硬件总是会比软件快,并且实际上用软件完成的任何事情理论上都可以在硬件中完成(这是成本\灵活性\大小\时间\等,这限制了我们只能将几乎所有版本的硬件都制成这种形式。天)。为特定计算机或特定类型的计算机创建了操作系统;它不会在其他地方工作。每个新的计算机设计都需要从头开始重写所有低级OS软件,以与特定的机器模型一起使用。在这个时间快要结束时,出现了一个新的操作系统,该操作系统很快就会改变这种模式,这是由Ken Thompson和Dennis Ritchie在Bell Labs编写的UNIX。

1973年-系统之间的运作 单个程序改变了所有这些,但不是UNIX。它是C编译器(在贝尔实验室削减后,它由Ken Thompson和Dennis Ritchie著名地在车库中制作)。在此之前,无论何时您编写代码,它要么是机器代码(机器直接理解但不能移植的代码),要么是使用将您的代码编译为字节代码的语言编写的(该代码由另一个程序解释)运行)。C带来的OS的巨大差异在于它能够执行称为交叉编译为机器代码的功能。这意味着只要为该机器编写了编译器,就可以编写一次代码并进行编译以使其在本机上可以在许多不同的机器类型上运行。操作系统必须用机器代码编写,因为机器代码实际上是机器知道的唯一代码。

我要说的是,直到Ken和Dennis首次使用C编译器编译UNIX内核时,才诞生了真正意义上的现代OS。在此之前,OS要么是物理对象,要么就是专门为特定机器设计的预先初始化的内存空间块。从字面上添加新设备到系统实际上需要重写“内核”代码。现在,可以为他们为特定计算机设计的UNIX OS重新编译并在其他计算机上运行,​​而无需重写所有内容(只要该计算机能够从引导环境中编译C编译器,则可以将其他OS编写为较高级别的C代码)。


1
有人提到OS \ 360早于UNIX。这也是事实,但与当天的所有其他操作系统一样,它是针对运行的每个单独的机器模型进行手工编码的。
krowe 2014年

1
有人提到FORTRAN也可以交叉编译。的确如此,ALGOL(C的前身)也是如此,但是C是第一个被引导以构建独立于机器的OS的C。
krowe 2014年

1
直到Ken和Dennis首次编译UNIX内核为止……现代意义上的真正OS诞生了 ..” OMG。不太真实的词很少在此站点上写。毫无疑问,这种说法是不正确的。
RBarryYoung 2014年

1
也忽略了MULTICS(和BCPL)
Francis Davey 2014年

上面列出的关于UNIX和C优先级的大多数东西都是错误的,尤其是为什么 UNIX和C在OS的历史上如此重要。这几乎完全归功于1974年针对AT&T的同意令,这意味着它(以及许多其他AT&T技术)是免费的包括源代码。因此,作为第一个免费的,功能齐全的现代OS和低级编译器(包括所有源代码),它才是真正的“第一” 。在竞争者诚实承认其优势之前,它将占据10-20年的唯一地位。
RBarryYoung 2014年

3

最初,程序是硬连线到计算机中的,计算机将在启动时从特定位置立即开始运行程序。

然后发明了各种形式的离线存储:打孔卡,磁带,鼓,甚至磁盘。更加灵活。但不能直接从CPU访问。该程序需要先加载到内存中,然后才能运行。因此,您编写了一个程序来加载程序。这就是所谓的loaderbootstrap(从表达“用靴带拉起自己”中来)。

随着系统变得越来越复杂,您可能需要一个简单的加载程序来加载一个更复杂的加载程序。这始于微型计算机:普通的磁带加载器运行缓慢,因此请加载解压缩器并快速加载其余的磁带。或磁盘速度加载器,通过对磁盘执行非标准操作,可以将其用作复制保护系统。

或UEFI之前的PC引导过程:处理器开始在BIOS中执行。这会将第一个扇区从磁盘加载并跳转到磁盘。这将查找活动分区并从那里加载引导加载程序,从而加载操作系统。最初是MSDOS的COMMAND.COM。现在通常是Windows NTLDR.EXE。


3

应当指出,在早期硬件(1960年前)中,I / O更为简单。您可以读取卡,在打印机上打卡或在打印机上打印一行,每条指令只有一条指令:缓冲区大小是固定的,缓冲区地址通常也是固定的。

即使在60年代初期,使用更先进的处理器(例如7090),您仍然可以使用很小的例程(大约20条指令)读取或打卡,这些例程很容易复制到每个程序中。

由于计算机完全专注于一项工作,因此,处理器在等待读卡器准备好读取下一张卡,还是行打印机馈入下一行时是否处于空闲状态都没关系。

好吧,这确实很重要,因为计算时间实际上很昂贵。这就是人们发明多处理,分时,添加异步I / O以及中断,设备驱动程序和操作系统的原因。对于程序员来说,硬件设备接口变得更加复杂,从而可以访问较低级别的I / O寄存器,而这需要设备驱动程序提高复杂性。使用操作系统同时“复用”的设备,通过多个程序分摊了这种复杂性成本(内存,编程时间)。

到了80年代,我仍在使用基于微处理器的计算机,模拟那些较旧的系统之一。机器指令的格式统一于80位(10个八位字节),读取第一块硬盘的第一个扇区并将其存储到地址0的内存中的指令非常方便:0000000000。因此,引导过程包括每天早晨在终端上键入此指令,该指令将其存储在地址0并执行,然后加载引导扇区并在下一条指令(地址10)处继续执行。该文件系统包含一个静态表映射文件“名称”,该文件映射到手动分配的扇区范围!I / O是通过直接读取或写入扇区在汇编器中完成的,这些偏移量由文件在硬盘上的位置抵消,该位置由“


2

专为更广泛的个人用途而设计的第一代计算机在ROM(只读存储器)中具有所谓的“显示器”。

引导后,监视器立即提供了非常有限的命令行界面,主要用于从数据存储设备(如磁带录音机)中加载程序并开始执行(一些其他命令可用于手动输入代码,而很少需要)。一次只能运行一个程序。

与操作系统不同,Monitor没有任何文件系统支持。操作员负责找到正确的磁带,将其放在刻录机上,然后将其定位在要加载的所需程序的开头。

监视BIOS和操作系统的组合功能,并且显然已经是一种软件。

接通后,短暂的“复位”信号只是将程序计数器与其他任何计数器都清零,同时切换存储器映射器(如果存在)以将地址0000映射到Monitor ROM。通常有一些硬件电路用于稍后将Monitor重新映射到高地址空间。除了代码启动之外,还使用“复位”按钮来终止正在运行的程序,以便可以加载另一个程序。

即使在这些日子里,在某些台式机上仍可以找到最基本的“重置”按钮。


第一代(或第二代)家用“个人计算机”就是如此。在它们存在之前,中学的学生可以远程访问分时工作的计算机,这些计算机的工作原理不同,但仍然可以“设计用于更广泛的用途”。我不确定第一代家用计算机Altairs和Heathkits是否都具有命令行监视器。
RedGrittyBrick 2014年

0

操作系统最直接的前身是用于与设备接口的标准库和用于将程序带入内存并开始运行的引导加载程序系统的组合。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.