进程、线程管理

297 阅读6分钟

进程

相关概念

程序:一系列的指令序列,如.calss文件
进程:由PCB、程序段、数据段构成的进程实体,拥有独立的系统资源,是资源分配和调度的独立单位

PCB(程序控制快)

OS是根据PCB来对并发执行的进程进行控制和管理的,PCB是进程存在的唯一标志
PCB中记录了操作系统所需的,用于描述进程的当前情况以及控制进程运行的全部信息 。 作用是使一个在多道程序环境下不能独立运行的程序(含数据),成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程。

例如,当OS要调度某进程执行时,要从该进程的PCB中查处其现行状态及优先级;在调度到某进程后,要根据其PCB中所保存的处理机状态信息,设置该进程恢复运行的现场,并根据其PCB中的程序和数据的内存始址,找到其程序和数据;
进程在执行过程中,当需要和与之合作的进程实现同步,通信或者访问文件时,也都需要访问PCB; 当进程由于某种原因而暂停执行时,又须将其断点的处理机环境保存在PCB中。

image.png

进程的特征

image.png

进程的组织方式

为了便于管理,系统把所有PCB用适当方法组织起来,由三种组织方式

  1. 线性方式 将所有PCB分布不分状态组织在一个连续表中
  2. 索引方式 对于具有相同状态的进程的进程,分别设置各自的PCB索引表,表目为PCB在PCB表中的地址

image.png 3. 链接方式 对于具有相同状态进程的PCB,通过PCB中的链接字构成一个队列,链接字指出本队列下一PCB在PCB表中的编号(或地址)

image.png

进程的七种状态

image.png

进程调度

blog.csdn.net/weixin_4391…

进程间通信方式

进程间通讯的7种方式_zhaohong_bo的博客

  1. 管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。
  2. 命名管道FIFO:有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。
  3. 消息队列MessageQueue:消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  4. 共享存储SharedMemory:共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号量,配合使用,来实现进程间的同步和通信。
  5. 信号量Semaphore:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
  6. 套接字Socket:套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
  7. 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

线程

线程的概念

线程是进程中的一个实体,是cpu调度和分派的基本单位。 线程只拥有一点必不可少的资源,线程间共享进程的资源(内存,时间片等)

线程的优势

1 . 提高并发性
进程只能串行的运行程序,引入线程后可以并发执行进程要执行的程序

image.png

image.png

2 .减少系统开销
线程间共享进程资源,切换时不需要切换上下文,减少开销。
创建、销毁线程仅需要少量资源。

线程实现方式

  • 线程的实现分为两类:用户级线程(User-Level Thread,UTL)和内核级线程(Kernel-Level Thread, KTL)l。内核级线程又称内核支持的线程

(1)用户级线程

image.png

(2)内核级线程

image.png

协程

同步与互斥

基本概念

  1. 同步
  • 同步也称为直接制约关系。
  • 在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。为了协调进程之间的相互制约关系,如等待、传递信息等,引入了进程同步的概念。进程同步是为了解决进程的异步问题。
  1. 互斥
  • 互斥,亦称间接制约关系
  • 进程互斥指当一个进程访问某临界资源时,另一个想要访问该临界资源的进程必须等待。当前访问临界资源的进程访问结束,释放该资源之后,另一个进程才能去访问临界资源。
  1. 临界资源
  • 一个时间段内只允许一个进程使用的资源称为临界资源。许多物理设备(比如摄像头、打印机)都属于临界资源。此外还有许多变量、数据、内存缓冲区等都属于临界资源。
  • 对临界资源的访问,必须互斥地进行。

image.png

同步方法

进程间同步

  • 信号量
  • 互斥量
  • 管程
    将系统资源集中管理,进程只能通过管程提供的入口进入管程,管程中只能由一个进程保持活跃状态,如果进程请求资源不足,则在对应资源队列上等待。
  • 进程间通信

线程间同步

线程同步的方法 线程同步主要包括四种方式:

  • 互斥量pthread_mutex_
  • 读写锁pthread_rwlock_
  • 条件变量pthread_cond_
  • 信号量sem_

进程/线程互斥方法

软件实现方法_BitHachi的博客
硬件实现方法_BitHachi的博客
信号量机制实现进程的互斥、同步与前驱关系

死锁

死锁详解(预防、避免、检测、解除)+思维导图_BitHachi的博客

相关概念

image.png

死锁产生的必要条件

image.png

死锁产生的情况

image.png

死锁的处理策略

在这里插入图片描述