(四)进程管理:进程基本概念

news2024/10/5 14:24:02

文章目录

  • 一. 进程的概念
  • 二. 进程的结构和特征
    • 1. 进程的结构
    • 2. 进程的特征
  • 三. 进程与【线程】
    • 1. 进程与线程的关系与区别
    • 2. 线程的实现方式
      • 1. 纯用户级方式(淘汰)
      • 2. 纯内核级方式
      • 3. 组合方式

一. 进程的概念

进程(Process),是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行【资源分配和调度】的一个独立单位。

  • 几个要点
    • 进程是【程序】【一次执行】
      an instance of a computer program that is beiing executed
    • 进程是一个程序及其数据在处理机上顺序执行时所发生的的【活动】
    • 进程是程序在一个【数据集合】上运行的过程
    • 进程是系统进行【资源分配和调度】的一个【独立】单位(或者说基本单位)

二. 进程的结构和特征

1. 进程的结构

  1. 控制块(PCB)
  2. 数据段
  3. 程序段

每个进程启动后都有不同的PCB
在这里插入图片描述

2. 进程的特征

  • 动态性:由创建而生,由撤销而亡
  • 并发性:多个进程同时运行
  • 独立性:独立资源分配
  • 异步性:相互独立、互不干扰

三. 进程与【线程】

1. 进程与线程的关系与区别

什么是线程?

  • Thread,进程的轻型实体,也叫“轻量级进程”,是一系列活动按事先设定好的顺序依次执行的过程,是一系列指令的集合
  • 是一条执行路径,不能单独存在,必须包含在进程中
  • 线程是OS中运算调度的最小单位

为什么引入线程?

  • 提高OS的并发性
    • 一个进程中可以包含多个线程,同一进程中的线程可以共享进程内的资源,所以一个进程中可以同时处理多件事,假如不引入线程,一个进程只能做一件事,那么要做多件事的时候就要创建多个进程,每个进程都要系统分配一次资源,会导致资源浪费,降低性能

线程的属性

  • 轻型实体
  • 独立调度和分派的基本单位
  • 可并发执行
  • 共享进程资源

进程与线程比较

  • 调度
    • 操作系统调度的最小单位为线程
    • 同一进程内线程的切换不会导致进程的切换
  • 拥有资源(内存、寄存器、I/O设备等)
    • 进程拥有资源(资源所有者),管理资源,是操作系统分配资源的最小单位
    • 线程不拥有资源,可以向所属进程申请和操作该进程的资源,同一进程的所有线程共享资源
  • 并发性
    • 操作系统引入进程提高了并发性,引入线程进一步提高了并发性,后续引入纤程(携程)是为了更进一步提高并发性
  • 系统开销
    • 创建/撤销/切换进程系统开销较大,创建需要分配处理机、内存等,撤销需要回收先前分配的资源
    • 创建/撤销/切换线程系统开销相对较小,线程执行只需要将寄存器中的少量数据切换即可,不用动内存资源
  • 地址空间和其他资源
    • 操作系统给进程分配内存是一块独立的空间,对于其他进程不可见
    • 同一进程内的线程互相可见,共享内存等资源(寄存器不共享)
  • 通信
    • 进程间通信需要其他手段辅助
    • 同一进程内的线程间通信相对简单,可以创建全局变量,所有线程可见

线程相对于进程,大大降低了创建、撤销和切换可执行实体的成本和难度

2. 线程的实现方式

  • 用户级线程(ULT)
    User Level Thread
    线程控制块在用户空间
  • 内核级线程(KLT)
    Kernel Level Thread
    线程控制块在内核空间,数据段、程序段在用户空间

线程实现方式

1. 纯用户级方式(淘汰)

