对操作系统的认识

计算机操作系统,简称Operating System(缩写OS),是电子计算机系统中负责支撑应用程序运行环境以及用户操作环境的系统软件,同时也是计算机系统的核心与基石。

操作系统是软件,而且是系统软件。它在计算机系统中的作用,大致可以从两方面体会:对内,操作系统管理计算机系统的各种资源,扩充硬件的功能;对外,操作系统提供良好的人机界面,方便用户使用计算机。它在整个计算机系统中具有承上启下的地位。

每当我们打开计算机,启动成功后,首先映入眼帘的就是操作系统的界面。我们所做的一切工作都是在操作系统之上来完成的。可你是否曾想过:为什么鼠标的拖拖拽拽就能完成对文件、磁盘、各种软硬件资源的管理,是否意识到这一切都是操作系统在支撑?正是因为有了操作系统我们才能那么方便地使用计算机。如果有一天离开了操作系统,我们的计算机也就成了一堆废铁,什么事也干不了。

  操作系统的目标是为用户提供一个良好的界面,方便用户使用计算机,同时对内部各种软硬件资源能够进行有效地管理和分配,使整个系统能高效率的运行。操作系统所做的这一切是为了谁?归根结底:为了用户。想想十几年前的操作系统,那时还是DOS的年代,没有GUI的概念,整个操作还是以命令方式进行,操作系统启动成功后,光标躺在屏幕的左上角,等待用户输入命令,所以要想学会使用计算机,必须要记住各种命令的名字、格式、参数,就如同现在服务器上用的Linux,操作效率可谓极其低下,但运行效率高,这也就是为什么服务器一般不安装GUI界面。现在操作系统进步了,身上穿着五颜六色的衣服,衣服上有各式各样的按钮和图标,用户只需点击和选择就可以完成对计算机的操作。操作系统的服务是越来越到位了。

 

操作系统的功能

操作系统主要有五大功能:处理机管理、存储器管理、设备管理、文件管理、用户接口。我们现在使用的大多是PC机,都是只有一块CPU,而有时却要在计算机上运行多个程序。每道程序在什么时候使用CPU,这需要合理的分配协调才行,操作系统关于处理机的分配有相应的调度算法,这些工作都有操作系统帮你代劳。
  内存储器是存放程序与数据的,如何存放才能井井有条,互不干扰,而且能充分合理的利用有限空间,这都需要操心,这一切也是操作系统的事

 当你要使用设备的时候,例如要使用打印机时,只要单击打印机按钮即可将内容传到打印机进行后台打印。都是因为有了操作系统,才可以这么轻松的调用外部设备,还不影响当前处理的工作,所以对设备的管理也是非常重要的。
  文件的操作对于每个用户来说是家常便饭,每次存取文件只需知道地点和文件名即可,你可曾想过你要存取的文件是放在哪个道哪个扇区上吗?有时你不想让自己的文件被外人看到,还可设置权限。这些幕后的工作都由操作系统完成,你只需要对文件进行操作就可以了。
  操作系统还为用户使用提供了两种方式的接口:命令接口和系统调用接口。命令接口可使用户交互的使用计算机,敲入一条命令,系统响应返回结果,用户根据结果再敲人下一条命令,如此反复。
  系统调用是为编程人员提供的,每个系统凋用都是一个能完成特定功能的子程序,这样编程人员就可站在操作系统的肩膀上编制程序,没必要所有的功能都从头编起,操作系统提供的功能只需申请调用即可,这就是拿来主义。看来操作系统要管的事很多,设计出一个优秀的操作系统还真不容易。

 

常见的操作系统及概述

目前市面上的操作系统主要分为两大类:类Unix操作系统和非Unix操作系统。

类Unix操作系统有:Linux、MacOS、android、ios。

非Unix操作系统:Windows、Symbian。

