1、基本概念
操作系统(OS):管理计算机硬件与软件资源的程序。
内核(Kernel):操作系统的核心部分,负责系统的内存管理、硬件设备的管理、文件系统管理以及应用程序的管理。是连接应用程序和硬件的桥梁。
硬件:CPU、控制器、存储器、输入/输出设备
软件:分为系统软件和应用软件,操作系统输入系统软件
用户态(User Mode) :用户态运行的进程可以直接读取用户程序的数据,拥有较低的权限。
内核态(Kernel Mode):内核态运行的进程几乎可以访问计算机的任何资源包括系统的内存空间、设备、驱动程序等,不受限制,拥有非常高的权限。
2、操作系统的功能
- 进程和线程的管理:进程的创建、撤销、阻塞、唤醒,进程间的通信等。
- 存储管理:内存的分配和管理、外存(磁盘等)的分配和管理等。
- 文件管理:文件的读、写、创建及删除等。
- 设备管理:完成设备(输入输出设备和外部存储设备等)的请求或释放,以及设备启动等功能。
- 网络管理:操作系统负责管理计算机网络的使用。网络是计算机系统中连接不同计算机的方式,操作系统需要管理计算机网络的配置、连接、通信和安全等,以提供高效可靠的网络服务。
- 安全管理:用户的身份认证、访问控制、文件加密等,以防止非法用户对系统资源的访问和操作。
3、常见的操作系统
1、Windows:个人桌面操作系统 。界面简单易操作,软件生态非常好。windows的内核一般为DOS或NT,现在大多为NT内核。
2、Unix:最早的多用户、多任务操作系统 。
3、Linux:免费使用、开源的类 Unix 操作系统。 Linux 存在着许多不同的发行版本,但它们都使用了 Linux 内核 。
4、Mac OS:苹果自家的操作系统,编程体验和 Linux 相当,但是界面、软件生态以及用户体验各方面都要比 Linux 操作系统更好。
5、Ubuntu:属于Linux操作系统中的一种但他有图形化的UI界面
4、Linux比Windows更适合编程:
1、Linux是开源的,开发者可以自由地查看其代码,并且根据需要进行修改和优化。
2、Linux内核具有更好的并发性能。传统的Windows内核共享单个内核锁,这会导致并发性能瓶颈。相反,Linux使用了分离的锁技术,即每个CPU拥有一个本地锁,这使得并行计算任务可以更好地利用多核CPU的优势。因此Linux相对于Windows在处理大量并行计算任务时表现出色。
3、Linux还具有更好的内存管理机制。在Windows系统中,每个进程都有自己的用户空间和内核空间,这会导致内存使用效率低下。然而,在Linux系统中,进程共享同一块虚拟地址空间,这意味着可以更好地利用物理内存资源。
4、Linux具有更好的文件系统性能。Linux的文件系统采用了日志式文件系统(journaling file system)技术,这使得文件系统的读写速度更快,同时也更加稳定和可靠。此外,Linux支持更广泛的文件系统类型,例如ext4、XFS和Btrfs等,可以更好地满足不同应用场景的需求。
5、Linux更安全、更稳定
5、用户态切换到内核态的三种方式
- 系统调用(Trap):用户态进程 主动 要求切换到内核态的一种方式,主要是为了使用内核态才能做的事情比如读取磁盘资源。系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现。
- 中断(Interrupt):当外围设备完成用户请求的操作后,会向 CPU 发出相应的中断信号,这时 CPU 会暂停执行下一条即将要执行的指令转而去执行与中断信号对应的处理程序,如果先前执行的指令是用户态下的程序,那么这个转换的过程自然也就发生了由用户态到内核态的切换。比如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后续操作等。
- 异常(Exception):当 CPU 在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关程序中,也就转到了内核态,比如缺页异常。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)