面试记录中,有哪些细节需要注意?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1816个文字,预计阅读时间需要8分钟。
JVM线程分为用户态和内核态。运行在ring3级别时为用户态,ring0级别时为内核态。有些操作需要内核权限才能执行。存在三种用户态切换到内核态的情况:系统调用、操作系统的干预、内核态代码的执行。
JVM线程属于用户态还是内核态当进程运行在ring3级别时为用户态,ring0级别时为内核态
有些操作需要有内核权限才能进行,那么有三种由用户态切换到内核态的情况:
- 系统调用:操作系统封装内核指令,统一管理硬件资源,然后向用户程序提供系统服务,用户程序进行系统调用,操作系统进行检查确保安全然后再进行相应的资源访问操作。比如malloc(),print()调用write()系统输出字符串
- 异常事件:当cpu正在运行用户态程序,发生不可预知的异常事件,就会转用户态,比如缺页中断。
- 外围设备的中断:当外围设备完成请求就会向CPU发出中断信号,此时cpu暂停下一条要执行的指令,去执行中断信号所对应的程序
相同点和不同点:都是中断,但是系统调用是主动,其他都是被动
用户态和内核态线程的映射关系一对一(内核线程实现)
程序使用轻量级进程和内核线程产生映射
缺点:轻量级进程的数量有限制,执行效率低
多对一(用户线程实现)
优点:用户线程数量几乎无限制,执行效率高
缺点:一个用户线程阻塞,其他线程也会阻塞
多对多
UT 用户态线程 LWP 轻量级线程 KLT 内核态线程
优点:
- 一个用户线程的阻塞不会导致所有线程的阻塞,因为此时还有别的内核线程被调度来执行。
- 多对多模型对用户线程的数量没有限制。
本文共计1816个文字,预计阅读时间需要8分钟。
JVM线程分为用户态和内核态。运行在ring3级别时为用户态,ring0级别时为内核态。有些操作需要内核权限才能执行。存在三种用户态切换到内核态的情况:系统调用、操作系统的干预、内核态代码的执行。
JVM线程属于用户态还是内核态当进程运行在ring3级别时为用户态,ring0级别时为内核态
有些操作需要有内核权限才能进行,那么有三种由用户态切换到内核态的情况:
- 系统调用:操作系统封装内核指令,统一管理硬件资源,然后向用户程序提供系统服务,用户程序进行系统调用,操作系统进行检查确保安全然后再进行相应的资源访问操作。比如malloc(),print()调用write()系统输出字符串
- 异常事件:当cpu正在运行用户态程序,发生不可预知的异常事件,就会转用户态,比如缺页中断。
- 外围设备的中断:当外围设备完成请求就会向CPU发出中断信号,此时cpu暂停下一条要执行的指令,去执行中断信号所对应的程序
相同点和不同点:都是中断,但是系统调用是主动,其他都是被动
用户态和内核态线程的映射关系一对一(内核线程实现)
程序使用轻量级进程和内核线程产生映射
缺点:轻量级进程的数量有限制,执行效率低
多对一(用户线程实现)
优点:用户线程数量几乎无限制,执行效率高
缺点:一个用户线程阻塞,其他线程也会阻塞
多对多
UT 用户态线程 LWP 轻量级线程 KLT 内核态线程
优点:
- 一个用户线程的阻塞不会导致所有线程的阻塞,因为此时还有别的内核线程被调度来执行。
- 多对多模型对用户线程的数量没有限制。