类Unix操作系统和非Unix操作系统是什么意思?类Unix操作系统是指和Unix操作系统有很深的渊源的操作系统,是Unix的某个分支、派生的操作。Linux、FreeBSD、NetBSD、MacOs、OpenBSD都是Unix的近亲,而android、ios和Unix是远亲,android和linux是近亲,ios和mac os是近亲。

非Unix操作系统,顾名思义就是和Unix操作系统没有一个点关系的其他计算机操作系统。

那说了这么多Unix操作系统究竟是何方神圣?Unix操作是最早的多用户、多任务操作系统,它诞生于20世纪70年代初,其大道至简的设计理念、一切皆文件的设计思想、提供机制而非策略的系统设计...对后来诸多个操作系统影响甚大,深入“骨髓”,以至于后来都有这么一句耳熟能详的话——万物基于UNIX,相信这句话你曾经一定在哪听说过,没听说过也没关系以后你一定会听说的,因为Linux的教徒无处不在,不是吗:)? 开个玩笑。

 

Unix相关:

 

下面是Unix的特点(30多年过去了,这些东西早已变成经典):

Everything (including hardware) is a file.
所有的事物(甚至硬件本身)都是一个的文件。

Configuration data stored in text.
以文本形式储存配置数据。

Small, single-purpose program.
程序尽量朝向小而单一的目标设计。

Avoid captive user interfaces.
避免过于复杂花哨的界面。

Ability to chain program together to perform complex tasks.
将几个程序连结起来,处理大而复杂的工作。

 

一个简单的Unix的族谱:

     |--AT&T (1969)-----/

     |                  |

     |              V6 (1976)

     |                  |

     |              V7 (1979)

     |                  |

     |   Novell owns AT&T's Unix (by 1994)

     |     _____________|____________________

     |     |       |      |        |         |

     |    AIX    IRIX    SCO   HP-UX   Solaris 2.X

     |   (IBM)   (SGI)          (HP)     (Sun)

     |

     |

     |--Berkley (1977)-----/

     |                     |

     |                  1BSD (1977)

UNIX-|                     |

     |                4.4BSD (1993)

     |                     |

     |                   Net/2

     |                     |

     |               4.4BSD-Lite (by 1995)

     |     ________________|____________________________________

     |     |       |          |         |          |            |

     |   SunOS   Ultrix   NetBSD    OSF/1   NeXTSTEP   Mac OS X

     |   (Sun)   (DEC)   (Various)  (DEC)    (NeXT)    (Apple)

     |                   (FreeBSD)

     |

     |

     |--Hybrids----/

                   |

                Linux (Various)

                   |

                   |____________________________________________

                   |    |      |          |              |      |

                   | RedHat  Debian  Mandrake   Slackware    S.u.S.E.

                   |                          (Walnut Creek)

                   |

                   |_____________________________________________

                       |        |           |          |        |

                    MkLinux  LinuxPPC  TurboLinux  OpenLinux  CorelLinux

                    (Apple)                        (Caldera)   (Corel)

 

Unix的影响和哲学

 

Unix是第三次工业革命中计算机软件领域最具代表性的产物。在这近40年中,由Unix造成的影响是最有深远意义的。就我看来,Unix为软件领域带来了至少以下有积极的东西,由这些东西所引发的直接或间接的事物更是举不胜数。
 

1)  软件开发的若干哲学和思想。

2)  全民参与推动软件,代码共享的模式。

3)  开启了黑客文化和开源项目。

4)  免费和商业的完美结合的Linux。

5)  C语言,而后发展的C++,Java等等类C的语言和脚本。

6)  TCP/IP,其的Socket编程已成为今天通用的网络编程主流。

 

说到Unix为我们所带来的软件开发的哲学,我必需要说一说。Unix遵循的原则是KISS(Keep it simple, stupid)。在http://en.wikipedia.org/wiki/Unix_philosophy 上有很多的基本上大同小异的Unix哲学,都是很经典的。
 

