【刷题Day25】用户态和内核态、Reactor、虚拟内存(浅)
什么是用户态和内核态?
用户态(User Mode)和内核态(Kernel Mode)是操作系统中的两种运行模式,用于区分应用程序与操作系统内核的操作权限。
两者区别在于权限级别:
- 用户态:应用程序在用户态下运行,权限较低,不能直接访问硬件或进行特权操作。应用程序需要通过系统调用与内核进行通信,由内核代为执行敏感操作。用户态的优势是安全性高,即使程序出现问题也不会影响操作系统的稳定性。
- 内核态:内核态是操作系统内核运行的模式,具有最高的权限,可以直接访问硬件资源和执行各种特权操作(如内存管理、进程调度)。当程序执行系统调用或硬件中断时,操作系统会将其切换到内核态。
到底什么是 Reactor?
Reactor是一种处于并发I/O事件的设计模式,特别适合于网络服务器的开发。它通过事件驱动机制和非阻塞I/O,能够高效地处理大量并发连接。
Reactor模式的核心思想是将I/O事件与响应的处理程序解耦,并通过事件分发器(Event Demultiplexer)来管理事件和响应操作。
Reactor的工作方式:
- 事件驱动:Reactor通过监听多个事件源(如Socket连接、读写事件),在有事件发生时调用对应的处理程序(Handler)。
- 非阻塞I/O:使用非阻塞I/O模型,Reactor能够在单个或少数线程中高效处理大量I/O操作,避免了线程的频繁切换。
- 事件分发与处理:Reactor会将收到的事件(如连接到达、数据可读、数据可写)分发给响应的事件处理器,处理器对事件进行处理。
为什么要有虚拟内存?
虚拟内存的主要作用是提升系统效率和简化内存管理。
- 内存扩展能力:
- 虚拟内存允许程序运行在比实际物理内存大的地址空间上。即使物理内存不足,系统也可以通过交换(swapping)将不常用的内存页移到磁盘中,使得多个程序能够同时运行。
- 进程隔离:
- 每个进程拥有独立的虚拟地址空间,防止进程内的内存访问冲突,提高系统稳定性和安全性。
- 使用虚拟内存,操作系统可以通过页面表设置访问权限,防止非法访问。
- 简化内存管理:
- 操作系统可以更灵活地分配和回收内存,无需手动考虑物理内存布局问题。
- 虚拟内存可以将程序逻辑地址与物理地址解耦