Skip to content

计算机操作系统


一、概述📌

  • 内核:确定的可执行程序,属于软件(
  • 设备处理,中断处理程序在固件中,如ROM,BIOS
  • 部分在硬件中(逻辑地址到物理地址
  • 硬件和应用程序中间的软件层
  • 资源管理者

二、发展📌

1.真空管,插接板,无操作系统

2.晶体管,批处理

  • 汇编语言开发
  • 单道性,自动性,顺序性

3.集成电路

  • 多道批处理,分时操作系统,实时操作系统

  • Success

    现代化操作系统同时有批处理分时实时功能(通用操作系统)

4.网络式操作系统,分布式操作系统


三、操作系统结构📌

1、整体式结构

2、模块化结构

3、分层式结构

4、微内核结构


四、功能和基本特征📌

1、功能📌

  1. 处理机管理
  2. 储存器管理
    • 分页
    • 分区
    • 分段
    • 虚拟存储
  3. IO管理
  4. 文件管理
    • 连续存储
    • 索引存储
    • 链表存储

2、特征📌

Tip

  1. 并发性:两道或多道在同一 时间间隔
  2. 共享性:互斥共享,同时访问
  3. 虚拟性
  4. 异步性 (不确定性) :不知道时间 不知道顺序

五、基本概念📌

概念 解释
中断 可以处理算法溢出,非法操作码,死循环
用户态 非特权态
核心态 系统态,特权态
多道程序系统 多个程序在内存中交替运行(宏观上并行,微观上串行
多处理系统 多个处理器
分时 把计算机时间分割为时间片,(使多道操作系统支持多个虚拟机

六、操作系统管理与控制📌

1、进程与线程📌

  • 进程:程序在并发系统内的某个数据集上的一次运行,是系统进行资源分配和调度运行的独立单位

    • Example
      1. 新批处理任务
      2. 系统初始化,用户登录
      3. 操作系统提供系统服务
      4. 现存进程
    • 状态:

      stateDiagram
      New --> Ready: Admitted
      Ready --> Running: Despatch
      Running --> Ready: Interrupt
      Running --> Waiting: I/O wait
      Waiting --> Ready: I/O completion
      Running --> Terminated: Exit

  • 线程:轻型实体,独立调配单元 ,(一个/不同进程里的所有线程可并发进行)

进程(Process) 线程(Thread)
定义 运行中的程序的实例 进程中的一个执行单元
资源 拥有独立的内存空间和系统资源 共享所属进程的内存空间和资源
开销 创建和切换开销大 创建和切换开销小
安全性 由于空间独立,一个进程崩溃不会影响其他进程 一个线程崩溃可能导致整个进程崩溃
系统资源 拥有独立的系统资源(文件句柄等) 共享进程的系统资源

2、同步与互斥📌

Example
  1. 生产者-消费者问题

    • 生产者往缓冲区放产品,消费者从缓冲区取产品
    • 缓冲区满时不能生产,空时不能消费
    • 本质是处理好缓冲区的互斥访问和生产消费的同步关系
  2. 读者-写者问题

    • 多个读者可以同时读,但写者必须独占访问
    • 写者写时其他人不能读写,读者读时写者不能写
    • 关键是保护好数据一致性,同时避免写者饥饿
  3. 哲学家就餐问题

    • 五位哲学家共用五只筷子,需要拿到左右两只才能吃饭
    • 错误的实现容易导致死锁(都拿着一只筷子僵持)
    • 考察资源分配中的死锁预防问题
  4. 理发师问题

    • 一个理发师、一把理发椅、几把等候椅
    • 没有顾客时理发师睡觉,来客人时被唤醒
    • 展示了进程间的同步合作关系和有限资源的管理

这些问题都是对现实场景的抽象,本质都是在处理进程/线程间的同步与互斥关系。

进程制约:

  • 直接制约(进程同步
    • 有意识的安排进程间相互协作
  • 间接制约(进程互斥
    • 竞争资源无意识造成制约

Quote

同步遵循原则:

  1. 至多一个进程进入临界区

  2. 临界区外进程不能阻止其他进程进入临界区

  3. 请求必须在有限时间内得到响应

  4. 不能对CPU数量和速度假设


解决方法:软件层面 、硬件层面、 操作系统层面 (1)

    • 信号量
    • 管程
    • 消息传递

3、死锁和饥饿📌

  • 死锁:多进程无限等待
    • 互斥资源共享
    • 并发执行顺序不当
  • 饥饿:长时间等待无法得到所需资源

4、进程调度📌