操作系统(二) 操作系统结构

  操作系统可以从多个优势角度来研究。第一是通过检验其提供的服务,第二是通过考察为用户和程序员所提供的接口,第三是分解研究系统的各个组成部分及其相互连接。

  从用户角度、程序员角度、操作系统设计人员角度分别研究操作系统的的三个方面:操作系统提供什么服务?如何提供服务?设计这种操作系统的不同方法论。

一、系统组成

   1、进程管理

  一个程序的指令如果不被CPU执行,那么这个程序什么都不会做。

  进程完成其任务需要一定的资源,包括CPU时间、内存、文件和I/O设备等。除了在创建进程时得到的各种物理和逻辑资源外,也会接受传输过来的各种初始化数据(或输入)。

 

  一个程序本身并不是进程,它只是一个被动实体,如同存储在磁盘上的文件内容;

  一个进程是活动实体,它有一个程序计数器以指示下一个要执行的指令。一个进程的执行是有顺序的,CPU一个个执行其中的指令,直到进程终止。通常一个程序在运行时可以产生多个进程。

  进程是系统的工作单元。

 

  2、内存管理

  内存是现代操作系统的中心。

  CPU在获取指令周期内从内存中读取指令,而在获取数据周期内对内存中的数据进行读出或写入。通过DMA所实现的I/O操作也会对内存中数据进行独处和写入。

  如果一个程序要执行,那么它必须先映射成绝对地址并装入内存。随着程序的执行,进程可以通过产生绝对地址来访问内存中程序指令和数据。最后,程序终止,其内存空间得以释放,并且下一个程序可以被装入并执行。

  内存的管理方法有许多,不同的算法的效能与特定环境有关,需要特定的硬件支持。

 

  操作系统负责下列有关内存管理的活动:

  • 记录内存的哪部分正在被使用以及被谁使用;
  • 当内存空间可用时,决定哪些进程可以装入内存;
  • 根据需要分配和释放内存;

 

  3、文件管理

  

  4、I/O系统管理

  操作系统的目标之一是为用户隐藏特定硬件设备的特质。

  I/O子系统由如下部分组成:

  • 包括缓冲器、高速缓存和脱机打印的内存管理部分;
  • 一个通用设备驱动程序接口;
  • 用于特定硬件设备的驱动程序;

  

  5、二级存储管理    

  因为内存容量太小,且是易失性的,计算机系统必须提供二级存储器——硬盘。

  操作系统负责以下有关硬盘管理的活动:

  • 空闲空间管理;
  • 存储空间分配;
  • 硬盘调度

 

  6、联网

  分布式系统中的处理器通过通信网络连接。

 

  7、保护系统

  如果一个计算机系统有许多用户并且允许多个进程并发执行,那么各个进程应该得到保护。,以免受到其他进程的影响。

  保护是控制程序、进程或用户访问由计算机系统定义的资源的机制。

 

  8、命令解释系统

  OS中最重要的系统程序之一是命令解释程序,它是用户和操作系统之间的接口。

  许多命令通过控制语句交给操作系统,登录系统时,一个读入和解释控制语句的程序就会自动执行。该程序称为命令行解释程序,或shell(外壳)。其功能很简单,得到下一个命令语句并执行它。

 

二、操作系统服务

  操作系统提供一个环境以执行程序,它想程序和这些程序的用户提供一定的服务:

  • 程序执行;
  • I/O操作;
  • 文件系统操作;
  • 通信:进程间的通信。可以通过共享内存来实现,也可以通过消息交换技术来实现。
  • 错误检测;
  • 资源分配;
  • 统计;
  • 保护

 

三、系统调用

  系统调用(system call)提供了进程与操作系统的接口。

  系统调用通常以汇编语言指令的形式提供,有的系统允许系统调用直接为高级语言程序所用,这时系统调用通常类似预先定义的函数或子程序调用。

 

  向操作系统传递参数通常有三种方法。

  最简单的是通过寄存器来传递参数。不过,有时,参数数量比寄存器数量多。这时,这些参数存放在内存的块或者表中,并将块的地址作为参数传递给寄存器,Linux就是如此。

  参数也可以通过程序放在或压到堆栈中,并通过从左系统弹出堆栈。

  有的操作系统偏爱块或者堆栈方法,因为这些方法并不显示所传递参数的数量或者长度。

 

  系统调用可分为五大类:进程控制、文件管理、设备管理、信息维护、保护。  

  线程,默认就共享内存。而进程则需要相互同意。

  对于进程间的通信,消息传递在要交换的数据量很少时有用,因为不必避免冲突。共享内存允许通信的最大速度和方便性,因为它能在计算机内以内存的速度进行。不过,在保护和同步方面会有缺陷。

 

四、系统程序

  系统程序提供了一个方便的环境,以开发程序和执行程序。他们有的只是系统调用的简单用户接口;其他可能是相当复杂的。

  绝大多数操作系统都提供系统程序,以解决共同我问题或执行共同操作。操作系统最为重要的系统程序可能是命令解释程序,作用是得到并执行下一个用户执行的命令。

 

五、系统结构

  现代操作系统庞大而复杂,设计的通常方法是将这一任务分解成小模块而不只是一个单块系统。这些模块相互连接起来组成内核。

  实现系统模块化有很多方法,一种是分层法。将OS分层成若干等级,每一层建立在较低层之上。最底层是硬件,最高层是用户接口。

 

六、虚拟机

  运行在硬件的上一层的内核利用硬件指令来创建一组系统调用,供外层使用。内核之上的系统程序因此能使用系统调用或硬件指令。虽然两者的访问方式不同,但系统程序很多情况下不区分二者,将他们当作同一层对待。

  将这种策略进一步扩展,允许系统程序很容易地被应用程序调用,即应用程序将系统程序及其下层的当成硬件的一部分而看成一个层次整体。这样的分层方法延伸为虚拟机的概念。

  利用CPU调度和虚拟内存技术,OS可以使得进程以为自己有自己的处理器和自己的(虚拟)内存。虚拟机方法除了提供与基本硬件相同的接口外并不能提供任何额外功能,每个进程都有一个与基本计算机一样的虚拟拷贝。

 

  虚拟机的实现并不容易,提供与底层机器完全一样的拷贝需要大量的工作。底层机器有两种模式:用户模式和监控模式。

  使用虚拟机的两个主要优点:

  第一,通过完全保护系统资源,虚拟机提供了一个坚实的安全层;第二,虚拟机允许进行系统开发而不必中断正常的系统操作。

  每个虚拟机完全与其他虚拟机想隔离,由于各种系统资源完全被保护,就不存在安全问题。

 

  Java虚拟机

  Java程序由一个或多个类组成,每个Java类,Java编译器会生成与结构无关的字节码输出文件 (.class),它可以运行在任何JVM实现上。

  

  JVM是一个抽象的计算机规范。JVM由类加载器、类验证器和Java解释器组成,来执行与结构无关的字节码。

  类加载器装入Java程序和Java API的.class文件,以便为Java解释器所执行;

  装入类后,验证器会检查类文件是否为有效的Java字节码,且无堆栈的溢出和下溢。它也确保字节码不进行指针计算;

  如果类通过验证,那么可以被Java解释器所执行。

 

  Java解释程序可能是软件模块,一次只能解释一个字节代码,或者可能是一个JIT(just in time)编译器,将结构无关的字节码转换成主机的本地机器语言。

  绝大多数JVM的实现使用了JIT编译器,以增强性能。

  

 

 

原文地址:https://www.cnblogs.com/bigbigbigo/p/8630501.html