嵌入式系统设计师软考个人笔记<4>

一、操作系统概述

1.1 操作系统定义与作用

操作系统是管理和控制计算机硬件与软件资源的系统软件,作为用户与计算机硬件之间的接口,为用户和应用程序提供良好的运行环境。

1.2 操作系统的主要功能

  1. 资源管理:高效管理CPU、内存、I/O设备等硬件资源

  2. 程序控制:控制程序执行,改善人机交互

  3. 环境优化:合理组织工作站配置,提升系统性能

1.3 操作系统的基本特性

并发性 (Concurrency)
  • 定义:多个进程在同一时间段内交替执行

  • 实现:通过时间片轮转、优先级调度等机制

  • 与并行区别:并发是宏观上的同时,微观上交替;并行是真正的同时执行

共享性 (Sharing)
  • 资源共享方式:

    • 互斥共享:如打印机、磁带机(临界资源)

    • 同时访问:如磁盘、内存(可分时复用)

虚拟性 (Virtualization)
  • 核心技术:SPOOLing(假脱机)技术

  • 实现原理:使用物理设备模拟虚拟设备

  • 应用示例:

    • 虚拟内存:小内存运行大程序

    • 虚拟打印机:多用户共享打印设备

异步性 (Asynchronism)
  • 定义:多个进程以不可预知的速度向前推进

  • 原因:资源竞争、调度算法、外部事件等

  • 管理策略:同步机制(信号量、管程等)

二、进程管理

2.1 进程定义与组成

进程概念模型
复制代码
┌─────────────────────────────────┐
│          进程实体               │
├─────────────────────────────────┤
│ 程序块   │ 数据块   │ 进程控制块 │
│ (代码段) │ (数据段) │   (PCB)   │
└─────────┴──────────┴───────────┘
进程与程序的区别
对比维度 程序 进程
存在形式 静态的指令集合 动态的执行过程
生命周期 永久存储 创建→运行→终止
组成结构 代码文件 PCB+程序+数据
资源分配 不参与分配 资源分配的基本单位

2.2 进程状态与转换

三态模型及其转换

状态说明:

  1. 就绪态:具备运行条件,等待CPU分配

    • 特点:所有资源就绪,只缺CPU
  2. 运行态:正在CPU上执行

    • 特点:占用CPU,执行指令
  3. 等待态:等待某种事件发生

    • 特点:不占用CPU,等待I/O等事件

2.3 进程同步与互斥

临界资源与临界区
复制代码
// 临界区示例
void critical_section() {
    enter_critical_section();  // 进入临界区
    // 访问临界资源的代码
    access_shared_resource();
    leave_critical_section();  // 离开临界区
}
信号量与PV操作

信号量定义:

  • S ≥ 0:表示资源的可用数量

  • S < 0:|S|表示等待该资源的进程数

PV操作原语:

复制代码
// P操作(wait操作,申请资源)
void P(semaphore S) {
    S.value--;
    if (S.value < 0) {
        block(S.queue);  // 阻塞当前进程
    }
}

// V操作(signal操作,释放资源)
void V(semaphore S) {
    S.value++;
    if (S.value <= 0) {
        wakeup(S.queue);  // 唤醒等待进程
    }
}
复制代码
同步与互斥应用实例
复制代码
// 互斥访问示例(信号量初始值=1)
semaphore mutex = 1;

// 进程A
P(mutex);
// 访问临界资源
critical_operation();
V(mutex);

// 进程B
P(mutex);
// 访问临界资源
critical_operation();
V(mutex);

// 同步示例(生产者-消费者问题)
semaphore empty = N;   // 空缓冲区数量
semaphore full = 0;    // 满缓冲区数量
semaphore mutex = 1;   // 缓冲区互斥访问

// 生产者进程
producer() {
    while (true) {
        produce_item();
        P(empty);      // 等待空缓冲区
        P(mutex);      // 申请缓冲区访问权
        put_item();
        V(mutex);      // 释放缓冲区访问权
        V(full);       // 增加满缓冲区计数
    }
}

