zoukankan      html  css  js  c++  java
  • 【mark】OS是否使用svc方式分开系统空间和用户空间的优劣

    对于Cortex-M单片机,用户程序调用RTOS系统函数有两种思路:

    假设创建任务的RTOS函数是xxx_task_create()

    第一类:FreeRTOS、RT-Thread中采用的方法,和调用普通的用户函数一样,xxx_task_create()调用直接执行任务创建代码
    第二类:RTX、zephyr中采用的方法,xxx_task_create()中并没有任务创建代码,xxx_task_create()调用会执行SVC指令,触发SVC中断,在SVC_Handler()中根据参数调用相应的RTOS函数从而创建任务,,这种方法更类似于Windows、Linux等大型OS中系统调用采用的方法

    那么第二种方法会比第一种方法更安全吗?

    另外,除了上面提到的RTX、zephyr,,还有哪些RTOS采用SVC的方法实现系统调用?

    https://www.amobbs.com/thread-5695667-1-1.html

    解释:

    1、用svc调用系统api,就隐含保证了所有的系统api都不会重入,也不会互相打断!这是非常重要的保护!

    2、在小型系统中,如果建立线程的过程中,发生中断,又有一些系统调用,会很容易造成系统崩溃。因此没有svc模式的系统会增加很多状态检测,保证安全。

          没用svc模式方便移植,但是效率还是低一点,所以rtx之类的arm原生专用系统的效率更高。

  • 相关阅读:
    js将url转换二维码
    百度地图api使用
    js字符串转日期兼容性
    Object.keys的使用
    Web App和Native App的比较
    数组转为对象
    常用meta整理
    git merge和git rebase的区别
    GitHub 翻译之 'Hello-world' 翻译
    js数据类型
  • 原文地址:https://www.cnblogs.com/mic-chen/p/10731829.html
Copyright © 2011-2022 走看看