【0.2 漫画操作系统原理】

️ 漫画操作系统原理

学习目标:深入理解操作系统核心原理,为Java并发编程和性能优化打下坚实基础


第一章:操作系统初识篇

什么是操作系统?

想象一下,你是一个大型图书馆的馆长…

 没有操作系统 vs 有操作系统

没有操作系统:
读者1 → 直接找书架 ← 读者2
     ↘     ↙
      发生冲突!
      
有操作系统:
读者1 → 图书管理系统 → 有序分配 → 书架1
读者2 → 图书管理系统 → 有序分配 → 书架2
读者3 → 图书管理系统 → 排队等待 → 书架?

操作系统的核心职责:
• 资源管理:CPU、内存、磁盘、网络
• 进程调度:决定哪个程序先运行
• 内存管理:为程序分配和回收内存
• 文件管理:统一的文件存储接口
• 设备管理:统一的硬件访问接口

操作系统特性:

  • 并发性:同时处理多个任务
  • 共享性:多个程序共享系统资源
  • 虚拟性:为每个程序提供独立的虚拟空间
  • 异步性:程序执行顺序不可预知

操作系统架构

️ 操作系统分层架构:

┌─────────────────────────────────────┐
│           用户应用程序               │ ← 用户态
├─────────────────────────────────────┤
│           系统调用接口               │ ← 内核态边界
├─────────────────────────────────────┤
│  进程管理 │ 内存管理 │ 文件管理     │
├─────────────────────────────────────┤ ← 内核态
│  设备管理 │ 网络管理 │ 安全管理     │
├─────────────────────────────────────┤
│            硬件抽象层               │
└─────────────────────────────────────┘
            硬件层

第二章:进程与线程管理

进程基础概念

 进程生命周期:

创建 → 就绪 → 运行 → 阻塞 → 终止
  ↑      ↓      ↓      ↑
  └──────┴──────┴──────┘
  
进程状态转换:
• 创建→就绪:进程创建完成,等待CPU
• 就绪→运行:获得CPU时间片
• 运行→阻塞:等待I/O或其他资源
• 阻塞→就绪:所需资源到位
• 运行→就绪:时间片用完
• 运行→终止:进程执行完毕

进程控制块(PCB):
┌─────────────────┐
│ 进程ID(PID)     │
│ 进程状态        │
│ CPU寄存器       │
│ 内存管理信息    │
│ 文件描述符      │
│ 调度信息        │
└─────────────────┘

线程深度解析

 进程 vs 线程对比:

进程(重量级):
┌─────────────────┐
│ 进程A           │
│ ┌─────┐ ┌─────┐ │
│ │线程1│ │线程2│ │
│ └─────┘ └─────┘ │
│ 独立内存空间    │
└─────────────────┘

线程(轻量级):
• 共享进程内存空间
• 拥有独立的栈和寄存器
• 创建开销小,切换快
• 通信简单但需要同步

线程实现模型:
1. 用户级线程:内核不感知,效率高但无法利用多核
2. 内核级线程:内核管理,可利用多核但开销大
3. 混合模型:结合两者优势

进程调度算法

 CPU调度算法详解:

1. 先来先服务(FCFS):
   进程: A(24) → B(3) → C(3)
   时间: 0────24──27─30
   平均等待时间: (0+24+27)/3 = 17

2. 最短作业优先(SJF):
   进程: B(3) → C(3) → A(24)
   时间: 0─3──6────30
   平均等待时间: (0+3+6)/3 = 3

3. 时间片轮转(RR):
   时间片=4,进程队列: A(24),B(3),C(3)
   A(4) → B(3) → C(3) → A(4) → A(4) → A(4) → A(4) → A(4)

4. 优先级调度:
   ┌─────────────────┐
   │ 优先级队列      │
   │ 高 ┌─────┐     │
   │ ↑  │进程A│     │
   │ │  └─────┘     │
   │ │  ┌─────┐     │
   │ │  │进程B│     │
   │ │  └─────┘     │
   │ 低 ┌─────┐     │
   │    │进程C│     │
   │    └─────┘     │
   └─────────────────┘

进程同步与通信

 进程同步机制:

1. 互斥锁(Mutex):
   ```java
   synchronized(lock) {
       // 临界区代码
       共享资源访问
   }
  1. 信号量(Semaphore):

    Semaphore semaphore = new Semaphore(3); // 允许3个线程
    semaphore.acquire(); // P操作,获取资源
    try {
         
        // 使用资源
    } finally {
         
        semaphore.release(); // V操作,释放资源
    }
    
  2. 条件变量(Condition):

    ReentrantLock lock = new ReentrantLock();
    Condition condition = lock

你可能感兴趣的:(漫画Java,java)