// 消费者进程
consumer() {
    while (true) {
        P(full);       // 等待满缓冲区
        P(mutex);      // 申请缓冲区访问权
        get_item();
        V(mutex);      // 释放缓冲区访问权
        V(empty);      // 增加空缓冲区计数
        consume_item();
    }
}
复制代码

三、存储管理

3.1 存储管理目标与功能

主要功能:

  • 内存分配与回收

  • 地址映射

  • 内存保护

  • 内存共享

  • 内存扩充(虚拟内存)

3.2 分区存储管理

固定分区分配

特点:

  • 预先划分固定大小的分区

  • 简单但内存利用率低

  • 存在内部碎片

可变分区分配

分配算法对比:

算法名称 原理 优点 缺点
首次适应 从低地址开始找第一个足够大的空闲区 简单快速 低地址端易产生碎片
最佳适应 找能满足要求的最小空闲区 减少大空闲区分割 产生大量小碎片
最坏适应 找能满足要求的最大空闲区 减少小碎片产生 大空闲区被消耗
循环首次适应 从上一次查找位置开始循环查找 空闲区分布均匀 缺乏大空闲区

3.3 分页存储管理

基本原理
复制代码
逻辑地址空间          物理地址空间
┌──────────┐        ┌──────────┐
│  页0     │        │  块2     │
│  页1─────┼───────>│  块5     │
│  页2     │        │  块8     │
│  页3─────┼───────>│  块1     │
└──────────┘        └──────────┘
    页表
地址转换过程
复制代码
逻辑地址 = 页号 + 页内偏移
        ↓
    查页表获取物理块号
        ↓
物理地址 = 物理块号 × 页大小 + 页内偏移

分页管理的优缺点:

  • 优点:

    • 内存利用率高

    • 碎片少(仅存在页内碎片)

    • 分配管理简单

  • 缺点:

    • 程序模块化性能较差

    • 页表占用空间大

    • 需要硬件支持(MMU)

3.4 段页式存储管理

结合分段与分页的优势
复制代码
逻辑地址 = 段号 + 段内页号 + 页内偏移
        ↓
段表→找到段描述符
        ↓
页表→找到物理块号
        ↓
物理地址 = 物理块号 × 页大小 + 页内偏移

段页式特点:

  • 优点:

    • 结合分段和分页的优点

    • 便于程序模块化管理

    • 支持内存保护和共享

  • 缺点:

    • 地址转换复杂

    • 硬件成本高

    • 需要多次访存

3.5 虚拟存储技术

虚拟内存原理
关键技术
  1. 请求分页系统:

    • 部分页面装入内存

    • 页面置换算法(FIFO、LRU、OPT等)

    • 缺页中断处理

  2. 页面置换算法对比:

    算法 原理 优点 缺点
    FIFO 淘汰最早进入的页面 实现简单 Belady异常
    LRU 淘汰最近最久未使用的页面 性能较好 实现复杂
    OPT 淘汰将来最长时间不用的页面 理论最优 无法实现
    Clock 循环扫描,淘汰访问位为0的页面 折中方案 可能效率低

四、设备管理

4.1 设备管理功能

核心任务:

  • 设备分配与回收

  • 设备驱动与控制

  • 设备无关性实现

  • 提高设备利用率

4.2 SPOOLing技术(假脱机)

SPOOLing系统组成
复制代码
┌─────────┐    ┌─────────┐    ┌─────────┐
│ 输入井 │←──┤输入进程│←──│ 输入设备 │
└─────────┘    └─────────┘    └─────────┘
      ↓
┌─────────┐    ┌─────────┐    ┌─────────┐
│ 输出井 │───→│输出进程│───→│ 输出设备 │
└─────────┘    └─────────┘    └─────────┘
SPOOLing技术特点:
  1. 虚拟设备:将独占设备变为共享设备

  2. 速度匹配:缓解CPU与I/O设备速度差异

  3. 提高利用率:设备可被多个进程共享使用

