操作系统基础
什么是操作系统
- 操作系统是管理计算机硬件与软件的资源的程序。(所有应用程序都通过操作系统来调用系统内存以及磁盘等硬件)
- 操作系统屏蔽了硬件的复杂性
- 内核是操作系统的核心,它负责系统的内存和硬件设备的管理,文件系统以及应用程序的管理。内核是连接应用程序和硬件的桥梁,决定着系统的性能和稳定性。
操作系统有哪些组成部分
- 进程管理:进程的创建,撤销,阻塞,唤醒,进程间通信等。
- 存储管理:内存的分配和管理,外存(磁盘)的分配和管理
- 文件管理:文件的读写,创建和删除等
- 设备管理:完成设备的请求和释放(输入输出设备和外部存储设备等),以及设备启动等功能
- 系统调用:system call
- 安全管理:用户的身份认证,访问控制,文件加密等,以防止非法用户对系统资源的访问和操作
用户态和内核态
-
什么是用户态内内核态
- 用户态
用户态运行的进程可以读取用户程序的数据,具有较低的权限。当应用程序需要执行某些特殊权限的操作,例如读写磁盘,网络通信等,就需要像操作系统发起系统调用的请求,进入内核态。 - 内核态
内核态运行的进程几乎可以访问计算机任何资源包括内存空间,设备和驱动程序等,不受限制,拥有非常高的权限。当操作,系统接收到进程的系统调用请求时,就会从用户态切换到内核态,执行相应的系统调用,并返回结果给进程,最后再从内核态切换回用户态。
注意: 进入内核态具有较高的开销(需要进行一系列的上下文切换和权限检查),应该尽量减少进入内核态的次数,以提高系统的吸能和稳定性。
- 用户态
-
为什么要有内核态和用户态,只有内核态可以吗?
- 在CPU的所有指令中,有一些是比较危险的,比如内存分配,设置时钟,IO处理等, 如果一般程序都能使用这些指令的话,会对系统造成灾难性的影响,因此需要限制这些指令只能在内核态运行,这些指令也叫做特权指令
- 所有进程和程序都共享系统资源,例如,内存,CPU,磁盘等,这将导致系统资源的竞争和冲突,这也会让系统安全性降低,毕竟所有的程序和进程此时都有相同的特权级别和访问权限。
-
用户态和内核态是如何切换的?
- 系统调用(Trap):用户态主动切换到内核态的一种方式,目的为了使用内核态才能完成的任务(比如读取磁盘)。核心是操作系用为用户特别开放的一种中断。
- 中断(Interrupt):外围设备完成用户请求的操作,会像CPU发出相应的中断信号,这时CPU暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令发生在用户态,那么也就自然产生了由用户态到内核态的转换,比如磁盘读写操作完成。
- 异常(Exception):当CPU执行运行在用户态程序时,发生了某些不可知的异常,这是会除法处理此异常的内核相关程序,也就转到了内核态,比如缺页异常。
-
系统调用
凡是与系统级资源有关的操作(如文件管理,进程管理,内存管理等),都必须通过系统调用方式像操作系统提出服务请求,并由操作系统代为完成。
主要涉及到:设备管理,文件管理,进程管理,内存管理等。
基本过程- 用户态程序发起系统调用,系统调用因为涉及到一些特权指令,用户态程序权限不足,因此会发生中端。(用户态调用"陷入指令"触发中断?)
- 发生中断,CPU暂停当前任务,跳转到中断处理程序
- 内核处理完成后,主动触发Trap中断,切换回用户态工作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了