计算机操作系统
大家好呀!我是小笙,本章我主要分享计算机操作系统 - 概述学习总结,希望内容对你有所帮助!!
计算机操作系统
概述
为什么要学操作系统?
因为我们要重走从无到有的发现历程!
- 理解学科中的基本动机、基本方法、里程碑、走过的弯路
- 基本动机:更快更好地服务更多应用
- 基本方法:"Building Abstractions " (构建抽象)
- 里程碑:UNX,Linux…
- 最终目的:应用、创新、革命
到底什么是操作系统?
计算机层次结构
操作系统是软件和硬件之间的桥梁

用户视角
直接提供给用户最直接的使用是图形用户界面 GUI,同时也可以使用命令接口来调用,例如 windows 系统里面的 CMD 命令窗口
应用程序视角
换句话说,用应用程序的视角去看待操作系统,可以理解为有一类软件负责让程序运行变得容易(甚至允许你同时运行多个程序),允许程序共享内存,让程序能够与设备交互,以及其他类似的有趣的工作,这些软件称为操作系统
那什么是程序?程序又是怎么执行的?
无情的、执行指令的状态机
- 从 M[PC] 取出一条指令
- 执行它
- 循环往复
硬件视角
操作系统作为计算机硬件的核心调度者,直接管理底层物理资源并构建硬件抽象层
硬件抽象层也可以称为硬件的虚拟化,也就是说,操作系统将物理资源(如处理器、内存或磁盘)转换为更通用、更强大且更易于使用的虚拟形式。例如,文件系统将磁盘块抽象为连续字节流,屏蔽存储介质差异
因此,我们有时将操作系统称为虚拟机
操作系统的特征
- 理论视角:四大特征(并发、共享、虚拟、异步)是经典答案
- 工程视角:虚拟化、并发、持久性更贴近模块化设计
下文主要讲述工程视角下的操作系统三大特征
虚拟化(Virtualization)
虚拟化是操作系统将物理资源(CPU、内存、磁盘)抽象为更易用的逻辑形式的核心技术,使得每个进程或用户感觉独占资源
-
CPU虚拟化:通过进程调度算法(如时间片轮转、多级反馈队列)将单核CPU分割为多个虚拟CPU,每个进程获得“独占CPU”的假象
#include <stdio.h> #include <unistd.h> // CPU虚拟化代码示例 int main() { pid_t pid = fork(); // 创建子进程 if (pid == 0) { // 子进程执行逻辑 for (int i=0; i<3; i++) { printf("Child process running (PID=%d)\n", getpid()); sleep(1); } } else { // 父进程执行逻辑 for (int i=0; i<3; i++) { printf