RT-THREAD官网视频内核入门学习笔记摘抄整理

这篇内容探讨了实时操作系统(RTOS)中的线程管理,包括系统线程和用户线程,强调了线程控制块、线程状态和栈的重要性。此外,还介绍了时间管理的硬件和软件定时器,以及信号量、互斥量和事件集等同步机制。文章进一步阐述了内存管理,如内存堆、内存池和小内存管理算法slab,并提供了相关函数的示例。最后,提到了信号的安装、阻塞和解除阻塞操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

学习视频网址如下:
https://www.rt-thread.org/page/video.html
此部分为非视频部分:
系统线程:图
空闲线程、主线程
一个线程要成为可执行对象,就必须由操作系统的内核来为他创造一个线程。
初始化和脱离线程
线程管理 类别分为 (1)系统线程(2)用户线程
工作机制:线程控制块
线程的重要属性,线程栈,状态。
时间管理:时间节拍。定时器管理:(1)硬件定时器HARD_TIMER(2)软件定时器SOFT_TIMER
定时器控制块:rt_timer
定时器管理方式:void rt_system_timer_init(void);
信号量:(semaphore)
互斥量:(mutex)
事件集:(event)
信号量的工作机制:获取信号量
信号量控制块 : 无等待获取信号量
互斥量:拥有互斥量的线程拥有互斥量所有权。
互斥量状态只有两种:开锁或者闭锁。
互斥量控制块:管理方式(1)创建和删除互斥量(2)初始化和脱离互斥量(3)获取互斥量(4)释放互斥量。
线程间通信:邮箱 4个字节。
邮箱控制块
消息队列:线程间的消息交换/使用串口接收不定长数据等。
消息队列对象:消息队列名称、内存缓冲区、消息大小以及队列长度。
msq_queue_head msq_queue_tail
消息队列的管理方式:(1)创建/初始化(2)发送(3)接收(4)删除/脱离

struct rt_messagequeue
{
	struct rt_ipc_object parent;
	void *msq_pool;
	rt_uint16_t msg_size;
	rt_uint16_t msg_msgs;
	rt_uint16_t entry;
	void *msg_queue_head;
	void *msg_queue_tail;
	void *msg_queue_free;
	rt_list_t suspend_sender_thread;
};
typedef struct rt_messagequeue * rt_mg_t;

消息队列使用场合:发送消息:同步消息
信号工作机制
安装信号:

rt_sighandler_t rt_signal_insatll (int signo,rt_sihander_t[],handler);

阻塞信号:

void rt_signal_mask(int signo)

接触信号阻塞:

void rt_signed_unmask(int signo)

RT_THREAD 内存管理
内部存储空间:内存堆管理
外部存储空间:小内存管理算法 slab管理算法

void rt_system_heap_init(void* begin_addr,void*end addr)//堆内存起始地址、堆内存结束地址

memheap 堆内存

rt_err_t  rt_memheap_init(struct rt_memheap *memheap,const char *name,void *start_addr,rt_uint32_t size)

内存池(Memory Pool)
内存池控制块:struct rt_mempool rt_mp_t

struct rt_mempool
{
	struct rt_object parent;
	void *start_address;
	rt_size_t size;
	rt_size_t block_size;
	rt_size_t block_total_count;
	rt_size_t suspend_thread;
}

内存块分配机制->参数
内存池控制块
struct rt_mempool
创建/初始化 rt_mp_create/init()
分配内存块:rt_mp_alloc()
释放内存块:rt_mp_free()
删除/脱离: rt_mp_delete/detach()
创建和删除内存池

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值