赞
踩
一个本硕双非的小菜鸡,备战24年秋招,计划学习操作系统并完成6.0S81,加油!
本文总结自B站【哈工大】操作系统 李治军(全32讲)
老师课程讲的非常好,感谢
【哈工大】操作系统 李治军(全32讲)
没有用户级进程这一说法,因为进程在内核中。实际上切换进程真正的是切换内核级线程。
因为进程要分配资源访问内存,这些都是计算机硬件资源,用户态不行
用户级线程、核心级线程、进程
多核要想发挥作用,就必须支持核心级线程。
多处理器特点是:每个CPU都有自己的一套缓存和内存映射
只有函数到内核以后,才能分配到CPU(核)上
并发是同时触发,交替执行,用的是同一套资源。
并行是同时触发,多处理器同时执行多个线程
用户级线程是两个栈,核心级线程是两套栈(用户层、内核层)
出现中断,从用户栈进入到内核栈
进入内核态前,把线程的用户栈信息(ss,sp,pc,cs元数据)压入到内核栈,即把同一个线程的用户栈与内核栈关联起来
就是内核栈进入内核执行代码时要保存用户栈用来切换到用户态
tcb只是内核中的tcb,只记录内核态切换的栈地址,而内核栈通过自己记录的栈pc地址和用户栈绑定在一起,从而实现了tcb切换,内核栈与用户栈都切换!
真正的代码在用户态,切完后在内核态溜达一下切回用户态程序(进来时候就储存了)
线程用户栈,中断进入内核栈,内核栈用到tcb。根据这个tcb切换到下一个tcb,这个tcb里有该线程的内核栈,这个内核栈又关联该线程的用户栈
五段论:1,由中断将内核栈与用户栈关联起来并进入内核 2,进行中断处理,中断处理过程中产生阻塞或者时钟中断,引发切换 3,找到目标的tcb,然后执行切换 4,根据tcb切换内核栈5,中断返回,弹出内核栈中的内容,切换到用户态,此时就完成了内核线程切换
用户灵活性, 用户线程大于核心线程;
原因:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。