第一章:操作系统基础

1:嵌入式操作系统的概念

嵌入式操作系统:
        以应用为中心,以计算机技术为基础,软硬件可以裁剪,适合应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机。
       嵌入式系统是与操作系统紧密结合的,具有极强的专业性,必须结合实际需求进行合理的裁剪利用。
       嵌入式系统能够支持多任务,使程序开发变得简单,便于维护,同时提高系统的稳定性和可靠性。

2:操作系统的结构

操作系统的设计思想有:
(1)单体系统
       单核系统是以过程集合的方式实现,通过编译生成一个大小可以执行的二进制程序,完全运行在内核态中,系统中的每个过程都可以调用其他过程。
       其特点是每个过程,都有一个通过参数和返回结果的良好接口,必要时,每个过程可以自由调用其他过程。
       单体结构是将OS中全部的功能在内核中实现,包括调度、文件系统、网络、设备驱动器、存储管理。单体内核常常具有一大块代码中包含了所有的操作系统资源,并作为一个单一的进程运行,唯一的地址空间。
       大部分的UNIX(包括LINUX)都采用单体内核。FreeRTOS 本质上属于微内核,在单体内核上有一点的裁剪。
(2)分层系统
       分层系统由多层做成,上一层是在下一层的基础上构建的。例如THE操作系统。
(3)虚拟机
       虚拟机是软件模拟的具有完整软件功能的、运行在完全隔离系统中的完整的计算机系统。
(4)外核
       目前的操作系统(微内核操作系统、分层操作系统、整体操作系统),硬件资源基本上由内核直接管理和保护,在执行效率、维护、以及应用扩展上都存在着一些不足。
       外核操作系统减少传统概念,即操作系统必须提供构建应用程序的抽象内容。该方法实现了应用级资源管理,即由应用程序而不是操作系统管理硬件资源。这时,进程间通信、虚拟内存管理等抽象概念都是单个应用实现的。因此,可以将这些应用作为库操作系统(LibOS)使用。被称为外核的最小核心安全可靠的为多个LibOS提供了有用的硬件资源。
       因此,外核将资源保护及其管理分割开来。由于外核只提供有限的原语,所以外核操作系统效率很高。由于进程间通信、虚拟内存管理等传统概念都是在应用层实现的,所以可以很容易对他们进行扩展、专业化和替换。
(5)客户机-服务器模型
      在这个应用模式中,用户只关心完整地解决自己的应用问题,而不关心这些应用问题由系统中哪台或哪几台计算机来完成。在C/S系统中,能为应用提供服务(如文件服务,打印服务,拷贝服务,图象服务,通信管理服务等)的计算机或处理器,当其被请求服务时就成为服务器。一台计算机可能提供多种服务,一个服务也可能要由多台计算机组合完成。与服务器相对,提出服务请求的计算机或处理器在当时就是客户机。从客户应用角度看,这个应用的一部分工作在客户机上完成,其他部分的工作则在(一个或多个)服务器上完成。

3:操作系统的主要职能

  • 进程的调度
    进程是一个程序在其自身的虚拟地址的一次执行。创建多进程则可以实现多任务的并发执行,实现资源的利用率和吞吐率的提高。
  • 进程间通讯
    进程通讯是在不同进程之间进行传播和交换信息。包括数据的传输、数据的共享、通知事件、资源贡献、进程控制。一般来说进程的用户空间是相互独立的,资源的访问时互斥的。唯一例外的是共享内存区。
  • 储存的管理
    存储器的管理是操作系统中重要的一环,包括记录存储器的使用情况,包括空闲部分和使用部分。内存空间的分配。 后面会介绍FreeRTOS内存管理的策略。

4:实时操作系统与非实时操作系统

嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(RTOS)可以更合理、更有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时性和可靠性。由于RTOS需占用一定的系统资源(尤其是RAM资源),只有μC/OS-II、embOS、salvo、FreeRTOS等少数实时操作系统能在小RAM单片机上运行。相对于C/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到各种单片机上运行。

实时操作系统与非实时操作系统的区别
       在下面的图中右边的任务优先级高于左边的任务,先看实时操作系统的,当优先级更高的任务2就绪的时候,即便任务1正在运行中,也必须立刻交出CPU的使用权,就跟中断一样,先执行任务2,等任务2执行完或者主动挂起(sleep)让出CPU的时候,任务1才能接着运行。

在这里插入图片描述
在这里插入图片描述
其中uCOS和FreeRTOS就是这样的实时操作系统,它是可抢占性的内核。我曾跟很多同事争辩过uCOS高优先级任务就绪而低优先级任务正在执行没有sleep的时候,高优先级任务能否打断低优先级任务而立即得到执行,遗憾的是很多人仍然坚持必须要sleep才能切换任务,每次我都只能无奈的用实验来证明这个本来不应该争辩的东西。

再看看我们的Linux/Windows/OSX这些基于时间片轮转的操作系统遇到这种问题的时候会怎么样呢,毫无疑问它们都是非实时的操作系统,CPU是不可抢占的,从上图可以看到,即便高优先级的任务就绪了,也不能马上中断低优先级任务而得到执行,必须要等到低优先级任务主动挂起(sleep)或者时间片结束才能得到执行。所以我们在使用PC的时候经常会遇到应用程序无响应的问题。即硬件资源被其他任务占用,本任务得不到立即执行。

我们平常娱乐办公用的都是非实时的操作系统,那么什么时候该使用实时操作系统呢?试想一下,一个射出的导弹如果要执行一个调整姿态的任务,这个时候刚好有其他无关紧要的任务在执行,如果是非实时操作系统,那么可能会等一会儿然后弹个窗告诉你应用程序无响应(如果它有窗可弹的话),那完了等弹窗出来导弹都射到外太空去了!毫无疑问这种高优先级任务片刻都不能等的设备就必须上实时操作系统,如果你不想你的导弹射到外太空去的话。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值