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

文章目录

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

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

对多处理机系统无效

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/144164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

post 和get参数 请求

json参数 post请求格式 RestController public class HelloController { //json参数 post 请求RequestMapping("/jsonParam")public String jsonParam(RequestBody User user){System.out.println(user);return "OK";} } postman 接口测试工具…

服务器数据恢复—服务器发生故障导致数据丢失如何恢复服务器数据?

服务器常见故障: 硬件故障:磁盘、板卡、电源故障等。 软件故障:操作系统崩溃、程序运行错误等。 入侵破坏:加密、删除服务数据等。 不可控力:浸水、火烧、倒塌等。 误操作:格式化、删除、覆盖等。 如何减少…

从零搭建微服务架构:Spring Boot与Nacos完美整合

🎏:你只管努力,剩下的交给时间 🏠 :小破站 从零搭建微服务架构:Spring Boot与Nacos完美整合 前言第一:服务注册与发现第二:配置中心第三:报错问题解决第四:什…

继承、多态

复习 需求: 编写一个抽象类:职员Employee,其中定义showSalary(int s)抽象方法;编写Employee的子类,分别是销售员Sales和经理Manager,分别在子类中实现对父类抽象方法的重写,并编写测试类Test查看输出结果 package cn.…

某头部通信企业:SDLC+模糊测试,保障数实融合安全发展

某头部通信企业是全球领先的综合通信信息解决方案提供商,为全球电信运营商、政企客户和消费者提供创新的技术与产品解决方案。该企业持续关注核心技术攻关,深入打造系列化标杆项目和价值场景,加强数字化平台的推广应用,加快共建开…

【机器学习基础】多元线性回归(适合初学者的保姆级文章)

🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!后面的内容会越来越有意思~ 💡往期推荐: 【机器学习基础】机器学习入门(1) 【机器学习基…

FreeSWITCH案例跟踪之一,sip bye发不出去

报故障的说&#xff0c;网关呼叫fs&#xff0c;网关收不到fs的sip bye Wireshark看call-flow, 是这样的&#xff1a; INVITE里面的contact是<sip:172.23.4.109:5060;transporttcp> 于是Wireshark设置过滤条件为ip.addr 172.23.4.109 and tcp.port 5060 fs tcp连网关被…

【前端】使用json-server报错

当我们使用json-server模仿后端接口时需要运行json-server --watch index.json这个命令生成增删改查接口但是可能会报这个错误&#xff0c;如图 这时我们运行 npm i json-server -g命令即可&#xff0c;然后再重新运行json-server --watch index.json就行了

基于SSM的校园家教兼职信息交流平台设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

深入探索 Django Channels

概要 随着 Web 应用的发展&#xff0c;实时功能如即时消息、实时通知等变得越来越重要。Django Channels 是 Django 的一个扩展&#xff0c;它使得在 Django 中构建实时功能变得可能。本文将深入探讨 Django Channels 的核心概念、架构以及如何实现一个实时应用。 1. Django C…

2023亚太杯数学建模思路 - 复盘:光照强度计算的优化模型

文章目录 0 赛题思路1 问题要求2 假设约定3 符号约定4 建立模型5 模型求解6 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 问题要求 现在已知一个教室长为15米&#xff0c;宽为12米&…

基于纵横交叉算法优化概率神经网络PNN的分类预测 - 附代码

基于纵横交叉算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于纵横交叉算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于纵横交叉优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

2760. 最长奇偶子数组 : 抽丝剥茧,图解双指针做法正确性

题目描述 这是 LeetCode 上的 「2698. 求一个整数的惩罚数」 &#xff0c;难度为 「简单」。 Tag : 「双指针」、「滑动窗口」 给你一个下标从 开始的整数数组 nums 和一个整数 threshold。 请你从 nums 的子数组中找出以下标 l 开头、下标 r 结尾 ( ) 且满足以下条件的 最长子…

ssd202d-logo-cmd_bootlogo分析

cmd_bootlogo.c运行过程 common/autoboot.c:593: disp_logo(0); sprintf(cmd_str, "bootlogo %d 1 0 0 0", logo_id); do_display函数 获取对应结构体,里面有各种参数

ARM 自动资源管理

Java 7 增加了一个新特性&#xff0c;该特性提供了另外一种管理资源的方式&#xff0c;这种方式能自动关闭文件。这个特性有时被称为自动资源管理(Automatic Resource Management, ARM)&#xff0c; 该特性以 try 语句的扩展版为基础。自动资源管理主要用于当不再需要文件&…

Android R.fraction

来源 我是在看Android10原生代码&#xff0c;绘制状态栏蓝牙电量相关类中第一次看到R.fraction的&#xff0c;如类BatteryMeterDrawable <fraction name"battery_button_height_fraction">10%</fraction> mButtonHeightFraction context.getResources(…

虹科方案 | 从概念到生产的自动驾驶软件在环(SiL)测试解决方案

来源&#xff1a;雅名特自动驾驶 虹科方案 | 从概念到生产的自动驾驶软件在环&#xff08;SiL&#xff09;测试解决方案 自动驾驶软件在环&#xff08;SiL&#xff09;测试解决方案 自动驾驶软件在环&#xff08;SiL&#xff09;测试解决方案能够研究和验证高历程实验和恶劣驾…

未来服务器操作系统的趋势与展望

摘要&#xff1a; 随着云计算、大数据和人工智能不断的发展&#xff0c;服务器操作系统也需要随之进行新一轮的升级。本文通过分析当前服务器操作系统的现状&#xff0c;探讨了未来服务器操作系统的趋势和展望&#xff0c;并针对一些关键问题提出了解决方案。 一、引言 服务器…

Oracle OCP / MySQL OCP认证容易通过吗

诸多学员在首次考OCP时&#xff0c;不清楚要如何选择。在本文中&#xff0c;我会为大家进行讲解&#xff01; 选择OCP认证时需要考虑的几大项目&#xff1a; 授课老师师资经验 课程大纲 试听课程 考试通过率 业界口碑 服务质量 郭一军老师的OCP培训在业界培训的学员中已…

[Jenkins] Docker 安装Jenkins及迁移流程

系统要求 最低推荐配置: 256MB可用内存1GB可用磁盘空间(作为一个Docker容器运行jenkins的话推荐10GB) 为小团队推荐的硬件配置: 1GB可用内存50 GB 可用磁盘空间 软件配置: Java 8—无论是Java运行时环境&#xff08;JRE&#xff09;还是Java开发工具包&#xff08;JDK&#xff…