您的位置:程序门 -> vc/mfc -> 进程/线程/dll



kernel和user的区别是什么?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


kernel和user的区别是什么?[已结贴,结贴人:ggggqqqqihc]
发表于:2008-02-04 17:53:18 楼主
经常见到说一个进程在kernel下用了多少时间,在user中用了多少时间,到底kernel和user有什么区别呀?
发表于:2008-02-04 18:44:211楼 得分:0
它们都是windows的子系统,其中:
kernel是windows系统内核,负责io,内存管理等,它不依赖其它模块。
user是windows用户接口服务模块,主要负责用户界面,它依赖于kernel、gdi模块及设备驱动程序等所有模块。
发表于:2008-02-04 18:51:252楼 得分:20
这个还真不好解释。
windows系统分为两个特权级别,有人将其称为kernel级和user级。kernel级运行的是系统的核心代码和驱动程序;user级运行的是应用程序和服务程序。在user级执行的代码受到cpu保护机制的限制,很多事情都不能做,必须调用kernel级的代码来完成。
还是举个例子来说吧,比如一个应用程序要从一个文件中读出一些数据,你可以调用c运行库中的fread函数,fread中又会调用system32.dll中的readfile,readfile还要调用ntdll.dll中的zwreadfile,zwreadfile执行sysenter指令进入kernel级,调用ntreadfile内核服务,ntreadfile构造一个(或多个,根据需要)i/o请求包,发送给文件系统驱动程序,文件系统驱动程序计算出要读取的数据在磁盘中的位置,然后构造一个(或多个,根据需要)i/o请求包,发送给磁盘驱动程序,磁盘驱动程序再执行i/o指令从硬盘中读出数据,最后再逐步返回到应用程序。执行sysenter之后、执行sysexit之前,是运行在kernel级,其它都是运行在user级。执行各部分代码都是需要时间的,所以就有所谓的kernel下多少时间、user下多少时间了。
有些乱,不知道lz能不能看的懂。了解操作系统的原理不是短时间内就能达到的。
发表于:2008-02-04 20:34:593楼 得分:0
似乎有些明白了。

比如一个程序在做数值计算时是运行在user级的,而它一但要和硬件打交道,例如重新分配内存、读写文件时移动磁头等等,就切到kernel级上。

这样理解对吗?
发表于:2008-02-04 20:52:134楼 得分:0
发表于:2008-02-04 22:36:135楼 得分:0
非常感谢!


快速检索

最新资讯