操作系统之学习总结

参考文献:
【1】邱玮,熊谱翔,朱天龙. 嵌入式实时操作系统:RT-Thread设计与实现[M]. 北京:机械工业出版社,2019.

RT-thread线程的概念

是操作系统中最小的调度单位,线程调度算法是基于优先级的全抢占式多线程调度算法,即在系统中除了中断处理函数、调度器上锁部分的代码和禁止中断的代码不可抢占外,系统的其他部分都可以抢占,包括线程调度器自身。支持256个优先级。

rt中并不存在运行状态,就绪和运行状态是等同的
在这里插入图片描述

常见的调度算法

时间片轮转调度算法(RR):

给每个进程固定的执行时间,根据进程到达的先后顺序让进程在单位时间片内执行,执行完成后便调度下一个进程执行,时间片轮转调度不考虑进程等待时间和执行时间,属于抢占式调度。优点是兼顾长短作业;缺点是平均等待时间较长,上下文切换较费时。适用于分时系统。

先来先服务调度算法(FCFS):

根据进程到达的先后顺序执行进程,不考虑等待时间和执行时间,会产生饥饿现象。属于非抢占式调度,优点是公平,实现简单;缺点是不利于短作业。

优先级调度算法(HPF):

在进程等待队列中选择优先级最高的来执行。常被用于批处理系统中,还可用于实时系统中。

RT系统启动流程:分4个部分

  1. 初始化与系统相关的硬件
  2. 初始化系统内核对象:定时器、调度器、信号等
  3. 创建main线程,对各类模块依次初始化
  4. 初始化定时器线程、空闲线程,并启动调度器(为系统提供心跳)

RT内存管理:

动态内存堆管理和静态内存池管理(三种算法只能选择一种)

  1. 小内存管理算法
    分配内存时切割相匹配的内存块,分割出来的空闲内存块还给堆管理系统。每个内存块都包含一个管理用的数据头,用双向链表的方式把空闲块与使用块链接起来。用户线程分配内存块的时候链表指针如果指向内存块大小不足,则继续通过链表找到下一个内存块,下一个如果太大,分配器将内存块进行拆分。释放的时候分配器会查看前后相邻的内存块是否空闲,然后合成一个大的空闲内存块。
  2. slab管理算法
  3. memheap管理算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值