操作系统历史

操作系统的历史在某种意义上来说也是计算机的历史。操作系统提供对硬件控制的调用和应用程序所必需的功能。

電腦作業系統提供應用程式必須與最常使用的整套功能，還有控制與同步電腦硬體連結，在第一代電腦裡，是沒有作業系統的，當時的每一個程式都需要編寫完整的硬體驅動，還有他自己對印表機和打孔卡等外部裝置的驅動程式，來正確運作與執行指定任務，最終硬體與應用程式複雜性的成長無可避免的創造了作業系統迫切的需求。

背景

早期的计算机没有操作系统。只有单独的机器，操作者会带着记录有程序和数据的卡片（punch card）或較後期的打孔纸带去操作机器。程序读入机器后，机器就开始工作直到程序停止。由于程序难免有误，所以机器通常都会中途崩溃。程序一般通过控制板的开关和状态灯来调试。据说图灵能非常熟练地用这种方法操作曼切斯特1型机器。

后来，机器引入帮助程序输入输出等工作的代码库。这是现代操作系统的起源。然而，机器每次只能执行一件任务。在英国剑桥大学，这些任务的磁带从前是排成一排挂在衣钩上的，衣钩的颜色代表任务的优先级。

概念意义上的操作系统和通俗意义上的操作系统差距越来越大。通俗意义上的操作系统为了方便而把最普通的包和应用程序的集合包括在操作系统内。随着操作系统的发展，一些功能更强的“第二类”操作系统软件也被包括进去。在今天，没有图形界面和各种文件浏览器已经不能称为一个真正的通俗意义上的操作系统了，但事实上，运行在数据中心和服务器等领域的操作系统往往是没有图形界面的。

大型机时代

早期的操作系统非常多样化，生产商生产出针对各自硬件的系统。每一个操作系统都有很不同的命令模式、操作过程和调试工具，即使它们来自同一个生产商。最能反映这一状况的是，厂家每生产一台新的机器都会配备一套新的操作系统。这种情况一直持续到二十世纪六十年代IBM公司开发了System/360系列机器。尽管这些机器在性能上有明显的差异，但是他们有统一的操作系统——OS/360（在开发OS/360过程中遇到的问题在Fred Brooks写的软件工程经典之作《人月神话》中详细地叙述了）

OS/360的成功陆续地催化出MFT、MVT、SVS、MVS、MVS/XA、MVS/ESA、OS/390和z/OS。

迷你電腦 

UNIX操作系统是在 1960 年由AT&T公司的貝爾實驗室开发出来的，原本是要用於 PDP-7 ，後來用於 PDP-11。 因為它的早期版本是完全免费的，可以轻易取得并容易修改，所以它得到了广泛的接受。他也成了貝爾實作業系統公司的系統基礎，由於他是以 C语言 撰寫，當這種語言撰寫的程式被移植到另一個架構時，unix 也能移植過去。 這種方便移植的特性，讓它成为發展第二代迷你電腦和第一代工作站作業系统的其中一種選項。

由于早期的广泛应用，UNIX 已经成为的操作系统的典范。不过，它始终属于AT&T公司，只有那些能负担的起许可费的企业才用得起，这限制了它的应用范围。早期的操作系统是可以被用户软件所利用的功能的集合。一些有能力的公司发展更好的系统，但他们不支持其他公司硬件的特性。

60年代末70年代初，几种硬件支持相似的或提供端口的软件可在多种系统上运行。早期的系统已经利用微程序来在他们的系统上实现功能。事实上，除了360/165和360/168外，360/40之后的大部分360系列的机器都实行微程序设计。

藉由廣泛的被大量採用，UNIX 展示了在不同硬體架構上作業系統可以是一致的概念。後來還成 自由軟體 與 開源軟體 包含 GNU, Linux, BSD 的發展根基。

个人计算机时代：Apple, DOS 和以后

微型处理器的发展使计算机的应用普及至中小企業及个人爱好者。而计算机的普及又推动了硬件组件公共接口的发展（如S-100,SS-50,Apple II,ISA和PCI总线），并逐渐地要求有一种“标准”的操作系统去控制它们。在这些早期的计算机中，主要的操作系统是8080/8085/Z-80 CPU用的CP/M-80，它建立在数位研究公司(Digital Research)先前几个针对PDP-11架构的操作系统的基础上。在此基础上又产生了MS-DOS（或IBM公司的PC-DOS）。这些计算机在ROM（只读存储器）都有一个小小的启动程序，可以把操作系统从磁盘装载到内存。IBM-PC系列的BIOS是这一思想的延伸。自1981年第一台IBM-PC诞生以来，BIOS的功能得到不断地增强。

随着显示设备和处理器成本的降低，很多操作系统都开始提供图形用户界面。如：许多UNIX提供的X Window一类的系统、微软的Windows系统、苹果公司的Mac OS和IBM公司的OS/2等。最初的图形用户界面是由Xerox Palo Alto研究中心70年代初期研发出来的，之后被许多公司模仿，继承发展。

参看
操作系统列表

计算机历史