4.3 设备分配策略

分配方式:

  1. 静态分配:进程运行前分配所需全部设备

    • 优点:简单,不会死锁

    • 缺点:设备利用率低

  2. 动态分配:进程运行中根据需要分配

    • 优点:设备利用率高

    • 缺点:可能产生死锁

五、文件管理

5.1 文件目录结构

树形目录结构
复制代码
         根目录 /
         /     |     \
       bin   home   etc
              / \
          user1 user2
            /     \
        docs   downloads
路径表示
  • 绝对路径:从根目录开始的完整路径

    • 示例:/home/user1/docs/report.txt
  • 相对路径:从当前目录开始的路径

    • 示例:当前在/home/user1,docs/report.txt

5.2 文件存储管理

位示图管理
复制代码
// 位示图示例:用位表示磁盘块使用情况
#define DISK_BLOCKS 1024
#define BITMAP_SIZE (DISK_BLOCKS / 8)

unsigned char bitmap[BITMAP_SIZE];

// 分配磁盘块
int allocate_block() {
    for (int i = 0; i < BITMAP_SIZE; i++) {
        for (int j = 0; j < 8; j++) {
            if (!(bitmap[i] & (1 << j))) {
                bitmap[i] |= (1 << j);
                return i * 8 + j;
            }
        }
    }
    return -1; // 无空闲块
}

// 释放磁盘块
void free_block(int block_no) {
    int i = block_no / 8;
    int j = block_no % 8;
    bitmap[i] &= ~(1 << j);
}
索引文件结构
复制代码
文件控制块(FCB)
┌─────────────┐
│ 文件属性    │
├─────────────┤
│ 直接索引    │──→数据块0
├─────────────┤   数据块1
│ 一级间接索引│──→索引块──→数据块...
├─────────────┤
│ 二级间接索引│──→索引块→索引块→数据块...
└─────────────┘

六、操作系统的现代发展

6.1 操作系统发展趋势

  1. 微内核架构:将核心功能最小化

  2. 分布式操作系统:管理多台计算机资源

  3. 实时操作系统:保证任务截止时间

  4. 嵌入式操作系统:资源受限环境优化

6.2 操作系统性能指标

  • 吞吐量:单位时间内完成的工作量

  • 响应时间:从提交请求到得到响应的时间

  • 周转时间:从作业提交到完成的时间

  • 资源利用率:CPU、内存、I/O设备的使用效率

相关推荐
无心水1 小时前
24、系统架构师论文写作专题 核心考点与学习笔记
笔记·学习·系统架构·架构师·安全架构·软考架构师·软考系统架构设计师
蒸蒸yyyyzwd1 小时前
邓明 Agent 系统面试-意图识别学习笔记
笔记·学习
Zhao-Jichao4 小时前
AI Prompting for Everyone 课程笔记 - P21 总结 Conclusion
人工智能·笔记
欢欢李4 小时前
【LTE L3 笔记 05】LTE同步信号
笔记·无线通信·物理层·lte·空口协议
La Pulga6 小时前
【FreeRTOS源码学习笔记】空闲任务与阻塞延时
笔记·mcu·学习·嵌入式·freertos·实时操作系统
蒸蒸yyyyzwd6 小时前
秋招学习笔记 day106
笔记·学习
小李不想当小白7 小时前
WDG看门狗(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
欢欢李8 小时前
【LTE L3 笔记 04】LTE帧结构
笔记·无线通信·物理层·lte·空口协议
Zhao-Jichao10 小时前
AI Prompting for Everyone 课程笔记 - P20 实验与期末项目 Lab and Final Project
前端·人工智能·笔记
Z21-X11 小时前
云原生运维实战笔记:企业网站综合上云部署与云运维服务全景解析
运维·笔记·学习·云原生