Windows内核学习笔记(四)
杂项
特权模式和内核模式相同
系统进程
笔者学习到此处的时候开始怀疑原作者是否有自己看过他写的文章。(错别字)
我要不要换一篇文章阅读。
- 系统空闲进程(Idle):该进程的PID为0,其中每个处理器或核对应有一个线程。
- System 进程:这是操作系统的核心进程,PID为4。它负责管理内核模式下线程、设备驱动程序、中断处理和其他核心事件。
- 会话管理器(smss.exe):Windows系统中创建的第一个用户模式进程,在Windows启动过程中创建环境变量,(启动了子系统进程csrss.exe和登录进程winlogon.exe)。另外,它还负责创建新的终端服务器会话,包括建立会话空间的数据结构,为新建的终端服务器加载子系统。
- 登录进程(winlogon.exe):负责处理交互用户的登录和注销。
- Windows子系统进程(csrss.exe):负责为用户提供一个子系统环境。
- 本地安全权威子系统进程(lsass.exe):负责本地系统安全策略。
- Shell进程(explorer.exe):Windows的默认Shell,它提供了系统与用户打交道的各种界面,包括开始菜单、任务栏、资源管理窗口等几乎所有Windows用户都熟悉的界面。
- 服务控制管理器(services.exe):负责Windows的系统服务,指一些特殊的进程。
services比较常见,会启动注册为服务并且选择开机自启的一些特殊dll,或者在手动模式下被管理员权限的程序要求启动一些服务。
对于病毒来说是其中一个藏身地。另外一个藏身地是任务计划程序。
某些“病毒”会藏身于其中,并且不将自己注册为开机自启,而是每一个小时启动一次,这样可以逃避部分检查开机自启的程序。

只能说,非常天才,不愧是国产,脑子转得就是快。
既然它这样恶心我了,那我也只能把它装进沙盒里面了。
不过沙盒里面它也依旧能恶心我:

在思考他的云同步功能到底有没有那么重要,要不要换office。
内核态与用户态模式切换
一个指令流(即线程)在执行时,在以下情况会发生模式切换:
- 用户模式代码触发了异常,则控制流进入到内核模式,内核中的异常处理函数可以决定该控制流是否继续执行。
- 用户模式代码执行时,被一个中断打断,控制流进入特权模式,等中断处理例程完成后,它若调用iret/iretd指令,则控制流恢复到用户模式下。
- 执行特殊的模式切换指令,如Intel x86的sysenter指令,从用户模式切换到内核模式。若想从内核模式切换到用户模式,通常使用sysexit、iret/iretd这样的指令。
折折折,AI解析
这段内容主要描述了在计算机系统中,用户模式和内核模式之间的切换机制,以及在不同情况下控制流的转移和恢复过程。以下是对这段内容的详细解释:
用户模式与内核模式
- 用户模式:在这种模式下,程序只能访问受限的系统资源,不能直接访问硬件设备或执行一些敏感操作,以保证系统的稳定性和安全性。用户模式代码的执行受到较多限制,但可以运行大多数应用程序。
- 内核模式:也称为特权模式,是操作系统的核心部分运行的模式。在这种模式下,代码可以访问系统的全部资源,包括硬件设备、内存等,能够执行所有指令,具有较高的权限和控制能力,主要用于实现系统的核心功能,如进程管理、内存管理、设备驱动等。
异常处理
- 当用户模式代码触发异常时,例如访问非法内存地址、执行非法指令等,控制流会从用户模式转移到内核模式。内核中的异常处理函数会接管控制流,对异常情况进行处理。异常处理函数会根据异常的类型和严重程度,决定是修复异常并让控制流继续执行,还是终止异常的程序并进行相应的清理工作。例如,对于一些可以恢复的异常,如页面错误(访问的内存页面未在物理内存中),内核可以通过页面置换算法将所需的页面加载到内存中,然后让程序继续执行;而对于一些不可恢复的严重异常,如非法指令,内核可能会终止该程序的运行,释放其占用的资源。
中断处理
- 在用户模式代码执行过程中,可能会被外部中断或内部中断打断。中断发生时,控制流也会进入特权模式,即内核模式。内核中的中断处理例程会处理中断请求,例如响应硬件设备的中断信号,读取或写入数据等。当中断处理完成后,如果中断处理例程调用了
iret/iretd指令(在x86架构中,iret用于实模式和保护模式下的中断返回,iretd用于32位保护模式下的中断返回),则控制流会恢复到用户模式下,继续执行被中断的用户模式代码。这种机制使得操作系统能够在用户程序运行时及时响应外部事件,保证系统的实时性和响应性。
特殊模式切换指令
- 从用户模式切换到内核模式:可以通过执行特殊的模式切换指令来实现。例如,在Intel x86架构中,sysenter指令是一种快速从用户模式切换到内核模式的指令。它通过设置一些特定的寄存器和控制位,将控制流转移到内核中的指定入口点,以便执行内核模式下的代码,如系统调用等。这种指令通常用于提高系统调用的效率,减少模式切换的开销。
- 从内核模式切换到用户模式:通常使用sysexit、iret/iretd等指令。sysexit是与sysenter相对应的指令,用于从内核模式快速返回到用户模式。而iret/iretd指令也可以用于从内核模式切换到用户模式,它们会恢复之前保存的用户模式下的寄存器状态和程序计数器等信息,使控制流回到用户模式下继续执行。这些指令的使用需要根据具体的系统架构和上下文环境来选择,以确保模式切换的正确性和高效性。
总的来说,这段内容阐述了用户模式和内核模式之间的切换机制,包括异常处理、中断处理以及特殊模式切换指令的使用,这些机制对于操作系统的正常运行和资源管理至关重要,能够保证系统在不同模式下高效、安全地执行代码,同时及时响应各种事件和异常情况。

浙公网安备 33010602011771号