L13 操作系统的这棵树

1.当操作系统一边输入,一边输出时。显然,在打印输出时,CPU必须等待,为了使CPU更好地工作,就出现了线程调度
在这里插入图片描述
2.所以就要把进程切出去,就要跳转,跳转去执行后要返回到程序执行,所以就需要栈。
在这里插入图片描述
3.使用一个栈,在连个程序段之间切换时,出现了混乱,为了解决混乱,所以引入了两个栈。
在这里插入图片描述
4.使用两个栈,就实现了yiled切换到另外一段程序,再在另外一段程序切换回来。
在这里插入图片描述
5.一直用户态执行,切换,是不够的!想要切换内核态,怎么办呢?
在这里插入图片描述
6.所以就引入了内核态的切换 。
用户态切换至内核栈,内核栈中TCB1切换,就切换TCB2,就切换到内核栈2,再切换到用户栈2,于是就切换了两个核心态的切换。
在这里插入图片描述
7.如何在操作系统界面打出A,B呢?
如下:
在这里插入图片描述
8.fork是如何操作的呢?
100行的res,是完成 int 0x80 的返回值
在这里插入图片描述
9.那么int 0x80是如何操作的呢?
在这里插入图片描述
10.执行sys_call_table,就要执行sys_fork,执行sys_process
在这里插入图片描述
11.copy_process 做什么?
创建一个PCB,把当前的PCB保存,等待切换。
在这里插入图片描述
12.执行完copy_process
ret 返回到cmpl $0,state(current)
接下来就进行调度。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
要怎样切换进程B呢?
时钟中断!!A进程到了时间后,把寄存器等数据拍下来,保存在A的PCB中,把B的PCB取出来恢复寄存器状态。同样B也是通过时钟中断,通过切换,在屏幕中输出A和B。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值