### 操作系统的概述
#### OS的定义与主要目标
操作系统(Operating System,简称OS)作为计算机硬件和应用程序之间的桥梁,其重要性不言而喻。它不仅管理着计算机硬件资源,还为用户提供友好的交互界面,并确保软件高效稳定地运行。设计现代操作系统的主要目标包括四个方面:方便性、有效性、可扩充性和开放性。
- **方便性**:使用户能够方便地使用系统资源。
- **有效性**:提高资源利用率和系统效率。
- **可扩充性**:易于扩展以适应新硬件或功能需求。
- **开放性**:遵循标准协议和技术规范,支持不同系统间的通信和数据交换。
#### OS的分类
根据不同的应用领域和设计特点,操作系统可以分为多种类型:
- **批处理系统**:主要用于大量数据处理,无需用户干预。
- **分时系统**:允许多个用户同时使用计算机资源,每个用户感觉像拥有一个专用的计算机。
- **实时系统**:对时间和可靠性的要求极高,常用于控制系统或嵌入式设备。
- **个人计算机操作系统**:针对个人电脑设计,如Windows、macOS等。
- **分布式系统**:多个计算机协同工作,共同完成任务,用户感觉像是在一个统一的系统中工作。
#### CPU的工作模式
CPU在运行过程中通常有两种工作模式:用户模式和管理模式。
- **用户模式**:用户程序运行在此模式下,只能执行非特权指令。
- **管理模式**:操作系统内核运行在此模式下,可以执行任何指令,包括特权指令。
#### 特权指令与系统调用
- **特权指令**:仅在管理模式下才能执行的指令,如修改硬件状态等。
- **访管指令**:用于将系统从用户模式切换到管理模式。
- **系统调用**:操作系统提供给编程人员的唯一接口,用于请求操作系统服务。
#### 内存保护机制
为了保证系统的安全性和稳定性,操作系统会实施一系列内存保护措施:
- **基地址寄存器**:限制进程访问低于某个地址的内存区域。
- **边界寄存器**:限制进程访问高于某个地址的内存区域。
- **CPU保护**:防止用户程序直接访问某些关键内存区域。
### 进程与线程
#### 进程概念
- **进程**:操作系统进行资源分配和调度的基本单位,由程序段、数据段及进程控制块(PCB)组成。
- **进程特性**:动态性、独立性、并发性。
- **进程状态**:运行、就绪、阻塞三种基本状态及其相互转换。
#### PCB的作用
进程控制块(PCB)是描述和表示一个进程的数据结构,它是进程存在的唯一标志,包含了进程的所有相关信息。
#### 线程的概念
- **线程**:进程内的轻量级实体,是CPU调度和分派的基本单位。
- **线程与进程的关系**:线程必须依附于进程而存在,共享进程的资源但拥有独立的栈空间和寄存器。
#### 进程互斥与同步
- **进程互斥**:解决多进程竞争同一资源的问题,保证同一时刻只有一个进程访问资源。
- **临界资源**:必须互斥访问的共享资源。
- **临界区**:程序中访问临界资源的那一段代码。
- **信号量机制**:用于实现进程间互斥和同步的一种方法,通过P、V操作来控制资源的访问。
#### 进程调度
- **调度算法**:如先来先服务(FCFS)、最短作业优先(SJF)、轮转(RR)等。
- **调度参数**:周转时间、等待时间、响应时间等衡量调度效果的指标。
### 死锁处理
#### 死锁概述
- **定义**:两个或两个以上的进程无限期地等待永远不会发生的事件,导致它们无法继续执行。
- **发生原因**:对资源的竞争导致四个必要条件同时满足。
#### 四个必要条件
- **互斥条件**:至少有一个资源必须处于非共享模式。
- **请求和保持条件**:进程已持有某种资源,但又请求新的资源。
- **不可抢占条件**:进程持有的资源不能被其他进程抢占。
- **环路等待条件**:形成一个进程等待资源的环路。
#### 应对策略
- **无为而治**:接受死锁的存在,通过定期检查并恢复的方式处理。
- **死锁预防**:打破其中一个必要条件,防止死锁的发生。
- **死锁避免**:使用银行家算法等技术,在分配资源前判断是否会导致不安全状态。
- **死锁检测和恢复**:通过周期性扫描系统状态检测死锁,采取剥夺资源、进程回退或撤销等方式恢复。
通过对操作系统概念、设计目标、分类以及核心机制的深入理解,我们可以更好地掌握操作系统如何管理和协调计算机系统的各种资源,为用户和应用程序提供高效稳定的服务。