1.2操作系统做了什么?或者操作系统应该做什么?
回答这个问题,我们需要看看程序运行本身需要做什么。上节我们讨论过程序运行就是取指执行-取指执行。。。的过程。
现在我们把情况简单化,假设一个计算机从开始运行到关机,就只有一个固定大小的程序运行,那么,这个计算机的程序运行不需要什么帮助,因为所有的硬件资源都是这个程序独占的。
我们看看这个程序的运行过程,这个程序独占外存,整个外存只有这个程序存在,固定地址固定大小。计算机开机后直接从固定外存位置把固定大小的程序读入内存的固定位置,把cpu运行指针指向这个程序的开始位置,开启运行,中间没有任何干扰,因为只有这一个程序在运行嘛,所以程序会独占计算机所有资源,程序运行结束后,工作完成。
这种简化的情况可以存在于某种特殊场合的情况,比如某个工厂生产的过程控制或某好事者做到专门完成某任务的计算机。
我们日常使用的手机或者pc机都不是这种情况,我们的pc一般不会只开一个程序,有的同学可以同时用计算机写作业(wps文档)、打游戏(麻将扑克)、听音乐(某音乐程序)、聊天(QQ)。。。。
这个过程中,这么多的程序同时运行,情况立刻变得无比复杂,如果没有一套使用计算机的规则,那么这些程序不可能正常运行下去,比如我们国家有十几亿人口,如果没有一整套大家都遵守的运行规则,随便搞,那就是不可想象的混乱。
那么在多个程序运行的情况中,需要什么规则才能让多个程序都能很好的运作不混乱呢?说到底就是一句话:有序使用资源。
比如,两个程序争抢cpu的时候,应该遵循某种使用秩序,使得两个程序都能正常运行。我们的生活中很多这样的例子,比如排队买票,就是多人使用一个窗口的例子,我们处理的很好。再比如,多个程序共同使用内存,这个规则对我们人类来说,更熟悉,分割地盘就好了。
也就是说,如果多个程序共同遵守一套使用计算机的规则,则多个程序就可以有序的正确的运行下去,维护这个规则的程序就是操作系统。
所以操作系统制定一套规则,所有的程序运行都遵守这个规则,这就是操作系统提供给应用程序的帮助,有人会说,那不是控制或者管理吗?是的,帮助过多了就变成控制或者管理了(现在独生子女可以流点泪了)。
操作系统提供的帮助就是也应该是:让程序排队使用cpu,排队使用内存,排队使用外设。。。。排队使用一切计算机的资源。这里说的排队,不一定是我们日常生活中的那种先到先得的排队,那只是排队的一种。好的排队,除了可以让多个程序正确运行外,还可以让计算机的利用有效率,还可以让多个程序协作。。。
可以这样说,整个操作系统就是一个排队软件。整个操作系统充斥着各种排队的思想和行为。这就是操作系统提供给应用程序的帮助。