进程与线程(进程)

news2024/9/23 21:31:57

进程:

概念:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位

PID:当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的“身份证号”

组成:

PCB(进程控制块):

【给操作系统用的】

  • 基本的进程描述信息,可以让操作系统区分各个进程:记录PID、进程所属用户(UID)
  • 可用于实现操作系统对资源的管理:记录进程分配了哪些资源(如:分配了多少内存、正在使用哪些I/O设备、正在使用哪些文件)
  • 可用于实现操作系统对进程的控制、调度:记录进程的运行情况(如:CPU使用时间、磁盘使用情况、网络流量使用情况等)

程序段:程序的代码(指令序列)

【给进程自己用的】

数据段: 运行过程中产生的各种数据(如:程序中定义的变量)

【给进程自己用的】


特征:

动态性:【是进程最进程最基本的特征】进程是程序的一次执行过程,是动态地产生、变化和消亡地

并发性:内存中有多个进程实体,各进程课并发执行

独立性:进程是独立运行、独立获得资源、独立接受调度地基本单位

异步性:各进程按各自独立地、不可预知的速度向前推进,操作系统要提供“进程同步机制”来解决异步问题

结构性:每个进程都会配置一个PCB。结构上看,进程由程序段、数据段、PCB组成


状态:

创建态: 进程正在被创建时,它的状态时“创建态”,在这个阶段操作系统会为进程分配资源、初始化PCB

就绪态:当进程创建完成后,便进入“就绪态”,处于就绪态的进程已经具备运行条件,但由于没有空闲CPU,就暂时不能运行

运行态:如果一个进程此时在CPU上运行,那么这个进程就会处于“运行态”

阻塞态:

  • 在进程运行的过程中,可能会请求等待某个事件的发生(如等待某种系统资源的分配,或者等待其他进程的相应)

  • 在这个时间发生之前,进程无法继续往下执行,此时操作系统会让这个进程下的CPU,并让它进入“阻塞态”。

  • 当CPU空闲时,又会选择另一个“就绪态”进程上CPU运行

终止态:一个进程可以执行exit系统调用,请求操作系统终止该进程。此时该进程会进入“终止态”,操作系统会让该进程下CPU,并回收内存空间等资源,最后还要回收该进程的PCB

状态的转换:

 注意:不能由阻塞态直接转换为运行状态,也不能由就绪态直接转换为阻塞态(因为进入阻塞态是进程主动请求的,必然需要进程在运行时才能发出这种请求)

组织: 

连接方式

执行指针:

  • 指向当前处于运行态(执行态的进程)
  • PCB2
  • 单CPU计算机中,同一时刻只会有一个进程处于运行状态

就绪队列指针:

  • 只想当前处于就绪态的进程
  • PCB5->PCB1->PCB4
  • 通常会把优先级高的进程放在队头

等待打印的阻塞队列:

  • PCB3->PCB7

等待磁盘的阻塞队列:

  • 很多操作系统还会根据阻塞原因不同,再分为多个阻塞队列
  • PCB6

索引方式:


进程控制

主要功能:对系统中的所有进程实施有效的管理,它具有创新进程、撤销已有进程、实现进程状态转换等功能

原语:是一种特殊的程序,它的执行具有原子性。也就是说,这段程序的运行必须一气呵成,不可中断

进程的创建:

创建原语:

  • 申请空白PCB
  • 为新进程分配所需资源
  • 初始化PCB
  • 将PCB插入就绪队列

引起进程创建的事件:

  • 用户登录:分时系统中,用户登陆成功,系统会为其建立一个新的进程
  • 作业调度:多批道处理系统中,由新的作业放入内存时,会为其建立一个新的进程
  • 提供服务:用户向操作系统提出某些请求时,会创建一个进程处理该请求
  • 应用请求:由用户进程主动请求创建一个子进程

进程的终止:

撤销原语:【就绪态/阻塞态/运行态->终止态->无】

  • 从PCB集合中找到终止进程的PCB
  • 若进程正在运行,立即剥夺CPU,将CPU分配给其他进程
  • 终止其所有进程(进程间的关系是树状结构)
  • 将该进程拥有的所有资源鬼皇给父进程或操作系统
  • 删除PCB

引起进程终止的事件:

  • 正常结束(自己请求终止如:exit系统调用)
  • 异常结束(整数除以0、非法使用特权指令,然后被操作系统强行杀掉)
  • 外界干预(Ctrl+Alt+Delete,用户选择杀掉进程)

进程的阻塞和唤醒:

进程的阻塞:

阻塞原语:(运行态->阻塞态)
  • 找到阻塞的进程对应的PCB
  • 保护进程运行现场,将PCB状态信息设置为“阻塞态”,暂时停止进程运行
  • 将PCB插入相应事件的等待队列
引起进程阻塞的事件:
  • 需要等待系统分配某种资源
  • 需要等待相互合作的其他进程完成工作

