操作系统之进程与线程

进程与线程

进程

进程是资源分配的基本单位.

  • 进程控制块PCB: 描述了进程的基本信息和运行状态, 所谓的创建进程和撤销进程都是指对PCB的操作

线程

线程是独立调度的基本单位.

一个进程中可以有多个线程, 它们共享进程资源.

线程与进程的区别

  • 一个进程至少有一个线程
  • 在同一个进程中,线程的切换不会引起进程的切换,从一个进程中的线程切换到另一个进程中的线程,会引起进程切换.
  • 创建和销毁进程的开销远大于创建或销毁线程时的开销.
  • 线程间的通信可以通过直接读写统一进程中的数据进行通信, 但是进程间的通信需要借助IPC.

进程状态的转换

  • 就绪
  • 运行
  • 阻塞

进程调度算法

批处理系统

批处理系统没有太多的用户操作, 在该系统中, 调度算法的目标是保证吞吐量和周转时间.

  • 先来先服务(FCFS)
  • 短作业优先(SJF)
  • 最短剩余时间优先(SRTN)

交互式系统

交互式系统有大量的用户交互操作, 在该系统中调度算法的目的是快速地响应

  • 时间片轮转
  • 优先级调度
  • 多级反馈队列

实时系统

实时系统要求一个请求在一个确定的时间内得到响应

  • 硬实时: 满足绝对的截止时间
  • 软实时: 可以容忍一定的超时

进程同步

临界区

对临界资源访问的那段代码成为临界区

同步和互斥

  • 同步: 多个进程按照一定的顺序执行
  • 互斥: 多个进程在统一时刻只有一个进程能够进入临界区

信号量

信号量(Semaphore)是一个整形变量, 是常见的PV操作

进程通信

管道

管道是通过调用pipe函数创建的, fd[0]用于读, fd[1]用于写.

支持半双工, 只能在父子进程中使用

FIFO命名管道

常用于客户-服务器应用程序, 在二者的进程中传递数据.

消息队列

相比于FIFO, 有一下优点:

  • 消息队列可以独立与读写进程存在, 从而避免了FIFO中同步管道的打开和关闭时可能产生的困难.
  • 避免了FIFO同步阻塞问题, 不需要进程自己提供同步方法
  • 读进程可以根据消息类型有选择接受, 而不像FIFO那样只能默认接收

信号量

计数器, 用于为多个进程提供对共享对象的访问服务.

共享存储

云溪多个进程共享一个给定的存储区

需要使用信号量来同步对共享存储的访问

套接字

用于不同机器间的进程通信

本文标题:操作系统之进程与线程

文章作者:Enda Lin

发布时间:2019年06月10日 - 14:09

最后更新:2019年07月08日 - 09:15

原始链接:https://wt-git-repository.github.io/2019/06/10/操作系统之进程与线程/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。