Doug McIlroy 是认为UNIX的哲学是这样的:三条哲学,简明扼要,就是这三条哲学贯穿着整个Unix世界。尤其是第一条“do one thing and do it well”真是相当精彩!

 

Doug McIlroy(UNIX 管道的发明人、UNIX 传统的奠基人之一) 认为 UNIX 的哲学是这样的:

Write programs that do one thing and do it well.

写一次只做一件事,并能把这件事做好的程序。

Write programs to work together.

写互相协作(调用)的程序。

Write programs to handle text streams, because that is a universal interface.

写处理文件流的程序。因为这(处理文件流)是一个通用接口。

 

只要是Unix的程序员,他们会比别的程序员在任何时候都会不停地强调着这三条哲学。

 

而《The Art of Unix Programming》总结了下面这些哲学,都是至理名言啊。

The Art of Unix Programming》 总结了下面这些哲学:

Rule of Modularity: Write simple parts connected by clean interfaces.

模块化原则:写简单的,能够用清晰的接口连接的代码。

Rule of Clarity: Clarity is better than cleverness.

清晰化原则:清晰的代码要好过“聪明”的代码。

Rule of Composition: Design programs to be connected to other programs.

组件化原则:设计可以互相关联(拆分)的程序。

Rule of Separation: Separate policy from mechanism; separate interfaces from engines.

隔离原则:策略和机制分离,接口和引擎分离。

Rule of Simplicity: Design for simplicity; add complexity only where you must.

简洁原则:设计力求简洁,直到无法更简洁。

Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.

小巧原则:不要写大的程序(模块、方法)。除非很明显的,没有别的办法可以完成。

Rule of Transparency: Design for visibility to make inspection and debugging easier.

透明原则:为可见性设计,使检查和调试更容易。

Rule of Robustness: Robustness is the child of transparency and simplicity.

健壮性原则:健壮性是透明和简单的孩子。

Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.

陈述性原则:将认知转化为数据。所以,程序的逻辑可以是愚蠢(简单易懂)的,健壮的。

Rule of Least Surprise: In interface design, always do the least surprising thing.

最少的惊讶原则:在界面设计中,少做令人惊讶的设计。(不要标新立异)

Rule of Silence: When a program has nothing surprising to say, it should say nothing.

沉默原则:如果一个程序没有什么特别的东西要说(输出),那就什么都别说。

Rule of Repair: When you must fail, fail noisily and as soon as possible.

修复原则:如果必须失败,那就尽早。

Rule of Economy: Programmer time is expensive; conserve it in preference to machine time.

节约原则:程序员的时间是非常宝贵的。程序员的时间(编程时间)优于机器时间。

Rule of Generation: Avoid hand-hacking; write programs to write programs when you can.

 生产原则:避免手工编程。如果可以的话,编写可以编写程序的代码。

Rule of Optimization: Prototype before polishing. Get it working before you optimize it.

优化原则:建立原型后再去修正。当它能正常工作后,再去优化它。

Rule of Diversity: Distrust all claims for “one true way”.

多样性原则:怀疑所有所谓的“不二法门”。

Rule of Extensibility: Design for the future, because it will be here sooner than you think.

扩展原则:为未来设计,因为未来来的比你想象的要早。


Mike Gancarz (X Windows 的设计者)给出了下面九条哲学思想:

Small is beautiful.

小即是美。

Make each program do one thing well.

让每个程序(方法)只做一件事情,并把它做好。

Build a prototype as soon as possible.

尽早建立原型。

Choose portability over efficiency.

注重可移植性,而非效率。

Store data in flat text files.

将数据存储在存文本文件中。

Use software leverage to your advantage.

利用软件来发挥你的优势。

Use shell scripts to increase leverage and portability.

使用Shell脚本提高编程的手段和程序的可移植性。

Avoid captive user interfaces.

避免过于复杂花哨的界面。

Make every program a filter.

使每个程序(方法)称为一个过滤器(筛选器)