进程的唤醒:

唤醒原语:(阻塞态->就绪态)
  • 在等待队列中找到PCB
  • 将PCB从等待队列移除,设置进程为就绪态
  • 将PCB插入就绪队列,等待被调度
引起进程唤醒的事件
  • 等待事件的发生

进程的切换:

切换原语:(运行态->就绪态 / 就绪态->运行态)
  • 将运行环境信息存入PCB
  • PCB移入相应队列
  • 选择另一个进程执行,并更新其PCB
  • 根据PCB恢复新进程所需的运行环境
引起进程切换的事件:
  • 当前进程时间片到
  • 有更高优先级的进程到达
  • 当前进程主动阻塞
  • 当前进程终止

解决办法:在进程切换时先在PCB中保存这个进程的运行环境(保存一些必要的寄存器信息)

注意:另一个进程在运行过程中也会使用各个寄存器


进程通信

进程间通信(IPC):是指两个进程之间产生数据交互

进程通信需要操作系统支持:进程时分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。因此一个进程不能直接访问另一个进程的地址空间

共享存储:

基于存储区的共享:
  • 为了避免出错,各个进程对共享空间的访问时互斥的

  • 操作系统在内存中划出一块共享存储区,数据的形式,存放位置都由通信进程控制,而不是操作系统。
  • 这种共享方式速度很快
  • 是一种高级的通信方式

基于数据结构的共享:
  • 比如共享空间只能放一个长度为10的数组
  • 这种共享方式速度慢、限制多
  • 是一种低级的通信方式

消息传递:

概念:进程间的数据交换以格式化的消息为单位。进程通过操作系统提供的“发送消息、接受消息”两个原语进行数据交换

消息头:包括发送进程ID、接受进程ID、消息长度等格式化的信息
直接通信:消息发送进程要指明接受进程的ID(点名道姓的消息传递)
间接通信:通过“信箱”间接地通信。因此又称为“信箱通信方式”(信箱通信方式)

管道通信:

  • 管道只能采用半双工通信,某一段时间内只能实现单向的传输。如果要实现双同时通信,则需要设置两个管道 
  • 各进程要互斥地访问管道(由操作系统实现)
  • 当管道写满时,写进程将阻塞,知道读进程将管道数据中的数据取走,即可唤醒进程
  • 当管道读空时,读进程将阻塞,知道写进程往管道中写入数据,即可唤醒读进程
  • 管道中的数据一旦被读出,就彻底消失。因此当多个进程读同一个管道时,可能会错乱。解决方案有①一个管道允许多个写进程,一个读进程  ②允许有多个写进程,多个读进程,但系统会让各个读进程轮流从管带中读取数据(Linux的方案)

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

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

相关文章

【SpringMVC 】什么是SpringMVC(一)?如何创建一个简单的springMvc应用?

文章目录 SpringMVC第一章1、什么是SpringMVC2、创建第一个SpringMVC的应用1-3步第4步第5步第6步7-8步3、基本语法1、进入控制器类的方式方式1:方式2:方式3:方式4:方式5:2、在控制器类中取值的方式方式1:方式2:方式3:方式4:方式5:方式6:超链接方式7:日期方式8:aja…

Unity | Shader基础知识(第十三集:编写内置着色器阶段总结和表面着色器的补充介绍)

