操作系统
操作系统
目的:
- 管理软硬件资源
- 组织程序运行,提升CPU性能
- 提供系统调用接口
四大功能:
- 进程管理
- 内存管理
- 设备管理
- 文件系统
特征:
- 并发性
- 共享性
- 虚拟性
- 随机性
典型操作系统:Windows、Linux、Android、macOS、IOS
进程管理
执行方式:
- 顺序执行
- 并发执行
进程:操作系统资源分配、保护和调度的基本单位。
线程:处理器调度和分派的基本单位。
进程与线程的区别和联系:
- 线程是进程的组成部分,进程通常由多个线程组成
- 进程是拥有资源的基本单位,线程是调度和分配的基本单位
三态模型:
- 就绪状态:进程在内存中已经具备执行的条件,等待分配CPU
- 运行状态:进程占用CPU并正在运行
- 阻塞状态:等待状态
PCB:进程控制块,操作系统最重要的数据结构之一,由三部分组成:
进程标识信息
- 内部标识符:操作系统管理进程时使用
- 外部标识符:用户访问进程时使用
现场信息–执行进程时CPU的即时状态
控制信息
进程控制方式:核心态(管态)$\longleftrightarrow$ 用户态(目态)
互斥与同步:
- 死锁:进程陷入无限等待状态,永远无法被执行
- 饥饿:进程长期不被执行
临界资源:某些资源在同一时刻只允许一个进程使用。
同步机制:
- 锁
- 信号量(P、V原语操作)
- 管程(临界资源统一管理)
- 消息传递
经典同步问题:
- 生产者-消费者问题
- 读者-写者问题
- 哲学家就餐问题
- 睡眠理发师问题
进程通信:
- 消息传递
- 共享内存
- 管道
进程调度算法:
- 先来先服务(FCFS)
- 短作业优先(SJF)
- 最短剩余时间优先(SRTF,抢占式)
- 高响应比优先(HRRF)
- 优先权(HPF,抢占式)
- 时间片轮转(RR,抢占式)
- 多级反馈队列(MFQ)
死锁的四个必要条件:
- 互斥条件:资源的使用是互斥的
- 请求与保持条件:进程请求资源时若无法得到,已得到的资源也不会释放
- 不剥夺条件:只能由进程自身主动释放资源,系统或其他进程不能剥夺
- 环路等待条件:若干进程形成环路,每个进程都在等待资源,形成永远等待
死锁的避免:银行家算法
死锁的检测与解除:
- 重启
- 撤销(撤销进程)
- 剥夺(再分配资源)
- 回滚(回退)
内存管理
内存分为两块区域:
- 系统区–操作系统
- 用户区–内存管理
功能:
- 内存的分配和回收
- 实现地址转换
- 内存的共享和保护
- 内存扩充
地址转换:
静态重定位
- 实现简单,无需硬件支持
- 必须为程序分配一段连续的存储空间,程序执行过程中不能在内存中移动
动态重定位
- 内存使用更灵活,容易实现内存的动态扩充和共享
- 需要硬件支持,内存管理更加复杂
分区内存管理(连续):
- 单一连续内存管理(单用户单任务)
- 固定分区内存管理(多道程序并发设计)
- 可变分区内存管理
页式存储管理(非连续):
页 $\longleftrightarrow$ 物理块
页表:存储页号与物理块号的对应关系
快表:高速缓冲处理器
段式存储管理(非连续)
分段和分页的比较:
段
- 信息的逻辑单位,由源程序的逻辑结构决定,用户可见
- 段长可由用户规定
- 段起始地址可以为任何地址
- 源程序经连接装配后仍保持二维结构
页
- 信息的物理单位,与源程序的逻辑结构无关,用户不可见
- 页长由系统确定
- 页面只能以页大小的整数倍地址开始
- 源程序经连接装配后为一维结构
虚拟存储技术:外存作为内存的扩充。
设备管理
功能:
- 设备的分配与回收
- 缓冲区管理
- 设备控制和中断处理
- 实现虚拟设备
控制方法:
- 程序循环查询
- 中断驱动
- 直接内存(DMA)
- 通道方式(I/O通道)
缓冲技术:
改善中央处理器与外部设备之间速度不匹配的矛盾
减少I/O对CPU的中断次数,放宽对CPU中断响应时间的要求
协调逻辑记录大小与物理记录大小不一致的问题
文件系统
文件分类:
逻辑结构
- 流式文件
- 记录式文件
用途
- 系统文件
- 库文件
- 用户文件
性质
- 普通文件
- 目录文件
- 特殊文件
物理结构:
连续文件(信息存放在相邻物理块中)
链接文件
- 隐式链接
- 显示链接(文件分配表FAT)
索引文件
直接文件(哈希函数)
存取方式:
顺序存取
直接存取
按键存取
磁盘空闲空间的管理:
- 空闲区表法
- 空闲块链表法
- 位示图法
目录文件:
文件控制块(FCB):文件属性信息和文件内容信息
FCB 的有序集合称为文件目录
组织方式
- FCB 线性表
- 索引节点(常用)
- 哈希表
文件共享:
静态共享
- 基于索引节点的链接静态共享
- 实现简单、访问速度快
- 只能用于单个文件系统,不能用于目录共享
- 符号链接静态共享(软链接)
- 能用于链接计算机网络中不同机器的文件
- 扫描包含文件的路径开销大,需要额外空间存储路径
- 基于索引节点的链接静态共享
动态共享(位移指针)