透查本质

在学习操作系统的时候,应该从本质出发。

疑问:

  1. 操作系统的出现时机(背景),解决的问题?
  2. 操作系统是如何保证安全的?
  3. 操作系统是如何管理硬件资源的?
  4. 操作系统是如何被推广的?
  5. 操作系统的兼容性,跨平台性怎么样?
  6. debug能力怎么样?
  7. 是否方便易用,是否容易上手?

回答:

  1. 资源受限设备的复杂性增加,仅仅靠while(1)无法软件解耦。有实时性的要求。
  2. 给cpu分为特权模式和用户模式,特权模式可以访问所有资源,用户模式只能访问部分资源。任务有自己的栈空间,任务切换时,保存和恢复上下文。
  3. 中断管理,cpu时间片管理,内存管理。
  4. 极小的占用,开源免费,标准接口。
  5. 支持多种架构的芯片,支持多种编译工具链。
  6. 自带一些调试工具,追踪功能,内存检测。
  7. 支持多任务,任务间通信,同步,互斥。

有啥说啥

这样设计有什么好处,为什么? 有没有必要这样设计? 有没有其他设计方案? 根据场景倒推设计思路。

简介

任务

时间管理

中断管理和临界段

处理器利用率

列表和列表项

消息队列

信号量

事件标记组

软件定时器

低功耗管理

内存管理

常见名词

  • MPU :Memory Protection Unit(内存保护单元)
  • CRITICAL:临界
  • SysTick:内置的系统定时器
  • SVC:System Service Call系统调用(用于产生系统函数的调用请求)
  • PendSV:Pend System Service Call 可悬起的系统调用(可以像普通的中断一样被抢占挂起的,具有缓期执行的特点)
  • ISR:Interrupt Service Routine中断服务例程
  • IRQ:Interrupt Request 中断请求
  • idle task:空闲任务,操作系统在没有其他任务需要运行时执行的默认任务。

参考链接