嵌入式实时操作系统μC/OS原理与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 操作系统概述

本节的内容是关于操作系统的一些最基本的概念。

1.1.1 什么是操作系统

操作系统OS(Operating System)是裸机上的第一层软件。操作系统是计算机系统中最重要的系统软件,是硬件的第一层封装与抽象,在计算机系统中占据着重要的地位,所有其他的系统软件与应用软件都依赖于操作系统的支持与服务。除提供编程接口外,操作系统还承担着任务管理、事件管理和消息通信、CPU管理、内存管理、I/O管理等核心功能。

如图1.1所示,在有操作系统的系统中,应用程序(Application)并不直接和硬件打交道,而是通过操作系统来和硬件打交道。操作系统直接运行在硬件平台之上,是裸机上的第一层软件,提供给用户编程接口。应用程序编程接口(API)可以解释为是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件的以访问一组例程的能力,而又无须访问源码或理解内部工作机制的细节。

图1.1 操作系统的位置

因此,从开发人员的角度讲,它提供了应用程序的接口API,我们通过调用该API来管理任务,进行消息通信及访问硬件,如打印机、显示器、硬盘等。访问硬件不仅包括写操作,即给硬件发送指令、发送数据等,也包含读操作,例如,读取打印机是否空闲,如空闲才能发送进一步的指令等。

如程序1.1所示为最简单的C语言代码通过操作系统访问硬件。

程序1.1 屏幕输出Hello World!的C语言程序

        int main(int argc, char* argv[])
        {
            printf("Hello World!\n");                                 (1)
            return 0;
        }

代码中(1)调用printf实现屏幕打印,不需要关心打印的细节。但是如果离开了操作系统,完成屏幕打印是比较困难和复杂的事情,首先要掌握硬件,然后编写底层程序驱动硬件。所以,本例说明操作系统提供了应用程序的接口,有了操作系统,就不用为这些底层的编程烦恼了。

换一个角度,从系统的使用人员,即最终用户的角度来看,操作系统是一台虚拟机器,在其上运行和操作用户软件。例如,一个财务人员做 Excel 财务报表,就是在一台虚拟机器上运行Excel软件。财务人员专注的目标是Excel中的报表,其他的底层细节与他完全无关。

1.1.2 操作系统基本功能

操作系统包含如图1.2所示的基本功能,分为5个主要组成部分。

图1.2 操作系统的功能组成

1.任务管理

任务是程序的一次执行。任务可以分为系统任务和用户任务。系统任务是操作系统本身的任务,如操作系统的主程序、时钟中断服务程序、后面要讲到的空闲任务和统计任务等。用户任务是用户应用程序的运行,如用户设计的计算器软件的一次执行或Word软件的运行、本书中给出的一些用户任务。这些任务都需要任务管理部分来管理。

2.CPU管理

CPU管理的含义在于多任务OS对CPU的分配,也就是分配对CPU的所有权,即哪个软件正在运行,占有CPU。可以把它归入任务管理。

3.内存管理

内存是任务的生存空间。内存管理用于给任务分配内存空间,相应的,在任务结束后释放内存空间。

4.文件管理

文件管理是实现对文件的统一管理,是对文件存储器的存储空间进行组织、分配和回收,负责文件的存储、检索、共享和保护。从用户角度来看,文件管理主要是实现“按名取存”,文件系统的用户只要知道所需文件的文件名,就可存取文件中的信息,而无须知道这些文件究竟存放在什么地方。

5.I/O设备管理

I/O设备即管理系统中的各种硬件设备,如打印机、显示器、硬盘等。很明显,用户应用程序应该调用I/O设备管理模块提供的API来对设备进行操作,而不是直接读/写硬件。