社区导航

 
快捷导航
  • 首页
  • 论坛
  • 查看新帖
  • 最新回复
  • 社区活动
  • 联系管理员
  • 消灭零回复
  • E金币兑换
  • 干货
搜索
查看: 319|回复: 7

[原创] 一个简洁、能力有限的系统内核

[复制链接]

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

发表于 2017-10-4 21:34:20 来自手机 | 显示全部楼层 |阅读模式
学C已有4年之久,为了不让自己的能力一直停留在某个低级的阶段,提升系统级的能力,更好的理解操作系统内核的工作原理,本质。自己动手写了个简单的OS内核(虽然简单,但是对于初学者应该能看好几天了;-))。该内核支持轮询调度,支持信号量。目前只能跑在ARM内核上,对于有想从事嵌入式开发并深入了解系统调度,线程切换等原理的同学们应该是一份不错的材料。非常希望能帮助到想学习内核的人。

欢迎大家 star ,提交 issue, patch,也可以给我发邮件 gimcuan@gmail.com      ;-)

源代码镜像: https://soloing.org/pub/totoro
git 仓库地址:https://github.com/gilarus/totoro

回复

使用道具 举报

737

TA的帖子

2

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-10-4 23:39:18 | 显示全部楼层
操作系统的“轮询调度”概念是我第一次听到的,挨个询问线程是否需要运行么  我知道优先级调度、时间片轮转什么的,给我们讲讲你的“轮询调度”法吧
亚里士缺德

回复

使用道具 举报

7

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2017-10-6 00:39:10 | 显示全部楼层
估计LZ将时间片轮转笔误成非OS的后台分时“轮询”了.......

回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2017-10-8 22:24:57 来自手机 | 显示全部楼层
看代码看代码

回复

使用道具 举报

68

TA的帖子

0

TA的资源

版主

Rank: 6Rank: 6

发表于 2017-10-9 12:30:22 | 显示全部楼层
我一个大循环,如果被强制中断去运行别的函数了,还能再切回来吗?也就是说,每个任务有自己的堆栈吗?另外,优先级安排是按什么策略

回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2017-10-9 14:27:02 来自手机 | 显示全部楼层
自己的线程上下文是最基本的啦,肯定有的咯; 看代码,这只是一个很简单的玩具内核,没有什么先进的调度算法。仅供初学者参考使用

回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2017-10-9 14:32:32 来自手机 | 显示全部楼层
提供了两个测试模块,一个是同级线程轮询调度,另一个是两个不同优先级,高优先级的线程自己挂起,等待低优先级的线程把自己唤醒(信号量)

回复

使用道具 举报

6

TA的帖子

0

TA的资源

一粒金砂(初级)

Rank: 1

 楼主| 发表于 2017-10-9 14:33:42 来自手机 | 显示全部楼层
每个任务有自己的上下文。更具体的自己看代码。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-10-20 05:48 , Processed in 0.271197 second(s), 16 queries , Redis On.

快速回复 返回顶部 返回列表