关于tss,求助大神

无知的程序员 2014-03-28 06:37:48
下午认真再看一下tss的知识,对其中一些问题很不解。书上说因为一个任务最多可以有四种特权级,所以它要有四个栈。其中有三对指针分别为ess0,esp0,ess1,esp1,ess2,esp2.。当任务进入不同的特权级就把ess和esp切换到不同的栈。比如ring3-->ring0,则ess=ess,esp=esp0。
1.书上说一个进程可以有多个特权级,这个该怎么理解?
2.什么时候会发生特权级切换?
3.比如说现在有两个特权级为3就绪进程分别为进程A和进程B。当前正在执行执行的是A。
然后发生时钟中断,那么我理解没错的话应该是执行进程调度程序。那么应该是发生特权级切换,进入到内核态吧
那么这时候进程A的特权级是什么?调度程序运行完比如决定让进程B执行,于是就切换到进程B,那这时又从内核态切换到用户态。那这时进程A的特权级是?
...全文
183 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
无知的程序员 2014-04-25
  • 打赏
  • 举报
回复
引用 1 楼 my_live_123 的回复:
A1:进程运行在不同的上下文 A2:执行系统调用,从用户态切换到核心态 A3:进程A依旧是用户态,中断是异步的。和A处在什么态没有关系!即使A此时处于系统调用,处于核心态,也可能被中断中断!中断“中断”(打断的意思)当前的进程。内核开始执行一段处于内核态的特殊执行路径,注意是路径,不是一个进程,中断此时要占用进程的时间的,可以理解在耽误进程! 进程AB的切换,二者都在用户态
谢谢大哥的解答,但小弟还几个问题没弄明白 a.我们所说的特权级切换这个概念的主语是系统呢还是指某个进程,就是说是系统的特权级切换还是说进程特权级切换。 b.为何只有低特权级向高特权级切换时才会用到tss?这个怎么理解? 多谢了
一根烂笔头 2014-04-25
  • 打赏
  • 举报
回复
引用 2 楼 ccq976586618 的回复:
[quote=引用 1 楼 my_live_123 的回复:] A1:进程运行在不同的上下文 A2:执行系统调用,从用户态切换到核心态 A3:进程A依旧是用户态,中断是异步的。和A处在什么态没有关系!即使A此时处于系统调用,处于核心态,也可能被中断中断!中断“中断”(打断的意思)当前的进程。内核开始执行一段处于内核态的特殊执行路径,注意是路径,不是一个进程,中断此时要占用进程的时间的,可以理解在耽误进程! 进程AB的切换,二者都在用户态
谢谢大哥的解答,但小弟还几个问题没弄明白 a.我们所说的特权级切换这个概念的主语是系统呢还是指某个进程,就是说是系统的特权级切换还是说进程特权级切换。 b.为何只有低特权级向高特权级切换时才会用到tss?这个怎么理解? 多谢了[/quote] a-这个是架构的内容,如果是x86你可以查阅intel的架构资料,看它为什么设置不同的特权级别。此外linux内核在x86上只使用了03两种特权级别,即0核心态,3用户态。如果你实在不理解,你就给自己这么一个认识:为了保护OS的安全。 b-在80X86架构中,intel最初设计TSS是来保存硬件环境,方便进程切换,在2.6以后的内核中,linux并没有使用他来进行进程切换时取得进程的硬件环境信息的。其实linux是用thread_struct来保存进程的硬件环境信息的,除了常用的eax,ebx等,这些值在内核栈中 ,所以也就不用切换tss了
一根烂笔头 2014-04-03
  • 打赏
  • 举报
回复
A1:进程运行在不同的上下文 A2:执行系统调用,从用户态切换到核心态 A3:进程A依旧是用户态,中断是异步的。和A处在什么态没有关系!即使A此时处于系统调用,处于核心态,也可能被中断中断!中断“中断”(打断的意思)当前的进程。内核开始执行一段处于内核态的特殊执行路径,注意是路径,不是一个进程,中断此时要占用进程的时间的,可以理解在耽误进程! 进程AB的切换,二者都在用户态

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