软考高级系统架构设计师(三) 基础知识之操作系统1进程

目录

概要

 操作系统 概述

​编辑

进程管理

进程的状态

 进程管理-PV操作

利用PV操作实现进程的同步

 进程管理-前趋图

 进程管理-死锁


概要

 操作系统 概述

操作系统的功能: 进程管理、存储管理、文件管理、作业管理、设备管理

操作系统的特征

  • 并发性
  • 共享性
  • 虚拟性
  • 不确定性

 

进程管理

  1. 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位
  2. 进程的组成
  • 进程控制块PCB(唯一标志)
  • 程序:描述进程要做什么
  • 数据:存放进程执行时所需数据

  

     3. 进程与程序的区别:

  • 进程是程序的一次执行过程,没有程序就没有进程
  • 程序是完成某个特定功能的一系列程序语句的集合,只要不被破坏,它就永远存在
  • 程序是一个静态的概念,而进程是一个动态的概念,它由创建而产生,完成任务后因撤销而消亡
  • 进程是系统进行资源分配和调度的独立单位,而程序不是 

进程与线程:

进程的2个基本属性:

1)可拥有资源的独立单位;

2)可独立调度和分配资源的基本单位;

ps: 线程 只能独立调度, 不分配资源

 

线程不共享: 程序计数器、栈、寄存器 

PCB

PCB组织方式:线性方式、链接方式、索引方式

进程的状态

三态图:

                   运行       就绪      阻塞

CPU           YES       NO       NO

非CPU        YES       YES     NO

阻塞: 不能直接到「运行」

 五态图:

 挂起: 程序调度、异常等

「活跃就绪」: 只有此状态,可以到「运行」

「活跃阻塞」: 要经过「静止阻塞」「静止就绪」「活跃就绪」,才能到「运行」

 进程管理-PV操作

信号量机制

1965年,荷兰学者Dijkstra提出的信号量机制是一种卓有成效的进程同步与互斥的工具

信号量是一个整型变量,根据控制对象的不同赋不同的值。

PV操作是实现进程同步与互斥的常用方法。进程的同步与互斥是学习 PV 操作的前提。

同步和互斥往往在实际问题中共存,而不是反义词。

同步的反义词是异步

互斥的反义词是共享

互斥:某资源(即临界资源,如打印机、缓冲区。进程间接制约关系)在同一时间内只能由一个任务单独使用,使用时需要加锁,使用完后解锁才能被其他任务使用;

同步:多个任务可以并发执行,只不过有速度上的差异,在一定情况下停下等待,不存在资源是否单独或共享的问题;如自行车和汽车。 进程直接制约关系

P操作:【申请资源,S=S-1】,若S>=0,则执行P操作的进程继续执行;若S<0,表示资源不足,去排队,则置该进程为阻塞状态(因为无可用资源),并将其插入阻塞队列。

V操作:【释放资源,S=S+1】,若S>0,则执行V操作的进程继续执行;若S<=0,表示有进程在排队,则从阻塞状态唤醒一个进程,并将其插入就绪队列(此时因为缺少资源被P操作阻塞的进程可以继续执行),然后执行v操作的进程继续。

 注意: 临界区,是一段代码;

S表示资源情况、负值等待的进程数。 S=S-1表示申请资源;S=S+1表示释放资源

互斥信号量:对临界资源采用互斥访问,使用互斥信号量后其他进程无法访问,初值为1.

同步信号量:对共享资源的访问控制,初值一般是共享资源的数量

利用PV操作实现进程的同步

进程的同步是由于进程间合作引起的相互制约的问题,要实现进程的同步可用一个信号量与消息联系起来。

同步问题的经典例子是生产者-消费者问题。

 

 练习题:

 进程管理-前趋图

 ps: 依赖关系。只有A,B,C都完成了,才能开始D。 D完成了,才能开始E.

PS: 前置动作用V, 后置检查用P

练习题:

 

 练习题:

 ps: 直接制约关系,是先后顺序的影响

练习题:

 进程管理-死锁

死锁: 一个进程等待一件不可能发生的事,进程就死锁了。

死锁的4个必要条件:

互斥条件:进程对分配到的资源进行排他使用,即在一段时间内某资源只能被一个进程占用,其他请求该资源的进程进行等待,直到该资源释放。

请求和保持条件:一个进程因为请求资源而阻塞等待时,对自己已经获得的资源保持不放。

不可抢占(剥夺)条件:进程已经获得的资源,在未使用完之前不能被强行剥夺。

循环等待条件:若干进程之间形成一种环形的等待资源关系。
 

 

练习题:

 S < 5: 一定死锁

如果A,B,C每个都有4个资源,再多给1个资源,则不会死锁。 所以:

S= [5,12]可能死锁,可能不死锁

s>13,一定不会死锁。

如果有m个进程,都需要n个资源,

则 不可能发生死锁: S > m *(n-1) + 1

猜你喜欢

转载自blog.csdn.net/wodeyijia911/article/details/131293750