操作系统是什么?

操作系统是一个较复杂的系统软件,没有一个完整、精确、公认的定义

但是我们可以从它的功能特点来介绍

功能:功能可以分为对上和对下两个层面来理解

对上: 即是对我们用户、对我们应用程序提供服务 。
所以从用户角度上,操作系统是一个控制软件,它可以来控制我们计算机系统上的
的软件以及这些上面的应用程序怎么来运行,这是一个控制角度来考虑,同时来限制
那些不同的应用程序来占用不同的资源
另外操作系统还会给我们提供各种各样的服务,比如I/O服务,声音、声卡,网卡的访问
等等,使得咋们的计算机更方便的使用。因为要是给一个只是没有安装操作系统的机器的话,
就会很难让我们的应用程序和让我们的用户来使用好计算机,有了操作系统的帮助后呢,我们就
可以提供各种各样丰富的服务以及相应的限制使得大家包括不同的用户、不同的应用程序能够在
一个计算机的环境中能够很好的去执行完成各自的一些工作。

对下:即对它内部管理的东西来说呢,它是一个资源分配的分配器
比如在我们计算机里有很多资源,如CPU资源,内存等等,那要如果把这些
资源协调好,因为我们知道在一个计算机上面可以跑多个不同的程序,那么这样
大家可能都会去抢占这些资源,所以就需要我们的操作系统把他们协调好,使得不同的
时刻有不同的程序能够访问不同的资源,从而使得大家能公平的共享整个计算机
系统的不同类型的资源,同时可以使计算系统的的效率以及资源的利用率得到一个很
大的保障

从对上对下这里可以看出来操作系统其实是站在一个管理者的角度来给我们的应用程序
给我们的底层硬件提供相应的一种管理、控制、服务的功能。

在操作系统外部,即用户视角,操作系统提供相应的,很方便的图形界面来方便程序展现给
大家完成相应的功能。在计算机内部呢,操作系统把CPU、磁盘、内存三部分物理资源抽样成进程、文件、地址空间来给我们的应用程序来使用,这也是一种从资源管理角度来考虑的,另外操作系统也起到承上启下的作用,它其实是一种特殊的系统软件,它是直接面向我们的硬件,但它和我们的一般应用程序不一样,应用程序访问的资源其实是操作系统提供的,应用程序并不能直接得去访问那些物理资源。简单的说,操作系统就是在硬件之上应用程序之下

我们知道软件又分为办公软件和系统软件,应用软件:办公软件、视频播放软件。因为操作系统是面向整个系统提供服务的,所以它是个系统软件。操作系统位于应用软件之下,为应用软件提供服务支撑。系统软件又分为功能软件和操作系统层面软件,而操作系统就是系统层面软件,操作系统层面软件又分为对外的接口,一个是面向我们的应用程序,我们称为Shell(外壳),比如Linux、Windows、Android的界面就是属于外壳。一个是面向计算机内部,需要要把整个计算机的资源给管理起来,我们称为Kernel(内核)。Kernel是我们的研究重点,在Shell之下。

CPU的管理: Kernel进一步细化,操作系统是管理硬件资源的,CPU、内存、网卡、显卡。CPU的管理就涉及到CPU的调度也是操作系统很重要的一块内容,以及我们的进程、线程管理,这些都是跟CPU相关的资源管理,也是我们要重点去分析的子系统。

物理内存的管理:另一块是内存,内存涉及到的第一是物理内存的管理,怎么样有效的去把这个物理内存管理好,另一方面我们称呼为虚拟内存的管理虚拟内存的管理主要是给我们的上层的应用提供相对独立、一个尽可能大的一块内存空间给它们使用,它需要通过一系列的技术手段在有限的物理内存的基础之上来虚拟出一个更大、更方便、更安全的一个虚拟的环境,这就是一个虚拟内存管理。

文件系统管理: 文件系统以文件的形式给我们的应用程序提供一个存储和访问、永久保存数据这么一个环境,这就是所谓的文件系统管理。这也是我们操作系统最主要的三块,关于CPU的管理、关于内存的管理、关于文件的管理。

