多线程操作系统原理
论多线程是如何实现的
基于arm内核
在裸机系统中
有一个主线程和多个子线程
一个线程执行一个函数
每个线程都有自己独自的栈区与代码区
当使用单核cpu时
为了保证每个线程都能执行
因此cpu采用一种特殊的机制来切换线程
即分配给每个线程一个时间片
该线程的运行时间结束后,即切换栈区和代码区进行线程切换
此时为串行线程
这里使用汇编来实现简单的线程切换
1 | ///保存当前线程 |
在实际应用当中肯定不会只有这么简单的代码
实际上,要考虑到每个线程的重要性和运行时段,即线程优先级和线程睡眠
例如:
1 | 线程1运行1ms |
如此往复
现在我已经在riscv平台上开发了一个多线程系统,具体可参考我的另一篇博客:基于riscv的真多线程系统
