• Home
  • About
    • yukiiris photo

      yukiiris

      少说话,多读书

    • Learn More
    • Twitter
    • Facebook
    • Instagram
    • Github
    • Steam
  • Posts
    • All Posts
    • All Tags
  • Projects
  • Moon

操作系统学习笔记(二)

20 Sep 2017

Reading time ~1 minute

第二章 进程与线程

2.1 进程

  1. 进程模型
    • 计算机上所有可运行的软件被组织成进程
    • 多道程序设计即为CPU快速在多个进程之间切换
  2. 创建进程
    • 创建
      • 系统初始化
      • 执行了正在运行的进程所调用的进程创建系统调用
      • 用户请求创建新线程
      • 一个批处理作业的初始化
    • 新线程的创建都是由于已存在的线程执行系统调用(fork)
  3. 进程终止
    • 正常退出
    • 出错退出
    • 严重错误
    • 被其他进程杀死
  4. 进程的层次结构
    • 所有进程的地位相似
    • 父进程得到句柄,可以控制子进程,也可以把句柄给其他进程
  5. 进程的状态
    • 进程有自己的程序计数器和内部状态
      • 运行态
      • 就绪态
      • 阻塞态
  6. 进程的实现
    • 为了实现线程模型,操作系统维持着一张表格(一个结构数组),即进程表,每个进程占其中一项
      • 程序计数器
      • 堆栈指针
      • 内存分配所打开文件的状态
      • 账号和调度信息
    • 中断(入口:中断向量)
      • 硬件储存旧堆栈程序处理器,加载新的
      • 汇编保存旧寄存器,设置新寄存器
      • C中断服务例程运行
      • 调度程序决定下一个进程
      • C返回
      • 汇编运行新进程
  7. 多道程序设计模型

2.2 线程

  1. 线程的使用
    • 优点
      • 线程的使用使多种应用发生的活动更简单效率
      • 线程比进程更轻量级
      • 提高性能
    • 有限状态机
  2. 经典线程模型
    • 用某种方法把相关资源集中在一起
    • 进程拥有一个执行的线程:堆栈指针和程序计数器被切换就可以切换到新线程
      • 程序计数器
      • 寄存器
      • 堆栈
    • 一个进程中的多个线程共享地址空间和全局变量
    • 线程的状态
  3. POSIX线程
  4. 在用户空间中实现线程
    • 内核对线程一无所知,将其看作一个单线程进程
    • 优点
      • 用户线程包可以在不支持多线程的操作系统上实现
      • 允许每个进程制定自己的调度算法
    • 缺点
      • 发生故障后有可能影响到整个进程
  5. 在内核中实现进程
    • 创建或撤销线程的代价比较大,一般采用线程回收
  6. 混合实现
    • 使用内核级线程,然后将用户级线程与某些全部内核线程多路复用起来,非常灵活
  7. 调度程序激活机制

2.3 进程间的通信

  1. 竞争条件
    • 两个或多个进程读写某些共享数据,最后结果取决于运行的精确时序
  2. 临界区
    • 互斥以某种手段确保一个进程在使用一个共享变量或文件时,另一个进程不能进行同样操作
    • 临界区:对共享内存进行访问的程序片段
    • 避免竞争条件
      • 任何两个进程不能同时处于临界区
      • 不应该对CPU的速度和数量做任何假设
      • 临界区外运行的进程不得阻塞其他进程


operate system Share Tweet +1