zoukankan      html  css  js  c++  java
  • ARM RTX操作系统—Overview—Product Description

    Product Description

    RTX内核提供了基本的功能,可以创建和注销任务进程。同时RTX内核还提供了一些额外的功能,用于任务进程之间的通信。利用这些通信功能,可以同步任务进程,管理系统公用的资源(例如外设或者内存),在任务进程之间传递消息。

    开发者可以设置任务进程的调度优先级。

    RTX内核提供了以下的任务进程通信功能:

    1,事件标志位(Event flags)

    事件标志位是实现任务进程之间同步的首要手段。每个任务进程有16个事件标志位。因此每个任务进程都可以等待16件事情或者其中一部分事件的发生,然后处理他们。

    一个任务进程的事件标志位,可以被其他的任务进程或者ARM中断程序置位。通过在ARM中断程序中将事件标志位置位的方式,可以实现外部异步事件和RTX内核的同步。

    简单的来说,就是其他任务进程或者中断程序置位标志位,而当前任务进程选择等待某个任务标志位,如果某个标志位置位了,表明有某件事情已经发生了,那么当前进程可以根据事件标志位代表的含义完成相应的工作。

    2,信号量(Semaphores)

    当多个任务需要同时访问一个公用的资源时,会发生竞争。竞争会因为多个进程的交叉访问,使得系统公用的资源工作不正常。

    信号量(二进制信号量)就是解决这一问题的主要手段。信号量确保了一个时刻只有一个任务进程在访问公用的资源。

    RTX内核的具体实现方式为:

    信号量是软体实现一个对象,这个对象里面包含一个虚拟token。RTX内核将这个token授予给第一个请求公用资源的那个任务进程。当有其他的任务进程再请求这个公用资源时,会因为当前token未被释放给信号量,而被RTX内核设置为sleep状态进行等候。直到第一个任务进程释放掉token,token被RTX内核还给信号量,其他的任务进程会被RTX内核立即放置到ready list中,准备开始运行。

    RTX内核还提供了超时机制,放置任务进程因为等待一个信号量而永久的处于sleep状态。

    互斥锁(Mutexes)

    互斥锁也是解决竞争和内存访问问题的手段之一。

    互斥锁是软体实现的一个对象,任务进程可以利用他来锁住某个公用资源。只有锁住公用进程的这个任务进程拥有锁,并可以访问对应的公用资源。其他任务进程因为无法得到锁而无法访问公用资源。RTX内核会一直阻塞这些请求互斥锁的任务进程,直到拥有锁的任务进程释放锁。

    邮件信箱(Mailboxes,原谅翻译的不够好

    邮件信箱应该是用来存放消息的。

    任务进程之间可以通过邮件信箱的方式相互传递消息(message)。这种方式在创建一些高层级的协议时经常被用到,例如TCP-IP,UDP,以及ISDN。

    消息其实是一个指针,指向一块包含有消息内容的内存区域。任务进程必须负责动态创建和释放掉这些内存区域,以防止出现内存泄露。

    如果消息还未到达,RTX内核会将等待消息的任务进程设置为sleep状态。内核会尽快的唤醒任务进程,当有其他任务进程发送消息过来。

  • 相关阅读:
    java基础02标识符
    java基础08自增、自减运算符 初识Math
    java基础04 数据类型扩展及面试题讲解
    java基础03数据类型
    大家好,近期学习设计模式,我会把自己的例子上传,以供大家参考
    关于寂寞
    从以文件流的形式下载文件
    大家好,我的程序博客开始了
    如何学好C语言
    大学生如何将自己从迷茫中解困
  • 原文地址:https://www.cnblogs.com/ironx/p/5136924.html
Copyright © 2011-2022 走看看