第二节 操作系统的体系结构

目前流行的操作系统有Windows操作系统、UNIX操作系统、Linux操作系统和Android操作系统等。

一、Windows操作系统的体系结构

Windows体系结构是分层的模块系统,主要层次有硬件抽象层HAL、内核、执行体和大量的子系统集合

子系统又分为环境子系统和保护子系统,其中环境子系统仿真不同的操作系统,保护子系统提供安全功能。

1、内核

内核执行Windows操作系统中最基本的操作,主要提供线程调度、陷入处理和异常调度、中断处理和调度、多处理器同步、供执行体使用的基本内核对象。

Windows操作系统的内核始终运行在核心态,代码短小紧凑,可移植性也好。通常,除了中断程序例程,正在运行的线程是不能抢先内核的。

2、硬件抽象层

Windows操作系统设计的一个至关重要的方面就是在多种硬件平台上的可移植性。HAL就是使这种可移植性成为可能的关键部分。HAL是一个可加载的核心态模块HAL.dll,它为运行在Windows操作系统上的硬件平台提供低级接口。

HAL隐藏各种与硬件有关的细节

3、执行体

Windows的执行体是 NTOSKRNL.EXE 的上层(内核在其下层)。执行体是从用户态导出并且可以调用函数,这些函数的接口在 NTDLL.DLL 中,通过Win32API可以对它们进行访问。

4、系统进程和系统线程

系统进程是一种特殊类型的、只运行在核心态的“系统线程”的宿主。系统线程具有一般用户态线程的所有属性和描述表。不同点在于它们仅运行在内核态,执行加载于系统空间。

系统线程没有用户进程地址空间,因此必须从系统内存堆中动态存储区。

系统进程只能从内核态中调出

二、UNIX 操作系统的体系结构

其最里层是硬件,作为整个系统的基础。紧邻最里层的是操作系统的内核,它包括进程管理、存储器管理、设备管理、和文件管理四个资源管理功能,往外一层是系统调用接口,即操作系统与用户的接口Shell以及编译程序等;最外层是应用程序。

1、内核层

内核层是操作系统管理和控制中心,常驻内存。其包括两个方面的接口,一方面是内核与硬件的接口,它通常是由一组驱动程序和一些基本的例程组成;另一方面是内核和Shell接口,它由两组系统调用及命令解释程序组成。

内核本身又可以分出两个部分,一部分是进程控制子系统,另一部分是文件子系统。

(1)进程控制子系统,负责对四个资源中的两个资源-处理器和存储器进行管理。其功能可分为进程控制、进程通信、存储器管理和进程调度

(2)文件子系统,负责有效管理系统中所有的设备和文件。其功能包括 文件管理、高速缓存机制、设备驱动程序

2、系统调用层

系统调用层介于内核层和应用层之间,是供程序员设计、应用程序开发时调用。

UNIX系统调用包括进程管理、文件管理、终端状态等。

3、应用层

应用层包括各种开发工具,高级语言编译器,网络通讯处理程序等。

所有的应用层程序都是在Shell层(命令语言解释程序)的管理和控制下为用户服务的,是面向用户的操作界面。

三、Linux 操作系统的体系结构

Linux系统有四个主要部分,即内核、Shell、文件系统和用户应用程序。内核、Shell和文件系统形成了基本的操作系统结构。

1、Linux内核

内核是操作系统的核心,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,它决定了系统的性能和稳定性。

Linux 内核的组成: 系统调用、内存管理、进程管理、设备驱动程序、文件系统和网络管理

2、Linux Shell

Shell 是系统的用户界面,提供了用户和内核进行交互操作的一种接口。它接受用户输入的命令并将它送入内核去执行,是一种命令解释器。

3、Linux 文件系统

文件系统是文件存储在磁盘等设备上的组织方法。Linux系统能支持多种目前流行的文件系统,比如:EXT2、EXT3、FAT、FAT32、VFAT和ISO9660。

4、Linux 应用程序

标准的Linux系统一般都有一套称之为应用程序的程序集,包括文本编辑器、编程语言、XWindow、办公套件、Internet工具和数据库等。

四、Android 操作系统的体系结构

Android操作系统分为四层,从高层到底层分别是应用程序、应用架构层、系统运行层和Linux内核层。

1、Android应用程序

Android会同一系列核心应用程序一起发布,该应用程序包括客户端、SMS短消息程序、日历、地图、浏览器等。

2、Android应用框架

应用架构层为应用开发者提供了用于访问核心功能的API框架。

应用架构层提供了各种服务和管理工具,包括应用开发所需的界面管理、数据访问、应用层的消息传递、应用包的管理、电话管理、位置管理等功能。

3、C、C++本地库和Android运行时环境

Android包括一些C/C++库,这些库能被Android系统中不同的组件使用。它通过Android应用程序框架为开发者提供服务,如系统C库、媒体库和SQLite库等

Android 运行时环境(Android Runtime)提供了核心链接库(Core Libraries)和Dalvik VM虚拟系统(Dalvik Virtual Machine)。

4、Linux 内核

Android是基于不同版本的Linux内核开发出来的,Linux内核层包括系统层安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块,位于硬件与其他软件层之间,提供与硬件的交互