目录 前言 一、表面着色器的补充介绍 二、案例viewDir详解 1.viewDir是什么 2.viewDir的作用 3.使用viewDir写shader 前言 注意观察的小伙伴会发现,这组教程前半部分我们在编写着色器的时候,用的是顶点着色器和片元着色器的组合。 SubShader{CGPRO…

什么是DDoS攻击?DDoS攻击的原理是什么?

一、DDoS攻击概念 DDoS攻击又叫“分布式拒绝服务”(Distributed DenialofService)攻击,它是一种通过控制大量计算机、物联网终端或网络僵尸(Zombie)来向目标网站发送大量请求,从而耗尽其服务器资源,导致正常用户无法访…

ESCI3罗德与施瓦茨ESCI3测试接收机

181/2461/8938产品概述: R&S ESCI接收机的特点包括: 出色表现 多达10个子范围的可编程扫描表自动或交互式预览和最终EMI测量的内部测试程序预扫描、数据缩减(峰列表)和最终测量的评估功能光谱分析仪快速ACP测量时域分析(记…

【计算机毕业设计】基于SpringBoot+Vue智能停车计费系统设计与实现

目录 一、项目介绍 二、项目主要技术 三、系统功能结构设计 四、系统详细功能的实现 4.1 前台功能实现 4.2 管理员模块实现 4.3 用户后台模块实现 五、实现代码 一、项目介绍 该系统采用了java技术、SpringBoot 框架,连接MySQL数据库,具有较高…

【STM32嵌入式系统设计与开发】——18StaticNixite(静态数码管应用)

这里写目录标题 STM32资料包: 百度网盘下载链接:链接:https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd8888 提取码:88881、函数编辑(1)主函数编辑(2)主函数头文件函数&#x…

Linux USB转串口设备路径的查找方法

1、USB转串口设备 USB转串口设备是在嵌入式软件开发过程中经常要使用的,常常用于对接各种各样的串口设备。如果一台linux主机上使用多个usb转串口设备时,应用程序中就需要知道自己操作的是哪个串口设备。串口设备在系统上电时,由于驱动加载的…

如何利用工具实现文件批量移动并自动编号重命名文件夹

在处理大量文件和文件夹时,我们经常需要对其进行批量移动和重命名。掌握一些实用的工具和方法,可以大大提高我们的工作效率。本文将介绍如何用云炫文件管理器实现文件批量移动并自动编号重命名文件夹。 云炫文件管理器:这是一款功能强大的文…

如何将视频转换成gif表情包?超简单的方法分享

把视频中的片段截取制作成gif动画表情包是现在网络中常见的制作图片的一种方法。Gif表情包能够调节聊天中的氛围,快速有趣的传递信息。也因为gif动图兼容性高、体积小便于分享所以在现在的网络中非常的收欢迎。接下来,小编就给大家分享一下怎么把视频转g…

8、基本数据类型转换(自动转换和强制转换)

基本类型转换 1、自动类型转换2、强制类型转换 1、自动类型转换 定义:当Java程序在进行赋值或者运算时,精度小的类型会自动转换成精度大的数据类型,这个就是自动类型转换。(自动小转大) 背多芬: 这里要明…

Windows环境下VSCode C环境配置

前言: 本文记录了自己在配置 Windows环境下 VSCode C开发环境的遇到的问题和解决方法。 参考: vscode c语言没有代码提示_clangd提示不生效-CSDN博客 VSCODE无法跳转_vscode 不能跳转-CSDN博客 vscode c/c环境配置(MinGW)调用第三官方库…

工业网关是做什么的?-天拓四方

随着信息技术的迅猛发展,物联网技术正日益融入我们生活的方方面面。而在工业领域,物联网技术的应用更是为传统制造业带来了翻天覆地的变化。其中,工业网关作为物联网的重要组成部分,正发挥着越来越重要的作用。那么,工…

纯血鸿蒙APP实战开发——短视频切换实现案例

短视频切换实现案例 介绍 短视频切换在应用开发中是一种常见场景,上下滑动可以切换视频,十分方便。本模块基于Swiper组件和Video组件实现短视频切换功能。 效果图预览 使用说明 上下滑动可以切换视频。点击屏幕暂停视频,再次点击继续播放…

excel中数据筛选技巧

1、筛选excel中破折号前后都为空的数据 在Excel中查找破折号前后为空的数据,你可以结合使用Excel的查找和筛选功能,或者利用一些公式来判断。以下是两种常用的方法: 方法一:使用筛选功能选中数据范围:首先&#xff0c…

[开发|鸿蒙] 鸿蒙OS开发环境搭建(笔记,持续更新)

搭建开发环境流程: https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/installation_process-0000001071425528-V2 鸿蒙DevEco Studio 3.1.1 Release仅支持windows和mac系统 运行环境要求 为保证DevEco Studio正常运行,建议电脑配置…

本地渲染农场一年要花多少钱?开销超出想象!

小编在之前的文章中有分析过本地渲染农场和云渲染农场之间的优点和缺点: 云渲染农场渲染和自己搭建农场渲染怎么选?哪个更划算?https://news.vsochina.com/cn/industry/6145 从中可知,与云渲染服务相比,本地渲染农场…

【Redis】RDB持久化和AOF 持久化

分布式缓存 单点 Redis 的问题 数据丢失(持久化)并发能力不如集群(主从集群、读写分离)Redis宕机导致服务不可用(Redis哨兵)存储能力差(分片集群) Redis 持久化 RDB 持久化 什么…

Game Theory In Competitive Programming|Part2(原创)

在上一个Part部分,我们介绍了Bash game、Nim game、Misere Nim game 这三个游戏的玩法、必胜策略,以及必胜策略的证明,并介绍了有关必胜态以及必败态的两条定理,接下来我们会以Part1为基础,深挖其中的理论。 文章目录 …

期权如何开户的流程是什么样的?

今天期权懂带你了解期权如何开户的流程是什么样的?期权账户开户是指投资者向期权经纪商或金融机构提交申请,以便可以在期权市场上进行交易并持有期权合约的账户开设过程。 期权如何开户的流程是什么样的? 1. 投资者参与营业部提供的股票期权…

【2022 深圳 ArchSummit 】大数据架构稳定性保障实践

文章目录 一、前言二、现状三、大数据架构的历史变迁(一)洪荒期&MR(二)远古期&MPP(四)近现代&Flink/Spark(五)现如今&实时数据湖架构 四、架构稳定的关键因素&#…