用户态和内核态的区别
你是世界的一杆称,一头重一头轻。 –RuiDer
--大侄子的纪念日2018-8-27
before
本篇文章是我在学习Java的
synchornized
锁底层原理时碰到的一个知识点,了解过synchornized
底层原理的都会知道重量级锁中线程的阻塞和唤醒操作,这两种操作涉及到系统的调用,线程从用户态和内核态的切换,其开销非常大。
用户态和内核态的区别(转载)
内核态与用户态是操作系统的两种运行级别,当程序运行在3级特权级上时,
就可以称之为运行在用户态,因为这是最低特权级,是普通的用户进程运
行的特权级,大部分用户直接面对的程序都是运行在用户态;反之,当程
序运行在0级特权级上时,就可以称之为运行在内核态。运行在用户态下
的程序不能直接访问操作系统内核数据结构和程序。当我们在系统中执行
一个程序时,大部分时间是运行在用户态下的,在其需要操作系统帮助完
成某些它没有权力和能力完成的工作时就会切换到内核态。
这两种状态的主要差别是: 处于用户态执行时,进程所能访问的内存空间
和对象受到限制,其所处于占有的处理机是可被抢占的 ; 而处于核心态
执行中的进程