当前位置: 首页 > 面试题库 >

请你来说一说用户态到内核态的转化原理

邹铭
2023-03-14
本文向大家介绍请你来说一说用户态到内核态的转化原理相关面试题,主要包含被问及请你来说一说用户态到内核态的转化原理时的应答技巧和注意事项,需要的朋友参考一下

参考回答:

1)用户态切换到内核态的3种方式

1、系统调用

这是用户进程主动要求切换到内核态的一种方式,用户进程通过系统调用申请操作系统提供的服务程序完成工作。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的ine 80h中断。

2、异常

CPU在执行运行在用户态的程序时,发现了某些事件不可知的异常,这是会触发由当前运行进程切换到处理此。异常的内核相关程序中,也就到了内核态,比如缺页异常。

3、外围设备的中断

当外围设备完成用户请求的操作之后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条将要执行的指令,转而去执行中断信号的处理程序,如果先执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了有用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。

2)切换操作

从出发方式看,可以在认为存在前述3种不同的类型,但是从最终实际完成由用户态到内核态的切换操作上来说,涉及的关键步骤是完全一样的,没有任何区别,都相当于执行了一个中断响应的过程,因为系统调用实际上最终是中断机制实现的,而异常和中断处理机制基本上是一样的,用户态切换到内核态的步骤主要包括:

1、从当前进程的描述符中提取其内核栈的ss0及esp0信息。

2、使用ss0和esp0指向的内核栈将当前进程的cs,eip,eflags,ss,esp信息保存起来,这个过程也完成了由用户栈找到内核栈的切换过程,同时保存了被暂停执行的程序的下一条指令。

3、将先前由中断向量检索得到的中断处理程序的cs,eip信息装入相应的寄存器,开始执行中断处理程序,这时就转到了内核态的程序执行了。

 类似资料:
  • 本文向大家介绍请你说一说用户态和内核态区别相关面试题,主要包含被问及请你说一说用户态和内核态区别时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 用户态和内核态是操作系统的两种运行级别,两者最大的区别就是特权级不同。用户态拥有最低的特权级,内核态拥有较高的特权级。运行在用户态的程序不能直接访问操作系统内核数据结构和程序。内核态和用户态之间的转换方式主要包括:系统调用,异常和中断。

  • 本文向大家介绍请你来说一下微内核与宏内核相关面试题,主要包含被问及请你来说一下微内核与宏内核时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 宏内核:除了最基本的进程、线程管理、内存管理外,将文件系统,驱动,网络协议等等都集成在内核里面,例如linux内核。 优点:效率高。 缺点:稳定性差,开发过程中的bug经常会导致整个系统挂掉。 微内核:内核中只有最基本的调度、内存管理。驱动、文件系统等

  • 本文向大家介绍请你说一说TCP的模型,状态转移相关面试题,主要包含被问及请你说一说TCP的模型,状态转移时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 四层TCP/IP模型如下: 其状态转移图如下:

  • 本文向大家介绍请你说一说epoll原理?相关面试题,主要包含被问及请你说一说epoll原理?时的应答技巧和注意事项,需要的朋友参考一下 调用顺序: int epoll_create(int size); int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event); int epoll_wait(int epfd, struc

  • 本文向大家介绍请你来说一说协程?相关面试题,主要包含被问及请你来说一说协程?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 1、概念: 协程,又称微线程,纤程,英文名Coroutine。协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。 例如: 由协程运行结果可能是12x3yz。在执行A的过程中,可以随时中断,去执行B,B也可能在

  • 本文向大家介绍请你说一说你理解的虚函数和多态?相关面试题,主要包含被问及请你说一说你理解的虚函数和多态?时的应答技巧和注意事项,需要的朋友参考一下 多态的实现主要分为静态多态和动态多态,静态多态主要是重载,在编译的时候就已经确定;动态多态是用虚函数机制实现的,在运行期间动态绑定。举个例子:一个父类类型的指针指向一个子类对象时候,使用父类的指针去调用子类中重写了的父类中的虚函数的时候,会调用子类重写