中断处理和I/O设备驱动: 还有一个是跟底层相关,就是中断处理和I/O设备驱动,这一块是和我们硬件底层直接打交道的,表面上看,它和我们的应用层隔得比较远,但是他是操作系统里的一个很重要的功能单元。它和我们硬件相关。

操作系统 Kernel的特征:
(一)并发:因为我们可以在我们的计算机系统里同时放多个可以跑的程序,然后让我们的操作系统来调度、选择哪个程序占用CPU继续运行。这里面,我们需要注意两个术语的区别,并发和并行。并发指的是在一段时间内有多个程序可以运行,注意是一段时间,这段时间可长可短。而并行是指在一个时间点上有多个程序可以同时执行,所以一个是一段时间,一个是一个时间点,这有很大的区别。更多来说,能够并行执行的程序它一般要求我们的计算机系统里面有存在多个CPU,这有才能使得我们操作系统可以在多个程序上同时执行多个不同的程序。但是呢如果你的计算机只有一个CPU的话,那它是无法完成并行这个工作的,也就是说它不能让同时让两个程序在一个时刻都在跑,都在占用CPU。这是不太现实的,这是并发和并行的一个区别。

(二)共享:前面提到操作系统是一个资源管理器,它就存在怎么有效让这些资源共享给我们不同的需要资源的一些应用程序,那么表面上看呢我们可以做同时访问这个资源,比如同时访问内存,同时访问I/O,但其实在操作系统内部它的同时就变成互斥共享访问或者分时访问,就是在一个时刻一个时间点上,应该来说,只有一个程序可以访问一个资源,但这跟这个资源的力度相关,比如说我们一块内存在一个时间点上对于某一个内存单元,你只能有一个程序来访问,但是如果在一块内存里我分为两半,A块和B块是相互隔离的,那么我们就可以同时得让两个程序同时访问这个不同的内存单元,那这样就有一个共享,怎么共享的问题,是互斥共享还是同时去共享,这个要根据我们这个资源的特征来区分,那总的特点有一个是不变的,共享这个属性是不变的,所以操作系统会带来共享的管理特征,使得我们应用程序可以很好地去访问更难的资源。

(三)虚拟:操作系统直接面对的是硬件,它把硬件虚拟化了,啥是虚拟化呢,比如把CPU虚拟化成进程,把磁盘虚拟化成文件,把内存虚拟化成地址空间,那么虚拟化之后呢,还带来个好处就是说使得我们每一个应用程序或者每一个用户感觉自己在独自拥有一台计算机,给大家提供那么一种服务,这种服务就通过操作系统虚拟功能来完成的,这个呢,是我们说多道程序设计里面最常见的一种方式,就是把一台物理机器虚拟成多台机器,这样操作系统执施下就可以完成相应的功能了。
(四)异步:在计算机系统里面管理和调度可以跑多个程序,但是你只有一个CPU的情况下,可能在任何一个时刻,你只能有一个程序在跑,那使得下一个程序什么时候跑那就取决于操作系统的调度,所以说下一个程序什么时候运行、什么时候停下来、什么时候继续运行,那取决于我们这个操作系统整个的一个管理,所以我们看到的一个现象是什么呢,是说我们这个程序走一段停一段、走一段停一段,而且这个走走停停时间也不确定,所以说是一种不可预知的异步的执行过程,但是另一方面也要注意,虽然那个执行的步骤感觉走走停停,什么时候结束好像不太可预知,但是我们说如果说这个程序运行前的环境是相同的话,那么最后他的输出,他的结果应该也是相同的,这是要保证的。如果说你这个结果都不一致了,每次跑一次程序得到的结果都不一样,是在相同的输入的情况下,那就意味着这个计算机完成的这个操作系统管理功能就失败了,比如我们希望算的一个加法一定是1+1一定等于2的,不会算出1+1等于3.这实际上就是说即使是异步也要保证结果是正确的,如果结果不正确,就说明程序设计或者操作系统是有一定错误的,我们需要去修正它,这些就是异步的一个特征。

猜你喜欢

转载自blog.csdn.net/w15977858408/article/details/89341854