1)线程所有的操作都在用户空间完成(创建、撤销、终止、调度、通信、同步等),管理者为当前进程,线程切换不需要访问内核空间,线程调度效率较高
2)操作系统提供一套线程库和接口,用户级进程进行调用
3)操作系统内核看不见用户级线程,只能按进程来进行调度,如果有两个进程,一个有30个线程,一个有300个线程,那么系统使用时间片轮转算法来为进程分配时间,每个进程分配相同的时间片,会导致线程数多的进程分到的时间片远远不够,资源分配不够合理
4)由于操作系统看不到所谓的用户级线程,所以线程访问操作系统内核服务的时候,是由用户级进程来进行访问,这时候操作系统会执行陷入指令,导致系统中断,该进程的其他线程也无法继续执行,并且该进程的任何一个线程要访问内核服务时都会导致整个进程切换到内核级别,属于进程级切换
5)内核分配给每个进程时间片,由进程来决定时间片分配给那些线程来使用,同一时间一个CPU只能执行一个进程,而同一时间一个进程又只执行一个线程,所以无法实现进程内线程的并行

2. 纯内核级方式

1)在内核空间实现多个线程,直接在内核空间进行线程切换,实现线程级的并行效果,对于同一进程来说,他的线程可以进行并行执行了,运行效率较高
2)用户空间和内核空间是线程级切换,相对来说开销更小
3)由于线程的控制块在内核空间,而数据段和程序段都在用户空间,所以线程的切换都是在内核空间完成的,线程的执行在用户空间完成的,但是当发生线程切换的时候就需要先从用户态切换到内核态,在内核空间中在切换到目标线程上,再切换回用户空间继续执行,所有的线程切换都需要【用户态→内核态→用户态】两次转换,线程调度开销较大

3. 组合方式

1)内核空间和用户空间都有线程,多数的用户线程映射到少数的内核线程上,内核线程和用户线程为多对多关系
2)既减少了线程切换时不必要的用户、内核态转换,又实现了多线程的并行
3)内核线程数量受物理机影响,用户线程可以无限创建,那么实际上运行的时候使用的是分时交替执行(时分多路复用)技术
4)线程调度算法更加复杂,现在操作系统大多数使用的是这种组合方式

进程或者线程的切换归根结底为 进程/线程 控制块的切换

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

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

相关文章

C#,彩色图片转为灰度图的快速算法与源代码

彩色图转为灰度图的场景非常多,比如人工智能的训练与识别时,需要将彩色图片转为灰度图。 以下文字来自于: 彩色图像转灰度图像原理python_蜗牛的笨笨的博客-CSDN博客_python 彩色图转灰度图现在我们所接触到的图像绝大多数都是数字图像&…

[附源码]计算机毕业设计springboot疫情背景下社区互助服务系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

u-boot常用命令

u-boot常用命令查看u-boot所支持的命令查询命令u-boot版本环境变量板子相关信息环境变量操作内存操作网络操作EMMC和 SD卡操作FAT 格式文件系统操作EXT格式文件系统操作ubi格式文件系统操作boot 操作bootzbootmbootUMS 命令常用其他uboot环境变量:bootcmd和bootargs…

python基础语法15-网络编程理论

