社区
Linux_Kernel
帖子详情
关于进程的用户态和内核态
mtlx1986
2011-05-05 08:50:44
在操作系统中,一个进程从用户模式切换至内核模式,需要系统调用产生中断,但是我不明白的是既然切换到内核模式应该执行的是系统进程,因为用户的进程已被中断。那进程的这两个状态应该怎么理解呢? 刚学操作系统,求大神赐教。
...全文
1221
15
打赏
收藏
关于进程的用户态和内核态
在操作系统中,一个进程从用户模式切换至内核模式,需要系统调用产生中断,但是我不明白的是既然切换到内核模式应该执行的是系统进程,因为用户的进程已被中断。那进程的这两个状态应该怎么理解呢? 刚学操作系统,求大神赐教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xgbing
2012-08-09
打赏
举报
回复
关键还是权限的理解,
就像你在linux下以普通用户的身份要删除root下的一个文件,你要先切换到root然后再删除文件,再退出root身份进入到普通用户身份。整个过程就是一个进程。
xgbing
2012-08-09
打赏
举报
回复
当一个任务(进程)执行系统调用而陷入内核代码中执行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用户态)。
草原苍狼
2011-07-04
打赏
举报
回复
说的很有道理,初学者关注中~~
deguodeguo
2011-06-02
打赏
举报
回复
http://baidu.com
bradsnow
2011-05-22
打赏
举报
回复
学习...
Wenxy1
2011-05-11
打赏
举报
回复
进程运行时, 在用户空间运行即进程的用户态, 在内核态运行时即进程的内核态(例如进入系统调用, 调用fopen()或者open()打开一个文件,此进程即进入了内核态), 一般地指进程的上下文..
wf521yezi
2011-05-10
打赏
举报
回复
进程在创建的时候除了创建进程的控制块之外,在内核里还创建了进程的内核栈,进程通过系统调用进入内核后,是指向在进程的上下文上的。
专业心灵清洁工
2011-05-07
打赏
举报
回复
正解
[Quote=引用 7 楼 qust_sunqiyuan 的回复:]
通常操作系统把虚拟地址空间划分为用户空间和内核空间,例如x86平台的Linux系统虚拟地址空间是0x00000000~0xffffffff,前3GB(0x00000000~0xbfffffff)是用户空间,后1GB(0xc0000000~0xffffffff)是内核空间。用户程序加载到用户空间,在用户模式下执行,不能访问内核中的数据,也不能跳转到内核代码中执行。这样可以保护内核,如果一个进程访问了……
[/Quote]
qust_sunqiyuan
2011-05-06
打赏
举报
回复
通常操作系统把虚拟地址空间划分为用户空间和内核空间,例如x86平台的Linux系统虚拟地址空间是0x00000000~0xffffffff,前3GB(0x00000000~0xbfffffff)是用户空间,后1GB(0xc0000000~0xffffffff)是内核空间。用户程序加载到用户空间,在用户模式下执行,不能访问内核中的数据,也不能跳转到内核代码中执行。这样可以保护内核,如果一个进程访问了非法地址,顶多这一个进程崩溃,而不会影响到内核和整个系统的稳定性。CPU在产生中断或异常时不仅会跳转到中断或异常服务程序,还会自动切换模式,从用户模式切换到特权模式,因此从中断或异常服务程序可以跳转到内核代码中执行。事实上,整个内核就是由各种中断和异常处理程序组成的。总结一下:在正常情况下处理器在用户模式执行用户程序,在中断或异常情况下处理器切换到特权模式执行内核程序,处理完中断或异常之后再返回用户模式继续执行用户程序。
Arnold9009
2011-05-06
打赏
举报
回复
新手区分清楚概念很重要。。。。。
小魔菇
2011-05-06
打赏
举报
回复
2
进程本身就包含用户态和内核态
进入内核态中还是在本进程上下文 除非时间片完了 或者自己放弃CPU 进行了进程切换
没有“进程进入内核态就切换到内核线程执行”的说法
chenxiancool
2011-05-06
打赏
举报
回复
进程就是程序的执行过程,所谓内核态和用户态是指你现在执行的代码是在内核空间还是在用户空间,并不是所谓的进程切换。比如在用户进程A中调用了内核系统调用来获取当前的时钟滴答数,在执行用户进程A中的系统调用指令时,会保存当前用户进程的IP,CS等当前寄存器状态,然后再跳转到内核空间(即内核代码区域)去执行像应的系统调用函数,获取当前的时钟滴答数。执行完后再通过IRET指令返回到进程A中(就是将进入时保存的信息再复位到相应的寄存器中),再接着从CS:EIP地址开始执行A进程的指令。CPU只是执行指令,至于哪条置零就是相应寄存器的事了,如果选择性的执行某些地址的指令就是出现了多进程切换。呵呵,以上纯属个人见解,如有不当,请谅解。
mtlx1986
2011-05-06
打赏
举报
回复
谢谢,我还是不太明白。是不是使用宏内核的操作系统,进行系统调用时,执行进程状态的切换,用以执行内核代码。微内核的操作系统,进行的是进程切换?windows操作系统里不是有系统进程吗,专门执行内核的代码?求详解。谢谢
YTerrenceLau
2011-05-05
打赏
举报
回复
没有系统进程这一说,进程就是进程,分别工作在用户态和内核态,在内核态工作仍旧是这个进程,除非进行了进程切换。
yuanlulu
2011-05-05
打赏
举报
回复
切换到内核态的是系统调用。当系统调用返回时,也便返回了用户态
linux
内核
进程
,【性能】关于Linux
进程
的
用户
态
、
内核
态
和
内核
线程
一、
用户
态
、
内核
态
内核
空间是共享的,存在整个
内核
的代码和所有的
内核
模块以及
内核
所维护的数据。
进程
在运行时一般会处于两种状
态
:
用户
态
,
内核
态
。
用户
态
是指
进程
在
用户
代码中运行。
内核
态
是指
进程
进入
内核
代码,执行
内核
的代码。
用户
态
:Ring3运行于
用户
态
的代码则要受到处理器的诸多检查,它们只能访问映射其地址空间的页表项中规定的在
用户
态
下可访问页面的虚拟地址,且只能对任务状
态
段(TSS)中I/O许可位图(I...
用户
态
进程
与
内核
态
进程
的区别详解
本篇博文将以通俗易懂的方式,详细讲解
用户
态
进程
与
内核
态
进程
的不同点,并结合实际案例,帮助读者更好地理解 Linux
进程
的运行模式。
内核
态
进程
是指运行在**
内核
态
(Kernel Mode)**的
进程
,通常是
内核
自身的任务,例如
进程
调度、内存管理、设备驱动等。当
用户
态
进程
访问一个不在内存中的页面时,CPU 会触发缺页异常,此时
进程
会切换到
内核
态
,由操作系统负责加载缺失的页面。
用户
态
进程
是普通应用程序的运行实例,例如你使用的浏览器、文本编辑器、游戏等,都是运行在
用户
态
的
进程
。,就可能破坏整个系统。
进程
的
用户
态
和
内核
态
进程
的
用户
态
和
内核
态
进程
用户
态
和
内核
态
及其切换过程
1.
进程
的堆栈
内核
在创建
进程
的时候,会为
进程
创建相应的堆栈。每个
进程
会有两个栈,一个
用户
栈,存在于
用户
空间,一个
内核
栈,存在于
内核
空间。当
进程
在
用户
空间运行时,CPU堆栈指针寄存器里面的内容是
用户
堆栈地址,使用
用户
栈;当
进程
在
内核
空间时,CPU堆栈指针寄存器里面的内容是
内核
栈空间地址,使用
内核
栈。 2.
进程
用户
栈和
内核
栈的切换 当
进程
因为中断或者系统调用而陷入
内核
态
之行时,
进程
所使用的堆栈也要从
用户
栈转到
内核
栈
用户
态
与
内核
态
深入探讨了
用户
态
与
内核
态
的概念,以及它们在操作系统中的重要作用。文章首先介绍了 CPU 指令集权限分级,解释了为什么操作系统需要区分
内核
态
和
用户
态
。随后,文章详细解析了虚拟地址空间的划分、
用户
空间与
内核
空间的区别,以及
进程
和线程在
用户
态
和
内核
态
下的运行机制。最后,文章探讨了
用户
态
到
内核
态
的切换方式,并分析了 JVM 线程的实现机制。
Linux_Kernel
4,465
社区成员
17,462
社区内容
发帖
与我相关
我的任务
Linux_Kernel
Linux/Unix社区 内核源代码研究区
复制链接
扫一扫
分享
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章