在今天,这种思想依然被传承着,在影响着世界上各个角落的每一个程序员。

 

Unix痛恨者手册

这里还需要值得一提的是一本叫《The Unix-Haters Handbook》,中文译做《Unix痛恨者手册》。可以在这里下载:http://research.microsoft.com/~daniel/uhh-download.html。其中以调侃的语气声讨了Unix的种种不是。虽然这是十年前的一本书了,但还是值得一读。这本书指出了许多Unix的设计错误,指出了种种看起来很合理的设计走向了荒谬,还这样调侃了C语言——“如果说C语言给足了让你上吊的绳子,那么,C++在给了你足够的绳子把你的邻居全部捆起来之后,还给了你足够的绳子让你为一艘小帆船装上帆,最后你还有足够的绳子把自己吊死在帆船的桅杆上”。呵呵,相当的尖酸刻薄吧。里面有一句对操作系统的评价是这样的:“The fundamental difference between Unix and the Macintosh operating system is that Unix was designed to please programmers, whereas the Mac was designed to please users. (Windows, on the other hand, was designed to please accountants.”(Windows设计给会计人员?!连计算机用户都不是了,呵呵)

 

不过,我可以感觉得到这本书的作者在书中对Unix的感情是比较复杂的,爱恨交加,在书的最后有这样一句话“would anyone have spent this much time and effort writing about how much they hated Unix if they didn't secretly love it? I'll leave that to the readers to judge, but in the end, it really doesn't matter: If this book doesn't kill Unix, nothing will”。是的,如果Unix能够存活这么长的时间,那么,不会有什么东西可以把他消灭了。

 

从《Unix痛恨者手册》这本书,再加上Unix的历史,我们可以感到Unix的经历的风风雨雨,在Unix上面出现有种种教训,近40年的历程,Unix历经磨难,几近夭折,一路走来的确很不容易,让人由衷感叹。今天的Unix,今天的软件工业和以前相比已是不可同日而语。很大程度上,这些都要归功于这个充满苍桑的Unix。
 

总结:

了解过去,我们才能知其然,更知所以然。总结过去,我们才会知道我们明天该如何去规划,该如何去走。在时间的滚轮中,许许多的东西就像流星一样一闪而逝,而有些东西却能经受着时间的考验散发着经久的魅力,让人津津乐道,流传至今。要知道明天怎么去选择,怎么去做,不是盲目地跟从今天各种各样琳琅满目前沿技术,而应该是去 —— 认认真真地了解和回顾历史。

Unix是目前还在存活的操作系统的元老了,走过了近乎40年的历程。在技术更新如此迅速的计算机世界的今天,Unix始终保持它那神圣的光环,它那曲折和令人叹息的历史,以及由它引发的思想变革,对当今计算机文化造成的深远影响,近40年所产生的人和事,让它成为了一个传奇,不能不让人为之惊叹。

这是一段所有从事计算机行业人员尤其是软件开发人员都需要了解的历史。Unix的传奇历史是整个计算机世界文化最具代表性的,它对整个计算机世界文化的影响也是最巨大,最深远的。他给人带来的不单单的对过去的回味,更为我们带来了计算机世界的新思潮。

了解这段的历史的人,才能体会计算机世界变迁过程中的是是非非,才能了解计算机世界中的文化,从而才能参与到整个计算机革命的大潮中。那段历史能让你感受到计算机世界那强力的脉搏,从而让你踏上这条令人充满激情的道路。

如果你对unix发展史感兴趣,想知道更多有关Unix的内容请参阅unix的维基百科。
 

 

版权申明:本站文章均来自网络,如有侵权,请联系01056159998 邮箱:itboby@foxmail.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

猜你还会喜欢下面的内容

    无相关信息

中国领先的互联网域名及云服务提供商

为您提供域名,比特币,P2P,大数据,云计算,虚拟主机,域名交易最新资讯报道

域名注册云服务器