Zephyr内核——内核服务(调度,中断和同步)——线程

本文档详细介绍了Zephyr内核中的线程管理,包括线程的创建、生命周期、堆栈对象、线程优先级和选项。线程是内核对象,用于执行复杂的任务。线程可以通过返回其入口点函数来终止,也可以被其他线程中止。内核提供了创建、调度和删除线程的接口,并允许调整线程的优先级和选项。线程的堆栈区域可以定制,且有特定的宏来处理堆栈内存。线程的执行模式可以在监督或用户模式下运行,用户模式受到限制。

线程

本节描述用于创建、调度和删除独立可执行指令线程的内核服务。

线程是一个内核对象,用于由ISR无法执行的太长或太复杂的应用程序处理。

任意数量的线程都可以由应用程序来定义(仅受可用RAM的限制)。每个线程都由一个在生成线程时分配的线程id引用。

线程具有以下关键属性:

  • 堆栈区域,它是用于线程堆栈的内存区域。堆栈区域的大小可以根据线程处理的实际需要进行定制。存在一些特殊的宏来创建和使用堆栈内存区域。
  • 线程控制块,用于线程元数据的私有内核簿记的线程控制块。这是k_thread类型的一个实例。
  • 一个入口点函数,在线程启动时被调用。最多有3个可以传递给此函数的参数值。
  • 一种调度优先级,它指示内核的调度程序如何为线程分配CPU时间。(请参见“进度计划”。)
  • 一组线程选项,它允许线程在特定情况下接受内核的特殊处理。(请参见“线程选项”。)
  • 启动延迟,它指定内核在启动线程之前应该等待多长时间。
  • 一种执行模式,它可以是监督模式,也可以是用户模式。默认情况下,线程在监控模式下运行,并允许访问有特权的CPU指令、整个内存地址空间和外设。用户模式线程具有一组减少的特权。这取决于CONFIG_USERSPACE选项。请参见用户模式。

生命周期

线程创建

必须创建线程才能使用。内核初始化线程控制块以及堆栈部分的一端。线程堆栈的其余部分通常未进行初始化。

指定K_NO_WAIT的启动延迟将指示内核立即

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值