2025.1.2复习
1.2024年7.4-7.8学习总结/暑假day7-112.2024.6.6学习java&算法3.2024年6.7--6.17学习总结4.2024年7.3学习总结/暑假day65.2024年6.27-7.2学习总结/暑假day1--56.2024年6.23-6.26学习总结7.2024年6.18-6.22学习总结8.2024年7.9-7.19学习总结/暑假day12-229.2024年7.26-7.29学习总结/day29-3210.编程日记 批量导入数据11.编程日记 后端使用redis12.编程日记 更改redis存储默认序列化器13.ide启动多个实例14.session和cookie15.java多线程16.bupt_os_lab117.11.12 ali-oss上传图片18.sql 166119.bupt_os_lab220.11.18 学习21.11.21 打工22.IntelliJ IDEA格式化快捷键失效23.leetcode78 子集24.leetcode39 组合总和25.11.30学习日记26.12.6详解前后端对接27.2024.12.9 小bug28.12.23软工踩坑29.leetcode 104530.2024.12.26 os lab331.2024.12.27复习日记32.一文搞定宝塔LINUX部署上线前后端分离项目
33.2025.1.2复习
34.leetcode 178935.leetcode131 分割回文串36.2025.1.13 redis乱码问题解决37.2025.1.15 学习38.2025.2.17 学习39.2025.2.18 学习40.2025.2.19 学习41.2025.2.24学习42.git clone问题解决43.2025.2.27 学习44.2025.3.4 学习2025.1.2复习
用户态(User Mode)执行的任务:
- 运行用户程序
- 应用程序(如浏览器、文本编辑器、游戏等)通常在用户态下运行。
- 用户态程序没有直接访问硬件和系统资源的权限,它们只能通过系统调用来请求操作系统的服务。
- 内存管理
- 用户态进程使用的是虚拟内存。用户程序可以访问其虚拟地址空间,但不能直接访问物理内存,必须通过操作系统提供的虚拟内存机制来管理。
- 输入输出(I/O)请求
- 用户程序进行文件读写、网络通信等操作时,通常会通过系统调用(如
read()
、write()
、open()
)请求内核的服务。虽然这些操作的请求是在用户态发起的,但实际的硬件访问是在内核态执行的。
- 用户程序进行文件读写、网络通信等操作时,通常会通过系统调用(如
- 进程执行
- 在正常的程序执行过程中,程序指令在用户态运行。这些指令是由用户代码编写的,不涉及操作系统的内核服务。
- 系统调用
- 用户态程序通过系统调用(例如
fork()
、exec()
、exit()
)请求操作系统服务时,会从用户态切换到内核态,完成操作后再返回用户态。
- 用户态程序通过系统调用(例如
内核态(Kernel Mode)执行的任务:
- 进程调度
- 操作系统在内核态中进行进程调度,决定哪个进程可以运行,哪个进程被挂起。
- 内核管理进程的生命周期,包括进程创建、终止、切换等。
- 内存管理
- 内核负责管理系统的物理内存和虚拟内存,包括分页、分配内存块、内存保护等。
- 内核会通过内存分配器为用户程序和内核本身分配内存,并处理内存中的页面错误(如页面缺失)。
- 硬件交互
- 所有直接的硬件操作(如磁盘、网络、显示器、打印机等)都是由操作系统的内核在内核态中完成的。
- 内核通过设备驱动程序与硬件通信,提供硬件抽象层。
- 中断和异常处理
- 当发生硬件中断(如键盘输入、定时器中断)或软件异常(如除零、非法内存访问)时,处理程序会进入内核态。
- 操作系统在内核态处理中断、异常,确保进程状态的保存和恢复。
- 系统调用处理
- 当用户程序通过系统调用请求操作系统服务时,操作系统会在内核态中处理这些请求。例如,进行文件读写、网络通信等操作时,内核会负责实际的I/O操作。
- 文件系统操作
- 内核负责管理文件系统,处理文件的打开、关闭、读取、写入等操作。
- 文件系统操作通常需要内核提供低级别的文件管理和硬件访问。
- 网络协议处理
- 网络通信协议(如 TCP/IP)栈的处理在内核态进行,网络数据包的接收、发送、路由等都由内核来完成。
- 内核线程与内核任务
- 内核态中还存在一些内核级线程或任务(如定时器中断处理、硬件监控等),它们在内核态运行,确保系统的正常运行。
内核态和用户态之间的切换:
- 系统调用:用户态程序通过系统调用切换到内核态,请求操作系统提供服务。比如,文件操作、内存分配、进程管理等。
- 中断:硬件或软件中断会使得CPU从用户态切换到内核态,以便操作系统能够处理外部设备的请求或程序异常。
- 上下文切换:操作系统通过进程调度切换不同的进程,并在用户态和内核态之间切换执行。
总结:
- 用户态:程序执行用户代码、访问用户内存、请求系统服务。
- 内核态:操作系统执行进程管理、内存管理、硬件交互、中断处理、系统调用等关键操作,具有更高的权限。
内核态和用户态的切换通常会带来一定的性能开销,因此操作系统尽量减少在用户程序执行期间进入内核态的次数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构