L13操作系统之树(过程)
发布日期:2021-07-01 02:21:00
浏览次数:2
分类:技术文章
本文共 777 字,大约阅读时间需要 2 分钟。
PC置初值,不断的取指执行
边烧水边去洗衣服
从而造成程序切换:跳转(用栈)用户栈 内核栈 TCB1 TCB2
TCB切换完成后内核栈切换 再用户栈切换交替的在屏幕打出A B(linux0.01):进程的切换
fork就是系统调用执行的就是int 0x80
jne 208 :父进程返回就要进行调度了(schedule)
因为创建了打出A的进程,那么还需要进行打出B,则又一次int 0x80
wait() 父进程进入阻塞态,调用schedule
他的核心结构就是:一个进程产生出两个子进程(打出A,打出B),子进程的TCB分别贴好,分别是打A和B的函数,父进程进入阻塞态,调用scheduleschedule选择一个进程阻塞(A),选择完了就可以切换回去(switch to)
发现TSS可以完成任务的切换:CPU的寄存器拍在照片里保存在TSS中,用下一个TSS的内容扣在CPU上
A的TSS扣给CPU,把CPU的内容拍照拍给当前进程(current)的TCB里 拍下来-》扣过来当前eip等于100,从4行继续往下执行,eax返回的0那么就是返回的A
现在屏幕出现A需要调度点,
当前在用户态打A,怎么才能打B?调度B 则需 schedule ,那么久要进入内核? 考的是中断,时钟中断2初始化时钟中断。
每到一个进程时,就让当前进程的counter-1,剪刀0时,调用schedule有那么一次时钟中断。counter刚好等于0,A的时间片用完了。就不再执行
调用schedule,进行switch to,switch to找到B,从B的TSS取出内容,发现eip=300,Bj就开始执行了完成了切换,怎么切?把当前CPU的东西放给A进程的PCB的TSS
再把B的TSS东西赋给CPU此时取出的地址是300,执行300,,打出B
转载地址:https://mapengsen.blog.csdn.net/article/details/105927357 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
感谢大佬
[***.8.128.20]2024年04月11日 19时11分56秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Flink Runtime(8)-- 创建Flink项目及依赖管理
2019-05-01
Flink Runtime(9)-- 自己编译Flink
2019-05-01
Flink Runtime(10)-- Flink编译报错集锦
2019-05-01
Flink API 通用基本概念(11)
2019-05-01
Flink DataStream API概述(12)
2019-05-01
Flink Operator概述(13)
2019-05-01
Flink Time概述(14)
2019-05-01
Flink Window概述(15)
2019-05-01
Flink Operators之CoGroup和Join概述(16)
2019-05-01
Flink Operators之Process Function(17)
2019-05-01
Flink 异步I/O访问外部数据(18)
2019-05-01
深入理解python--线程、进程与协程(1)
2019-05-01
Flink中增量聚合函数和全量聚合函数的关系
2019-05-01
HIVE自定义函数--UDF函数(用户自定义函数)详解
2019-05-01
Java中访问控制符的具体用法
2019-05-01
Java包重点总结
2019-05-01
创建线程究竟该用第几种方式
2019-05-01
Java--流重点总结初稿
2019-05-01
Java高级部分流---换个角度思考流
2019-05-01
如何解决电脑ip地址冲突的问题
2019-05-01