网络编程是指在程序中实现两台计算机之间的通信。 Python提供了大量的内置模块和第三方模块用于支持各种网络访问,而且Python语言在网络通信方面的优点特别突出,远远领先其他语言。 一、IP: 1.概念: IP:互联网协议地址(Internet Protocol Add…

CCNA-应试教育-思科网院-CCNAv7: Switching, Routing, and Wireless Essentials 交换、路由和无线基础。

CCNA-应试教育-思科网院-CCNAv7: Switching, Routing, and Wireless Essentials 交换、路由和无线基础。 拓扑 – SRWE 最终 PT 技能评估 (PTSA) 拓扑图这样连 题目 SRWE Final PT Skills Assessment (PTSA) A few things to keep in mind while co…

大淘营淘宝复制的“添加、删除、替换属性”功能如何使用?

一、添加属性添加属性填写的格式为“属性名称:属性值”,“”是添加的意思。举个例子,比如我要添加的属性为“AA”,属性值为“aa”,那么,在软件上需要填“AA:aa”。注:“:”是半角字符,中间不要有…

嵌入式 程序调试之gdb和gdbserver的交叉编译及使用

嵌入式 程序调试之gdb和gdbserver的交叉编译及使用 一、简述 记--交叉编译gdb、gdbserver并调试嵌入式程序。 gdb是功能非常强大的常用调试工具,可以直接下断点进行单步调试,是差错排错的利器。 常见三种不同使用场景的gdb: x86 pc端gdb(以下…

MyBatis ---- 自定义映射resultMap

MyBatis ---- 自定义映射resultMap1. resultMap处理字段和属性的映射关系2. 多对一映射处理a>级联方式处理映射关系b>使用association处理映射关系c>分布查询3. 一对多映射处理a>collectionb>分步查询1. resultMap处理字段和属性的映射关系 当实体类中的属性名…

一文详解数据链路相关技术

一文详解数据链路相关技术1.MAC地址2.共享介质型网络争用方式令牌传递3.非共享介质网络4.环路检测技术生成树方式源路由法5.VLAN1.MAC地址 MAC地址直译为媒体存取控制位址,也称为局域网地址(LAN Address),MAC位址,以太…

云服务器使用及Linux基本命令

文章目录前言一、Linux1.Linux发现版本2.Linux环境搭建方式云服务器使用终端软件连接Linux3.Linux基础命令(1)ls:列出该目录下的所有子目录与文件。(2)pwd:显示当前所在用户(3)cd :改…

终于来了

程序员求职简历,项目经验怎么写?免费修改简历、提供模板并内部推荐昨天我还在说"三年了,乌云还未散尽,仿佛若有光"。今天一大早,光就照进来了。深圳卫健委宣布公交、地铁、药店、公园、旅游景点等场所都不需…

数据结构(王卓)(4)附:链表的销毁与清空

销毁 Status 销毁单链表(LinkList L) {LinkList p;while (L){p L;L->next;delete p;}return OK; } 运行逻辑: (1):设定一个指针,让指针指向链表的头指针L (2):让头指针等于头指针里面指向下…

Session和Cookie

回顾 1.Servlet API 2.HttpServlet DoXXX处理哪种Http方法会调用到对应的方法 init/destroy/service—>servlet的生命周期 3.HttpServletRequest Http请求 get系列方法 协议名(版本号) url query string header query String/body HttpServletRespon…

【配准和融合相互作用,交互】

RFNet: Unsupervised Network for Mutually Reinforcing Multi-modal Image Registration and Fusion (RFNet:一种互增强的多模态图像配准与融合的无监督网络) 本文提出了一种在相互增强的框架RFNet中实现多模态图像配准与融合的新方法。我们…

第八章 集成学习

8.1 个体与集成 集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类系统、基于委员会的学习等。 下图显示出集成学习的一般结构:先产生一组个体学习器,再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训…

Redis实战——分布式锁

目录 1 一人一单并发安全问题 2 分布式锁的原理和实现 2.1 什么是分布式锁? 2.2 分布式锁的实现 1 一人一单并发安全问题 之前一人一单的业务使用的悲观锁,在分布式系统下,是无法生效的。 理想的情况下是这样的:一个线程成功…

计算机中数的表示和运算

定点数 编程时需要确定小数点位置难以表示两个大小相差较大的数存储空间利用率低 这种用二进制来表示十进制的编码方式,叫作BCD 编码(Binary-Coded Decimal)。 浮点数 小数点的位置可以左右移动的数 规格化浮点数: IEEE 754规格化的尾数…

基于Java+Swing+Mysql实现《黄金矿工》游戏

基于JavaSwingMysq实现《黄金矿工》游戏一、系统介绍二、功能展示三、其他系统一、系统介绍 《黄金矿工》游戏是一个经典的抓金子小游戏,它可以锻炼人的反应能力。。该游戏中,可以通过“挖矿”获得积分,游戏道具:有3瓶药水&#…

cubeIDE开发, 如何结合FreeRTOS开发STM32程序

一、STM32CubeIDE使用内置的FreeRTOS 不同于STM32CubeIDE使用像RTThread这些第三方物联网系统,STM32CubeIDE在安装时就已经在MiddleWare中间件一栏直接支持了FreeRTOS操作系统。 既然STM32CubeIDE已经把FreeRTOS深度整合到了自家的系统中,所以移植及使用…

深度学习中的正则化——L1、L2 和 Dropout

正则化是一组技术,可以防止神经网络中的过度拟合,从而在面对来自问题域的全新数据时提高深度学习模型的准确性。 在本文中,我们将介绍最流行的正则化技术,称为 L1、L2 和 dropout。 文章目录1. 回顾:过拟合2.什么是正则…