操作系统介于硬件和应用程序之间的一层软件结构,为程序的开发屏蔽了硬件细节,并提供一些列方便的接口。
操作系统主要提供以下几个方面的服务:
程序开发:操作系统提供程序开发的工具,如果编辑器,调试器,编译器等,帮助程序员开发程序。严格来说,这些工具不属于操作系统的核心;
程序运行:把指令和数据载入主存储器;初始化I/O设备;准备运行程序需要的资源;所有这些步骤都由操作系统进行处理;
I/O设备访问:每个I/O设备的操作都有自己的指令集或控制信号,操作系统隐蔽了这些细节,并提供统一的接口。程序员直接调用接口操作I/O设备;
文件访问控制:使用操作系统,就不用了解I/0设备(磁盘驱动器)的特性和存储介质中文件数据的结构。同时,操作系统还可以提供对文件访问控制的保护机制;
系统访问:操作系统提供对公共资源和数据的访问控制,提供保护机制以及解决资源使用中的竞争问题;
错误检测和响应:计算机系统在运行过程中可能出现各种错误。包括硬件错误,如存储器错误,设备故障等。以及各种软件错误,如算术溢出,视图访问禁止的存储器单 元,操作系统无法确认应用程序的请求等。对于每种错误,操作系统都必须提供响应,减小对正在运行的其他程序的影响。响应的方式可以是:终止引起错误的程序,重试操 作或报告错误等;
现代操作系统
微内核(microkernel):在微内核出现之前,大多数操作系统是单体内核,即操作系统提供的所有功能,包括调度,文件系统,网络,设备驱动程序,存储管理等,都由这个大内核运行一个进程来提供,所有元素共享相同的地址空间。微内核体系结构只给内核分配一些最基本的功能,包括地址空间,进程间通信和基本调度。而其他操作系统的服务都是由运行在用户模式下的进程提供。这些进程和应用程序进程类似,可以为特定的应用或者环境要求进行定制,这些进程也称为服务器。将内核和服务程序分离,使系统结构的设计更加简单,灵活,很适合分布式环境。实质上,微内核可以以相同的方式与本地或者远程的服务进程进行交互,使分布式系统的构造更加简便。
多线程:一个应用程序的执行被划分为可以同时运行的多个线程。
线程和进程的区别:
线程:可分配的工作单元。它包括处理上下文(包含程序计数器和栈指针)和栈中属于线程的数据区域。线程顺序执行,并且可以中断,这样处理器就可以转到另一个线 程;
进程:包括一个或多个线程,以及相关系统资源(包括数据和代码的存储器空间,打开的文件和设备)的集合。通过把一个应用程序分解成多个线程,程序员可以很大程 度上控制应用程序的模块性和应用程序相关事件的事件安排;
在同一个进程中运行多个线程,在线程间来回切换所涉及的处理器开销比不同进程间的切换的开销要少。而且多线程适合处理不需要串行处理的任务,如监听客户的请求。
对称多处理技术:
具备多处理器技术的计算机系统特征:
1. 有多个处理器;
2. 这些处理器共享同一个主存储器和I/0设备;
3. 所有处理器都执行相同功能,因此又称为对称多处理技术;
对称多处理操作系统可以调度进程和线程到所有的处理器运行。对称多处理器结构比单处理器结构具备更多优势:
性能:同一个工作可以让多个处理器并行处理,各自完成该工作中的不同部分;多个进程可以在不同的处理器上同时运行,而在单处理器结构中,在执行一个进程的 时候,其他进程都需要等待;
可用性:当某个处理器运行失败,并不会停止计算机,因为其他处理器可以继续工作;
分布式操作系统:操作系统负责在多个处理器中调度进程或线程,并且负责处理器间的同步。分布式操作系统负责管理一群实体计算机,使多机系统像是具有一个单一的主存,辅存和其他I/O模块。
面向对象设计:用于给小内核增加模块化的扩展。