什么是操作系统

现代计算机系统由一个或多个处理器、主存、磁盘、打印机、键盘、鼠标、显示器、网络接口、以及各种其他输入/输出设备组成。一般而言,现代计算机系统是一个复杂的系统。如果每位应用程序员都不得不掌握系统的所有细节,那就不可能再编写代码了。而且,管理这些部件并加以优化使用,是一件挑战性极强的工作。所以,计算机安装了一层软件,称为操作系统,它的任务是为用户程序提供一个更好、更简单、更清晰的计算机模型,并管理刚才提交的所有设备。

 

计算机的两种运行模式:

1、内核态。

2、用户态。

软件中最基础的部分是操作系统,它运行在内核态(也称为管态、核心态)。在这个模式中,操作系统具有对所有硬件的完全访问权,可以执行机器能够运行的任何指令。软件的其余部分运行在用户态下。在用户态下,只使用了机器指令中的一个子集。特别地,那些会影响机器的控制或可进行I/O操作的指令,在用户态中的程序里是禁止的。

 

什么是操作系统

操作系统是一种运行在内核态的软件--尽管这个说法并不总是符合事实。部分原因是操作系统有两个基本上独立的任务,即为应用程序员提供一个资源集的清晰抽象,并管理这些硬件资源,而不仅仅是一堆硬件。

1、作为扩展机器的操作系统

  在机器语言一级上,多数计算机的体系结构(指令集、存储组织、I/O和总线结构)是很原始的,而且编程是很困难的,尤其是对于输入/输出操作而言。如对于硬盘的操作,我们现在对于硬盘的操作其实很简单,但是硬件层面的处理复杂度是非常大的。

  抽象是管理复杂性的一个关键。好的抽象可以把一个几乎不可能管理的任务划分成两个可管理的部分。其第一部分是有关抽象的定义和实现,第二部分是随时使用这些抽象解决问题。

  几乎每个计算机用户都理解的一个抽象是文件,文件在磁盘中的体现是一串二进制的片段,而我们把它抽象成一种我们可以接受、理解的东西:文件。

  操作系统的任务是创建好的抽象,并实现和管理它所创建的抽象。

     (对于这个观点,其实可以反观一下我们日常的开发工作中,web 开发框架中一般都有的一个抽象就是 Request 和 Response,我们想获取请求相关的信息就从 Request 对象中获取,我们想返回某些信息给客户端,就往 Response 里面放入我们需要返回的信息。)

2、作为资源管理者的操作系统

  把操作系统看做向应用程序提供基本抽象的概念,是一种自顶向下的观点。按照另一种自底向上的观点,操作系统则用来管理一个复杂系统的各个部分。现代计算机包含处理器、存储器、时钟、磁盘、网络接口、打印机以及许多其他设备。从这个角度看,操作系统的任务是在相互竞争的程序之间有序地控制对处理器、存储器以及其他I/O设备的分配。

  操作系统的资源管理包括用以下两种不同方式实现多路复用(共享)资源:在时间上复用和在空间上复用。当一种资源在时间上复用时,不同的程序或用户轮流使用它。另一类复用是空间复用,每个客户都获得资源的一部分,例如在若干运行程序之间分割内存,这样每一个运行程序都可同时入驻内存。

 

posted @ 2018-07-14 22:43  佚名000  阅读(828)  评论(0编辑  收藏  举报