嵌入式操作系统(Linux篇)(微课版)
上QQ阅读APP看书,第一时间看更新

1.1 操作系统

1.1.1 操作系统的基本概念

操作系统(Operating System, OS)是管理和控制计算机硬件与软件资源的计算机程序,它是直接运行在“裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。换句话说,操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口。操作系统的功能包括管理计算机系统的硬件、软件及数据资源,控制程序运行,改善人机界面,为其他应用软件提供支持等,以使计算机系统所有资源最大限度地发挥作用。现代操作系统提供了各种形式的用户界面,使得用户可以拥有一个好的工作环境,并且为其他软件的开发提供必要的服务和相应的接口,其关系说明如图1-1所示。

图1-1 嵌入式操作系统组成

操作系统根据用户界面的使用环境和功能特征的不同,一般可分为3种基本类型,即批处理操作系统、分时操作系统和实时操作系统。随着计算机体系结构的发展,又出现了许多种操作系统,它们是嵌入式操作系统、个人操作系统、网络操作系统和分布式操作系统。目前流行的操作系统主要有Android、BSD、iOS、Linux、Mac OS X、Windows、Windows Phone和z/OS等,除了Windows和z/OS等少数操作系统,大部分操作系统都为类UNIX操作系统。

1.批处理操作系统

批处理(Batch Processing)操作系统的工作方式是用户将作业交给系统操作员,系统操作员将许多用户的作业组成一批作业,之后输入到计算机中,在系统中形成一个自动转接的连续的作业流,然后启动操作系统,系统自动、依次执行每个作业。最后由操作员将作业结果交给用户。批处理操作系统的特点是多通道和成批处理。

2.分时操作系统

分时(Time Sharing)操作系统的工作方式是一台主机连接了若干个终端,每个终端有一个用户在使用。用户交互式地向系统提出命令请求,系统接收每个用户的命令,采用时间片轮转方式处理服务请求,并通过交互方式在终端上向用户显示结果。用户根据上步结果发出下道命令。分时操作系统将CPU的时间划分成若干个片段,称为时间片。操作系统以时间片为单位,轮流为每个终端用户服务。每个用户轮流使用一个时间片而并不感到有别的用户存在。分时系统具有多路性、交互性、独占性和及时性的特征。多路性是指同时有多个用户使用一台计算机,宏观上看是多个人同时使用一个CPU,但微观上是多个人在不同时刻轮流使用CPU。交互性是指用户可根据系统响应结果进一步提出新请求(用户直接干预每一步)。独占性是指用户感觉不到计算机为其他人服务,就像整个系统为他所独占。及时性是指系统对用户提出的请求及时响应。

常见的通用操作系统是分时系统与批处理系统的结合。其原则是分时优先,批处理在后。前台响应需频繁交互的作业,如终端的要求;后台处理时间性要求不强的作业。

3.实时操作系统

实时操作系统(Real Time Operating System, RTOS)是指使计算机能及时响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时设备和实时任务协调一致地工作的操作系统。实时操作系统追求的目标是对外部请求在严格时间范围内做出反应,具有高可靠性和完整性。

4.嵌入式操作系统

嵌入式操作系统(Embedded Operating System, EOS)是运行在嵌入式系统环境中,对整个嵌入式系统以及它所操作、控制的各种部件装置等资源进行统一协调、调度、指挥和控制的系统软件。

5.个人计算机操作系统

个人计算机操作系统是一种单用户多任务的操作系统。它主要供个人使用,功能强,价格便宜,几乎可以在任何地方安装使用,能满足一般操作、学习、游戏等方面的需求。个人计算机操作系统的主要特点是计算机在某一时间内为单个用户服务;采用图形界面人机交互的工作方式,界面友好;使用方便,用户无需专门学习,也能熟练操作。

6.网络操作系统

网络操作系统基于计算机网络,是在各种计算机操作系统上按网络体系结构协议标准开发的软件套件,包括网络管理、通信、安全、资源共享和各种网络应用。其目标是相互通信及资源共享。

7.分布式操作系统

大量的计算机通过网络被连接在一起,可以获得极高的运算能力及广泛的数据共享。这种系统被称为分布式系统(Distributed System)。

总之,操作系统位于底层硬件与用户之间,是两者沟通的桥梁。用户可以通过操作系统的用户界面输入命令;操作系统则对命令进行解释,驱动硬件设备,实现用户要求。

1.1.2 操作系统的主要组成

对一个操作系统我们可以大致把它分为4部分:驱动程序、内核、接口库、外围,如图1-2所示。

图1-2 嵌入式系统组成图

1.驱动程序

驱动程序是操作系统最底层的、直接控制和监视各类硬件的部分,它们的职责是隐藏硬件的具体细节,并向其他部分提供一个抽象的、通用的接口。

2.内核

内核为操作系统之最核心部分,包括进程管理、内存管理、文件系统管理、设备管理等核心单元。其中,内存管理和进程管理可以用来作为衡量一个操作系统的标准。

3.接口库

接口库是一系列特殊的程序库,它们的职责在于把系统所提供的基本服务包装成应用程序所能够使用的编程接口(API),因而是最靠近应用程序的部分。例如,GNU C运行库就属于此类,它把各种操作系统的内部编程接口包装成ANSIC和POSIX编程接口的形式。

4.外围

所谓外围,是指操作系统中除上述3部分以外的所有其他部分,通常是用于提供特定高级服务的部件。例如,在微内核结构中的大部分系统服务,以及UNIX/Linux中各种守护进程都通常被划归此列。

当然,这里所介绍的4部分不能说所有的操作系统都这样划分。例如,在早期的微软视窗操作系统中,各部分耦合程度很深,难以区分彼此。而在使用外核结构的操作系统中,则根本没有驱动程序的概念。因而,本节的讨论只适用于一般情况,具体特例需具体分析。