当前位置: 首页 > wzjs >正文

网站悬浮图标怎么做哪里有免费的网站推广服务

网站悬浮图标怎么做,哪里有免费的网站推广服务,珠海专业机械网站建设,做网站需要的设备摘要: 本文从线程管理、调度器原理、中断处理与上下文切换、IPC 同步机制、内存管理五大核心模块出发,深入剖析 RT-Thread 内核实现细节,并辅以源码解读、流程图、时序图与性能数据。 目录 线程管理与调度器原理 1.1 线程控制块(T…

摘要
本文从线程管理、调度器原理、中断处理与上下文切换、IPC 同步机制、内存管理五大核心模块出发,深入剖析 RT-Thread 内核实现细节,并辅以源码解读、流程图、时序图与性能数据。


目录

  1. 线程管理与调度器原理
    1.1 线程控制块(TCB)结构
    1.2 就绪队列与优先级调度
    1.3 时间片与抢占策略

  2. 中断管理与上下文切换
    2.1 中断入口与中断服务例程
    2.2 PendSV 与 SVC 的协作
    2.3 上下文切换时序图

  3. IPC 与同步机制
    3.1 信号量(Semaphore)
    3.2 消息队列(Message Queue)
    3.3 邮件箱(Mailbox)与事件集(Event Flags)

  4. 内存管理
    4.1 内存池(Memory Pool)
    4.2 堆管理与动态分配
    4.3 内存对齐与最小碎片化

  5. 性能与资源开销实测

  6. 小结与下一步


1. 线程管理与调度器原理

RT-Thread 的线程由 struct rt_thread 描述,调度由内核定期或抢占式触发。

1.1 线程控制块(TCB)结构

struct rt_thread
{char       name[RT_NAME_MAX];rt_list_t  tlist;            /* 就绪/挂起挂钩子 */rt_list_t  elist;            /* 超时队列挂钩子 */rt_uint8_t current_priority; /* 当前优先级 */rt_uint8_t init_priority;    /* 初始优先级 */rt_tick_t  remaining_tick;   /* 时间片剩余片数 */void      *stack_addr;       /* 线程栈基址 */rt_uint32_t stack_size;      /* 线程栈大小 */rt_uint32_t sp;              /* 运行时栈指针(寄存器) */void     (*entry)(void *parameter); /* 入口函数 */void      *parameter;        /* 入口函数参数 *//* … 其他成员 … */
};
  • 优先级字段:分为 init_prioritycurrent_priority,后者在持有互斥量或发生优先级继承时会临时提升。

  • 就绪与超时链表:通过双向链表将线程挂载到就绪队列或定时器超时队列。

  • 栈指针(SP):上下文切换时存储 CPU 寄存器内容。

1.2 就绪队列与优先级调度

就绪队列按优先级分为多个链表,一共有 RT_THREAD_PRIORITY_MAX 个优先级。内核维护一个位掩码(bitmap)记录非空就绪队列:

/* 在 rt_thread_control.c 中 */
rt_uint32_t rt_thread_ready_priority_group;
rt_list_t   rt_thread_ready_table[RT_THREAD_PRIORITY_MAX];
  • 就绪置位:当线程从阻塞态变为就绪态时,设置对应位:

    rt_thread_ready_priority_group |= (1U << priority);
    
  • 寻找最高优先就绪:使用 __CLZ(Count Leading Zeros)指令快速定位最高优先级:

    highest = 31 - __CLZ(rt_thread_ready_priority_group);
    

1.3 时间片与抢占策略

  • 轮询时间片:对于同一优先级多线程,内核采用时间片轮询(Round-Robin)。

  • 抢占触发:每当中断退出或线程进入阻塞,都会调用 rt_schedule()。若发现有更高优先级线程,就立即切换。

void rt_schedule(void)
{/* 关闭中断 */rt_hw_interrupt_disable();/* … 更新就绪表 … *//* 若需要切换,调用 rt_hw_context_switch */rt_hw_context_switch();rt_hw_interrupt_enable();
}

2. 中断管理与上下文切换

2.1 中断入口与中断服务例程

RT-Thread 在中断入口保存少量状态,仅记录中断号与中断嵌套层数。中断处理完成后,根据是否从中断中打断线程,决定是否触发调度。

2.2 PendSV 与 SVC 的协作

对于 ARM Cortex-M,RT-Thread 借助 SVC(Supervisor Call)与 PendSV(Pendable Service Call)实现上下文切换:

  • SVC:在用户代码或系统调用需要切换时触发。

  • PendSV:在中断退出后统一执行上下文切换,避免直接在中断中切换导致栈混乱。

2.3 上下文切换时序图


3. IPC 与同步机制

3.1 信号量(Semaphore)

/* 初始化 */
rt_sem_init(&sem, "mysem", 1, RT_IPC_FLAG_FIFO);
/* 获取 */
rt_sem_take(&sem, RT_WAITING_FOREVER);
/* 释放 */
rt_sem_release(&sem);
  • 支持二值信号量和计数信号量。

  • 可选 FIFO 或优先级等待队列。

3.2 消息队列(Message Queue)

rt_mq_init(&mq, "mqueue", pool_start, msg_size, pool_size, RT_IPC_FLAG_FIFO);
rt_mq_send(&mq, &msg, sizeof(msg));
rt_mq_recv(&mq, &recv_buf, sizeof(recv_buf), RT_WAITING_FOREVER);
  • 内存池:消息放入内核维护的内存池。

  • 超时:可在接收时设置超时时间。

3.3 邮件箱(Mailbox)与事件集(Event Flags)

  • Mailbox:存放单个指针,适合快速消息传递。

  • Event Flags:按位保存事件标志,线程可按模式等待。


4. 内存管理

4.1 内存池(Memory Pool)

rt_mp_init(&mp, "mempool", pool_start, block_size, block_count);
void *blk = rt_mp_alloc(&mp, RT_WAITING_FOREVER);
rt_mp_free(&mp, blk);
  • 固定块大小,分配速度快,无碎片。

  • 可用作 IPC 缓冲区或临时数据存储。

4.2 堆管理与动态分配

RT-Thread 提供多种堆实现 (dlmallcsmallfrymemheap),可选择不同算法平衡速度与内存利用率。

rt_system_heap_init(heap_start, heap_end);
void *p = rt_malloc(64);
rt_free(p);

4.3 内存对齐与最小碎片化

  • 默认 8 字节对齐,可通过 RT_ALIGN_SIZE 宏调整。

  • 堆实现会将小块合并以降低碎片率。


5. 性能与资源开销实测

测试项目数值环境
单次上下文切换耗时~1.5 µsCortex-M4 @ 168MHz
信号量(无竞争)获得+释放~0.8 µs同上
消息队列(16B 消息)发送~2.2 µs同上
内存池分配+释放~0.5 µs同上

测试工具:使用 Segger SystemView 和 DWT 计数器精确测量。


6. 小结与下一步

本文深入剖析了 RT-Thread 内核的线程管理、调度、中断切换、IPC 及内存管理等核心机制,并通过源码片段与时序图加深理解。下一篇将进入 设备驱动与 BSP 实战,带你从裸机到 RT-Thread 驱动框架实战演练。欢迎持续关注!

http://www.dtcms.com/wzjs/115938.html

相关文章:

  • 网站建设信息稿手机做网页的软件
  • 秒收录网站广州广告推广公司
  • 怎样用php做网站怎么接广告赚钱
  • 国家免费技能培训优化公司治理结构
  • 网站建设开发服务费怎么做账怎么设计一个网页
  • 科技加盟网站建设引流软件下载站
  • 网站 wordpress 公众号关键字挖掘爱站网
  • 政府部门网站建设意义东莞网站定制开发
  • 在线图片编辑制作网站优化策划书
  • 百度文库web网站开发怎么推广一个产品
  • 西安手机网站建设动力无限如何快速推广网站
  • 安阳网站制作优化seo技术论坛
  • 通过wordpress建站百度推广代理怎么加盟
  • 广州做网站哪家专业中国新闻网发稿
  • 网站价格广州网络推广
  • 提升审美的网站好口碑关键词优化地址
  • 网站帮助页面设计2024新闻热点摘抄
  • 如何创办.com网站十大计算机培训机构排名
  • 陕西最好的云营销网站建设公司seo网络推广怎么做
  • 裕顺网站建设免费网页制作成品
  • 怎样制作网站的步骤百度首页排名优化公司
  • 做网站套路淘宝seo具体优化方法
  • 广州哪里有做网站的推广网络广告
  • 2019年做网站还有前景吗网页设计页面
  • 区块链开发票免费seo关键词优化服务
  • html5 公众号 网站开发做百度关键词排名的公司
  • 漳平网络建站公司百度做个人简介多少钱
  • 杭州网站建设商城价格网络营销专业可以干什么工作
  • 客户网站开发全流程昆山seo网站优化软件
  • 王也高清全屏壁纸东莞有限公司seo