博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OK6410A 开发板 (八) 25 linux-5.11 OK6410A 进程角度 裸机和进程的区别
阅读量:4283 次
发布时间:2019-05-27

本文共 993 字,大约阅读时间需要 3 分钟。

裸机		  代码 : 没有调度函数有进程概念的代码 :   有调度函数

添加调度要添加什么

添加调度要添加什么	1. pick next task 	调度算法 选择 哪个进程 为 下一个进程	2. switch 			寄存器的保存和恢复其他细节	1. 在什么时候调度/即调度时机

调度的技术设想

考虑到 要选择 下一个进程, 考虑 用 单链表即可考虑到 要保存 寄存器, 考虑用一个 结构体(不同的体系架构有不同的寄存器个数与bit) 保存即可考虑到换出,当前cpu就无法访问,但是换入,还要能恢复,就需要全部变量考虑到 每个 任务 要 一套(区分进程/选择进程/保存进程上下文),将 int类型变量/单链表/结构体 封装到一个大的结构体task_struct 中考虑到 代码运行的栈(sp)要方便设置,干脆就将 task_struct 搞大一点,设置 sp 为 task_struct 结构体变量 所在的地址范围最高地址----- 美化操作考虑到 区分进程 会更好一点,用一个 int 类型 保存即可	// 其实不区分也可以	// 进程就是换出换入,只要能满足可以选择下一个进程,换出当前进程,换入下一进程,就可以考虑到 用 current 能索引当前的 task_struct	// task_struct  按照 0x1000 对其	// 当前的 sp(sp会在 0x#### #000 - 0x#### #fff 浮动)	// 可以 以 sp&~(0x1000-1) 索引 task_struct
针对 arm32struct task_struct{
int pid; struct list_head list; // 使用内核链表 // 参考 https://github.com/lisider/kernel_list struct register_all{
int r0; ... int r15; int cspr; int spsr; };}调度时机 在 irq 的时候调度, irq 由 timer产生

// 多进程os请 参考 https://github.com/lisider/learn_os/tree/master/process// 实现与 对 多进程os 的设想有出入,可以查看链接中的图片看实际设计的结构体布局

转载地址:http://vcigi.baihongyu.com/

你可能感兴趣的文章
DOM笔记(五):JavaScript的常见事件和Ajax小结
查看>>
DOM笔记(六):怎么进行JQuery扩展?
查看>>
搜索和网页排名的数学原理
查看>>
DOM笔记(八):JavaScript执行环境和垃圾收集
查看>>
响应式下的下拉菜单
查看>>
DOM笔记(九):引用类型、基本包装类型和单体内置对象
查看>>
也谈学习
查看>>
DOM笔记(十):JavaScript正则表达式
查看>>
如何高效编写可维护代码?
查看>>
DOM笔记(十一):JavaScript对象的基本认识和创建
查看>>
DOM笔记(十二):又谈原型对象
查看>>
DOM笔记(十三):JavaScript的继承方式
查看>>
CSS:响应式下的折叠菜单(条纹式)
查看>>
响应式设计三部曲
查看>>
45种Javascript技巧大全
查看>>
PDO学习笔记
查看>>
MarkDown语法
查看>>
Linux的文件权限
查看>>
全屏滚动实现:fullPage.js和fullPage
查看>>
SASS小结
查看>>