---- 从用户角度看,操作系统所体现的是它提供的各种各样的服务;
---- 从程序员角度看,操作系统体现的是提供给用户的界面和接口;
---- 从设计人员的角度看,操作系统是一大堆模块和它们之间的相互联系。
这便是操作系统的体系结构。
---- 通常把组成操作系统的基本单位称为构件,基本的操作系统构件有内核、进程、线程和管程等。
---- 内核是作为可信软件来提供支持进程并发执行的基本功能和基本操作的一组程序模块,内核通常驻留在内核空间,运行于内核态。
---- 内核具有访问硬件设备和所有主存空间的权限,是仅有的能执行特权指令的那部分程序。
========================================================================
操作系统内核的功能:资源抽象,资源分配,资源共享
---- 资源抽象:用软件抽象硬件资源,简化对其所执行的操作,屏蔽低层的物理细节。
---- 资源分配:把所抽象的各种资源分配给多个应用程序使用,并负责回收资源。
---- 资源共享:根据资源的类型和特性,提供不同的机制以确保进程获得所需资源,允许进程共享资源并提供共享的同步和互斥机制。
=========================================================================
操作系统内核的基本属性有:
---- 内核是由中断驱动的。
只有在发生中断或异常事件时,才由硬件交换PSW引出操作系统内核工作,且在CPU完成中断或异常事件之后,内核自行退出。
---- 内核是不可抢占的。(传统操作系统)
意味着在内核中运行的进程即便其时间片已经用完,也不能被其他进程抢占,除非它自愿放弃CPU。
---- 内核部分程序在屏蔽中断状态下执行。
虽然内核是不可抢占的,但是可以被中断。所以在处理某个中断时,为了避免中断嵌套可能引起错误,必须屏蔽这一级中断,甚至暂时
屏蔽其他一些中断。
---- 内核可以使用特权指令。
操作系统规定特权指令只在内核态下由内核使用,以防系统出现混乱,加强系统的安全性。
---- 单一内核结构
也称为模块化结构,主要通过一种称之为系统调用的API机制对外层的用户程序提供服务。整个内核采用模块化设计。
模块之间借助于接口进行通信。
优点:结构简单、性能较高、由于大部分模块均在内核中,所以安全性较高。
缺点:核心组件没有保护,核心模块间关系复杂,可扩展性差。
---- 层次结构
内核系统由若干个层次构成,最底层是硬件裸机,最高层是应用服务。
层与层之间的调用关系严格遵守调用规则,每一层只能访问位于其下层所提供的服务,利用它的下层提供的服务来实现本层功能并为其上层
提供服务,每一层不能访问位于其上层所提供的服务。
优点:便于系统调用和验证,把整体问题局部化(最大优点)
缺点:模块之间必须建立通信机制,系统花费在通信上的开销较大,系统效率会降低。
---- 微内核结构
又称为客户机/服务器结构。它尽可能多的从操作系统内核中去掉东西,只留下一个很小的内核,由用户进程实现大多数操作系统的功能。
为了得到某项服务,比如读一文件块,用户进程(即客户机进程)把请求发给服务器进程,随后服务器进程完成这个操作并返回信息。
这类操作系统内核的全部工作是处理客户机与服务器之间的通信。
操作系统被分为多个部分,每个部分仅处理一个方面的功能,如文件服务、进程服务或存储器服务等,每个部分小,易于管理。
所有的服务都以用户进程的形式运行,不在内核态下运行,所以不直接访问硬件。
优点:较高的灵活性和可扩展性,适合分布式系统。
缺点:每次应用程序对服务器的调用都要经过两次内核态和用户态的切换,效率较低。