《操作系统概念》笔记

操作系统

资源抽象

进程

  • 概念

    计算机上运行的程序的抽象
    进程的表示,进程状态,程序计数器,CPU寄存器,CPU调度信息,内存管理信息,记账信息,IO状态信息

  • 行为

    • 多线程

      线程时CPU基本使用单元,多个线程共享同一进程的代码数据文件,同时具有自己的运行堆栈
      轻量,资源共享
      线程的多对多模型可以多路复用
      线程池技术可以解决线程的复用问题,控制系统的并发量,提供不同的运行任务的策略
      问题:复制和退出是否包含子线程,信号处理,撤销其他线程,线程自己的变量,线程和内核线程的通信

    • 通信

      • 共享内存
      • 消息
      • C/S通信

        • RPC
        • socket
        • pipe
    • 进程调度

      • CPU执行周期

        CPU执行和IO执行交替进行

      • 抢占式、非抢占式

        进入非就绪状态为非抢占式,进入就绪状态为抢占式

      • 调度算法

        • FCFS

          先来先服务

        • SJF

          短作业优先

        • 优先级调度

          无限阻塞和饿死问题

        • RR(轮转调度)

          平均分配执行机会

        • 多级队列调度

          前台和后台进程分成不同的队列,采用不同的算法

        • 多级反馈队列

          进程可以再不同队列迁移

      • 线程调度

        用户线程到内核线程的映射模型:一对一、多对一、一对一

    • 同步

      • 产生背景

        指令的乱序执行

      • 临界区

        满足条件:
        互斥(不能同时进入)
        进步(不能都进不去)
        有限等待(不能一直阻塞)

      • 解决方案

        解决临界区的三个问题

        • Peterson(软件方案)

          使用共享变量标识能否进入临界区和是否准备进入临界区来实现
          Pi的代码:
          do {
          flag[i] = true;
          turn = j;
          while ( flag[j] && turn == j);

          CRITICAL SECTION
          

          flag[i] = false;

          REMAINDER SECTION
          

          } while (true);

        • 互斥锁(抽象)

        • 硬件同步(特殊原子指令)

          • compare_and_set()
          • compare_and_swap()
        • 信号量(软件)

  • 问题

    • 死锁

      • 产生条件(同时出现)

        • 互斥

          访问非共享资源

        • 占有并等待

          占有一个等待另一个

        • 非抢占

          资源不能被抢占,只有进程完成任务后才释放

        • 循环等待

          p0->p1->p2->p0

      • 预防

        破坏4个条件中的任意一个

资源管理

内存管理

  • 策略

    共享内存、提高多道程序程度

    • 连续分配

      首次适应、最优适应、最差适应

    • 分段

      程序员的内存视图:堆、栈、子程序、符号表、主程序

    • 分页

      页表过大问题:分层分页、哈希页表、倒置页表

  • 虚拟内存

    逻辑内存和物理内存分离,摆脱物理内存的限制

    • 实现

      • 请求调页

        只在程序需要的时候调入页面

      • 页面置换

        • LRU
        • FIFO
      • 帧分配

        可用内存如何分配

    • 内存映射文件

      将文件IO作为常规内存访问,允许一部分虚拟内存和文件关联

存储管理

  • 文件系统

    磁盘存储大量数据

    • 实现

      分层:
      低层物理属性
      高层符号和逻辑属性
      中层映射

    • 文件分配

      连续分配:整块分配
      链接:链表分配
      索引:索引块

    • 空闲空间管理

      位向量:bit位标示是否空闲
      链表:链接空闲磁盘块

      计数
      空间图

    • 恢复

      基于日志
      快照
      备份恢复

  • 磁盘

    大容量存储

    • 调度算法

      FCFS:先来先服务
      SSTF:最短寻道时间优先(SJF最短作业优先)
      SCSN:电梯算法等

    • 交换空间

      将磁盘空间作为物理内存的扩展

    • RAID

      使用冗余提高存储可靠性,使用并行读写提高性能

  • IO

    • 硬件

      总线、控制器
      端口和寄存器
      DMA和设备控制器通过握手建立传输并通过DMA进行传输
      通过中断机制和cpu交互来进行异常跳转和传输完成通知

    • 接口

      非阻塞和异步IO
      内核IO子系统

Linux

设计原则

速度效率,标准化

内核

内核,系统库,系统工具。
内核:
模块管理
模块加载卸载
驱动注册
冲突解决

进程管理

进程属性:标识、环境、上下文
调度:
CFS(完全公平调度程序)
实时调度,FCFS,RR

内存管理

页面共享,写时复制
首次加载,LFU算法回收

文件系统