经常见到说一个进程在Kernel下用了多少时间,在User中用了多少时间,到底Kernel和User有什么区别呀?
解决方案 »
- GetClientRect(&rect)得到的是哪个区域的坐标?
- 驱动开发中,关于自旋锁的问题
- 怎样判断输入的数据与数据库中已有的数据重复
- 聊天室,非阻塞socket
- 对话框最小化于任务栏上的选项问题
- 关于计算机算法与设计的几个题目~~~~~~
- ::SendMessage(m_userlist.m_hWnd, LVM_SETEXTENDEDLISTVIEWSTYLE,LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);
- 有没有查找某个窗口,然后给予隐藏的源代码?
- 寻找一份在家的网格兼职工作,软件开发,网页美工等。Delphi、BCB、VC++
- 让VC里面的类看起不要这么多
- 用vc如何做 baidu hi,MSN,QQ2009的界面!
- VC自定义消息为什么要从WM_USER+100开始
kernel是windows系统内核,负责io,内存管理等,它不依赖其它模块。
user是windows用户接口服务模块,主要负责用户界面,它依赖于kernel、gdi模块及设备驱动程序等所有模块。
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能不能看的懂。了解操作系统的原理不是短时间内就能达到的。