kernel和user的区别是什么?该如何处理
kernel和user的区别是什么?
经常见到说一个进程在Kernel下用了多少时间,在User中用了多少时间,到底Kernel和User有什么区别呀?
------解决方案--------------------
这个还真不好解释。
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能不能看的懂。了解操作系统的原理不是短时间内就能达到的。
经常见到说一个进程在Kernel下用了多少时间,在User中用了多少时间,到底Kernel和User有什么区别呀?
------解决方案--------------------
这个还真不好解释。
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能不能看的懂。了解操作系统的原理不是短时间内就能达到的。