在操作系统之前,使用什么概念使它们工作?

Dha*_*rma 50 operating-systems

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

在引入操作系统之前,

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

在我们的计算机进化过程中,操作系统使用了哪个概念?

Red*_*ick 42

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

程序直接从(例如)带有打孔的纸带加载。

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

巨人:

图集:

曼彻斯特:


我使用“计算机”这个词来表示如今数十亿的设备。在数量众多的计算机中,除了微不足道的一小部分之外,几乎都是带有存储程序的数字电子可编程计算机。我确定最初的问题不是关于职位名称为“计算机”的人如何度过他们的工作日。在这两种类型的计算机之间,本答案中未涵盖一系列有趣的设备。


Dav*_*ill 13

资料来源:操作系统历史

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

1940 年代 - 第一代

最早的电子数字计算机没有操作系统。当时的机器非常原始,程序经常在机械开关(插板)排上一次输入一位。编程语言是未知的(甚至不是汇编语言)。操作系统是闻所未闻的。

1950 年代 - 第二代

到 1950 年代初,随着穿孔卡片的引入,这种惯例有所改善。在通用汽车研究实验室实现了第一个操作系统在1950年代初为自己的IBM 701。50 年代的系统通常一次只运行一项工作。这些被称为单流批处理系统,因为程序和数据是成组或成批提交的。

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

最早的计算机是没有任何形式的操作系统的大型机。

每个用户在预定的时间段内单独使用机器,并且会带着程序和数据到达计算机,通常是在穿孔纸卡和磁带或纸带上。程序将被加载到机器中,机器将被设置为工作直到程序完成或崩溃。

程序通常可以通过控制面板使用拨动开关和面板灯进行调试。据说阿兰图灵是早期曼彻斯特马克1机器上的大师,他已经从通用图灵机的原理中推导出了操作系统的原始概念。


Mat*_*ams 10

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

在此处输入图片说明

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

基本上这就是它的工作方式。

  • 所以这里的“操作系统”是……谁在为用户做调度? (4认同)
  • 我知道你想说什么,但我对这个描述不是很满意,因为我年龄足够大,可以在满足你上面对大型机的精确描述的大型机上工作,但它确实包含一个操作系统。您图片中的大型机可能是运行 OS/360 或 MVS 早期版本的 1970 年代 IBM 大型机(as/360 或 s/370?)。 (3认同)
  • 我的观点是,您的回答实际上并没有解释您所说的“严格来说,操作系统已经以一种或另一种形式存在了很长时间”。您提供了大型机的基本描述,但根本不清楚这些大型机是否具有与我们所谓的“操作系统”相似的任何东西。 (2认同)
  • 没有*“穿孔磁卡”*这样的东西。您的“大型机”照片符合好莱坞和外行人对计算机的看法:成排的磁带传输装置。 (2认同)

kro*_*owe 6

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

1950-1973 - 在系统内运行 这个时代见证了我们在谈论真正的操作系统时所想到的大多数功能的出现。调试、编程语言、多用户、多任务、终端、磁盘驱动器、网络、组件标准化等都是在这个时代引入的。这一次见证了其中大部分标准化的巨大飞跃,这意味着我们有更多的标准化设备,但每个操作系统仍然是为每台机器手工制作的,这意味着操作系统功能受到设计该特定系统的工程师决定他们需要的任何东西的严重限制. 在此期间,操作系统存在很大的灰色区域,因为不同的架构处理事情的方式大不相同,并且与包含处理相同工作的硬件的机器相比,更通用的机器需要更多的操作系统。事实是硬件总是比软件快,而且实际上在软件中完成的任何事情理论上都可以在硬件中完成(成本\灵活性\尺寸\时间\等限制了我们制作几乎纯硬件版本的一切)日)。操作系统是为特定的计算机或类型的计算机制作的;它不会在其他地方工作。每个新的计算机设计都需要从头开始重写所有低级操作系统软件,以便与特定的机器模型配合使用。临近结束时,出现了一种新的操作系统,它很快就会改变这种范式,即由 Ken Thompson 和 Dennis Ritchie 在贝尔实验室编写的 UNIX。

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

我想说,直到 Ken 和 Dennis 第一次使用 C 编译器编译 UNIX 内核,现代意义上的真正操作系统才诞生。在此之前,操作系统要么是一个物理对象,要么只是专门为特定机器设计的预初始化内存空间块。向系统添加新设备实际上需要重写“内核”代码。现在,他们为特定机器设计的 UNIX 操作系统可以重新编译并在其他机器上运行,而无需重写一切(只要该机器能够从引导环境编译 C 编译器,操作系统的其余部分就可以用比较高级的 C 代码)。