操作系统(二 )| 进程控制 进程状态 进程描述 进程控制 进程同步互斥

文章目录

  • [1 进程和程序区别](#1 进程和程序区别)
  • [2 进程状态](#2 进程状态)
    • [2.1 进程的5种基本状态](#2.1 进程的5种基本状态)
    • [2.2 进程状态之间转换](#2.2 进程状态之间转换)
    • [2.3 七状态模型](#2.3 七状态模型)
  • [3 进程描述](#3 进程描述)
    • [3.1 进程控制块 PCB](#3.1 进程控制块 PCB)
    • [3.2 进程块组织方式](#3.2 进程块组织方式)
  • [4 进程控制](#4 进程控制)
  • [5 进程同步 互斥](#5 进程同步 互斥)
    • [5.1 区分进程互斥和同步](#5.1 区分进程互斥和同步)
    • [5.2 核心方案](#5.2 核心方案)
    • [5.3 其他方案](#5.3 其他方案)
      • [方案1 设置锁变量](#方案1 设置锁变量)
      • [方案2 严格轮转法](#方案2 严格轮转法)
      • [方案3 Peterson解决方案](#方案3 Peterson解决方案)
      • [方案4 关中断](#方案4 关中断)

1 进程和程序区别

进程是程序的1次执行。

进程(Process)和程序(Program)是两个不同的概念,它们在计算机科学中有明确的区别:

  1. 程序(Program)
    • 定义:程序是一组计算机指令的有序集合,这些指令被编写成一个文件,通常以可执行文件的形式存在。程序是静态的,它只是一段代码的集合,等待被执行。
    • 特点:程序包含了计算机程序员编写的源代码,它描述了一系列任务的算法和逻辑,但并没有实际执行。程序不占用计算机的内存空间,也不消耗计算机的CPU时间。
    • 例子:一个文本编辑器的程序文件、一个游戏的可执行文件、一个网页浏览器的应用程序等都是程序的例子。
  2. 进程(Process)
    • 定义:进程是计算机中正在运行的程序的实例。它是程序在内存中加载并执行时的活动状态,包括程序的代码、数据、执行状态、系统资源分配等。
    • 特点:进程是动态的,它占用计算机的内存空间,可以执行计算机指令,与其他进程并发运行。每个进程都有自己的独立内存空间,因此它们不会相互干扰。进程可以创建、启动、暂停、终止等。
    • 例子:当您运行一个文本编辑器、播放音乐、浏览网页或打印文档时,每个活动都对应一个独立的进程。

总结来说,程序是静态的、不执行的计算机指令集合,而进程是程序的运行实例,它占用计算机内存,执行指令,并与其他进程一起协同工作。进程是计算机操作系统中的核心概念,它使多任务处理成为可能.

可以将程序和进程比喻为烹饪的过程:

  1. **程序(Program)**就像是一本菜谱。菜谱是一份详细的食物制作指南,它包含了食材清单、烹饪步骤和所需的厨具。但菜谱本身并不能做出美味的食物,它只是一份指导,等待着被厨师(计算机)读取和执行。就像您需要拿出菜谱并按照其中的步骤去做一道菜一样,计算机需要将程序加载到内存中并执行其中的指令。
  2. **进程(Process)**就像是正在烹饪中的一道菜。当您选择一道菜谱并开始烹饪时,您实际上在制作一道具体的菜肴。这个菜肴有自己的成分、调味料和烹饪状态。它在火上烹煮、被切割、被摆盘等等。这个菜肴是实际被制作和提供给食客的,就像进程是正在计算机内存中运行和执行的程序实例。

所以,程序就像是一份指导,而进程是实际的动态执行。程序是静态的,而进程是具体的、可见的操作。

2 进程状态

2.1 进程的5种基本状态

(1)新建(new):进程正在被创建。

(2)就绪(ready):进程可运行,正等待获得处理机。

(3)运行(running):进程的指令正在被执行。

(4)阻塞(blocked)或等待:进程因等待某事件(如请求I/O)而暂停执行。

(5)完成(done):进程结束。

2.2 进程状态之间转换

2.3 七状态模型

引入挂起

就绪(Ready):进程在内存且可立即进入运行状态

阻塞(Blocked):进程在内存并等待某事件的出现

阻塞挂起(Blocked, suspend):进程在外存并等待某事件的出现

就绪挂起(Ready, suspend):进程在外存,但只要进入内存,即可运行

运行

新建

完成

注意 挂起都在外存

挂起:把进程从内存转到外存

激活:把进程从外存转到内存

3 进程描述

3.1 进程控制块 PCB

作用

​ 1 是OS管理和控制进程的数据结构。

​ 2 PCB记录着进程的描述信息。

​ 每个进程对应1个PCB。

信息内容

(1)进程本身的标识信息

​ 进程标识符pid(process ID):整数,由OS分配,唯一

​ 用户标识符uid(user ID):创建该进程的用户

​ 对应程序的地址:内存、外存

(2)CPU现场 - 为进程正确切换所需

​ 所有寄存器的值

	或称进程上下文(context)

(3)进程调度信息

​ 进程的状态

​ 优先级

​ 使进程阻塞的条件

​ 占用CPU 、等待CPU的时间(用于动态调整优先级)

(4)进程占用资源的信息

​ 进程间同步和通信机制,如信号量、消息队列指针

​ 打开文件的信息,如文件描述符表

CPU现场 - 为进程正确切换所需

所有寄存器的值

或称进程上下文(context)

Linux的进程控制块:task_struct

.

​ 进程创建时,由OS创建PCB;

进程终止时,由OS撤销PCB;

​ 进程运行时,以PCB作为调度依据。

3.2 进程块组织方式

一般来说,系统把所有PCB组织在一起,并把它们放在内存的固定区域,构成PCB表。

PCB表的大小决定了系统中最多可同时存在的进程个数。

同一状态进程的PCB组成一个链表,不同状态对应多个不同的链表,如就绪链表、阻塞链表

4 进程控制

原语

​ 由若干指令构成的具有特定功能的函数

​ 具有原子性,其操作具有不可分割性

创建、撤销进程以及完成进程各状态之间的转换,由具有特定功能的原语完成

​ 进程创建原语

​ 进程撤销原语

​ 阻塞原语

​ 唤醒原语

​ 挂起原语

​ 激活(解挂)原语

​ 改变进程优先级

5 进程同步 互斥

在执行时间上互相重叠(或交替),一个进程的执行尚未结束,另一个进程的执行已经开始的执行方式。

这样会有一个问题

​ 因为资源共享的问题,结果会产生不确定性

为此,引入同步(synchronization)和互斥(mutual exclusion)。

临界资源 一次只允许一个进程独占访问(使用)资源 ,越小越好

临界区 进程中访问临界资源的的程序段

5.1 区分进程互斥和同步

互斥是指执行某个进程的时候访问某一临界资源的时候,另一个进程不能执行访问这一临界资源。

经典只有互斥问题:打印机打印

同步是指完成某一进程执行是有条件的,必须等另一个进程的某一资源结束才可以

经典只有同步的问题:售票员售票

既有互斥又有同步问题:消费者问题

5.2 核心方案

信号量

利用信号量P-V操作可以实现进程的互斥访问

利用信号量P-V 操作可以实现进程的同步访问

5.3 其他方案

实现互斥方案

一个好的互斥方案应满足以下条件:

(1)任何两个进程不能同时处于临界区。

(2)临界区外的进程不应阻止其他进程进入临界区。

(3)不应使进程在临界区外无休止地等待。就是说,临界区代码执行时间要短。

(4)不应对CPU的个数和进程之间的相对运行速度作任何假设。

方案1 设置锁变量

会导致两个进程同时进入临界资源

来不及上锁就被切换走了

可能会存在盲等待

方案2 严格轮转法

本质互为锁

临界区外的进程会阻止其他进程进入临界区。

方案3 Peterson解决方案

为什么进程号只有0和1

方案4 关中断

关中断权利交给用户不合适

对多处理机系统无效

相关推荐
李白同学26 分钟前
【C语言】结构体内存对齐问题
c语言·开发语言
人间打气筒(Ada)1 小时前
MySQL主从架构
服务器·数据库·mysql
黑子哥呢?2 小时前
安装Bash completion解决tab不能补全问题
开发语言·bash
落笔画忧愁e2 小时前
FastGPT快速将消息发送至飞书
服务器·数据库·飞书
青龙小码农2 小时前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx
小冷爱学习!2 小时前
华为动态路由-OSPF-完全末梢区域
服务器·网络·华为
大数据追光猿2 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
南宫生2 小时前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
计算机毕设定制辅导-无忧学长3 小时前
Maven 基础环境搭建与配置(一)
java·maven
彳卸风3 小时前
Unable to parse timestamp value: “20250220135445“, expected format is
开发语言