使用数据结构模拟操作系统中进程的状态转换
- 手写需要创建一个PCB链表
- 由于jsvascript中没有链表数据结构 需要手动自己封装一个
1 | /** |
- 有了链表数据结构就可以创建PCB链表了
1 | // 创建PCB链表 |
- 操作系统中的两个队列,这里使用数组来模拟,也可以使用Queue数据结构(只不过javascript本身没有这种数据结构,也同样需要自己模拟)
1 | // 等待队列 |
- 模拟创建进程 此时需要遍历PCB链表 看是否有空的位置可以添加进程,如果有就创建进程,并把该进程添加到就绪队列里面,返回该进程的id号,没有返回创建失败(暂时没做)
1 | /** |
- 删除进程(给出一个进程的id号,从pcb链表种删除该进程并查询此进程是否在等待队列和就绪队列里,如果在,也要从队列种删除,删除成功返回true,否则返回false)
1 | /** |
- 阻塞某一个进程(给出进程号,把该进程转化为阻塞状态,并添加就等待队列种)
1 | /** |
- 唤醒某个进程(给出进程号,从等待队列里唤醒该队列,把该队列的状态改为就绪状态,并添加进就绪队列)
1 | /** |
- 进程挂起(没有理解,暂时不太会写)
- 进程释放(没有理解,暂时不太会写)
- 工具函数(生成随机数用来表示进程号,进程和使不可以重复的)
1 | /** |
- 测试代码
1 | //test |
大概就是这样…..