操作系统(2.7)--进程

news2025/1/18 11:48:42

目录

一、进程的引入

1.进程的两个基本属性

2.程序并发执行所需付出的时空开销

3.线程---作为调度和分派的基本单位

二、线程(轻型进程)与进程(重型进程)的比较

1)调度的基本单位

2)并发性

3)拥有资源

4)独立性

5)系统开销

6)支持多处理机系统

三、线程的状态和线程的控制块

1.线程运行的三个状态

2.线程控制块TCB

3.多线程OS中的进程属性


一、进程的引入

1.进程的两个基本属性

进程的两个基本属性:

  • ①进程是一个可拥有资源的独立单位;一个进程要能独立运行,它必须拥有一定的资源。
  • ②进程同时又是一个可独立调度和分派的基本单位,使之成为一个能独立运行的基本单位,从而也就构成了进程并发执行的基础。

由于进程是一个资源的拥有者,因而在创建、撤消和切换中,系统必须为之付出较大的时空开销。如此,在系统中所设置的进程,其数目不宜过多,进程切换的频率也不宜过高,这也就限制了并发程度的进一步提高。

2.程序并发执行所需付出的时空开销

为使程序能并发执行,系统必须进行以下的一系列操作:

(1)创建进程,系统在创建一个进程时,必须为它分配其所必需的、除处理机以外的所有资源,如内存空间、I/O设备,以及建立相应的PCB;

(2)撤消进程,系统在撤消进程时,又必须先对其所占有的资源执行回收操作,然后再撤消PCB:

(3)进程切换,对进程进行上下文切换时,需要保留当前进程的CPU环境,设置新选中进程的CPU环境,因而须花费不少的处理机时间。

3.线程---作为调度和分派的基本单位

目的:更好地实现并发执行的同时尽量减少系统的开销。

线程设计思想:将进程的上述两个属性分开,由操作系统分开处理,亦即对于作为调度和分派的基本单位,不同时作为拥有资源的单位,以做到“轻装上阵”;而对于拥有资源的基本单位,又不对之进行频繁的切换。正是在这种思想的指导下,形成了线程的概念。

单线程进程

管理和执行相分离的模型

多线程进程模型

二、线程(轻型进程)与进程(重型进程)的比较

由于线程具有许多传统进程所具有的特征,所以又称之为轻型进程(Light-WeightProcess)或进程元

把传统进程称为重型进程(Heavy-Weight Process)。

1)调度的基本单位

在传统的操作系统中,作为拥有资源的基本单位和独立调度、分派的基本单位都是进程。在引入线程的操作系统中,则把线程作为调度和分派的基本单位,而进程作为资源拥有的基本单位。

2)并发性

在引入线程的操作系统中,不仅进程之间可以并发执行,而且在一个进程中的多个线程之间亦可并发执行,使得操作系统具有更好的并发性,从而能更加有效地提高系统资源的利用率和系统的吞吐量。

3)拥有资源

不论是传统的操作系统,还是引入了线程的操作系统,进程都可以拥有资源,是系统中拥有资源的一个基本单位。一般而言,线程自己不拥有系统资源(也有一点必不可少的资源),但它可以访问其隶属进程的资源。

4)独立性

在同一进程中的不同线程之间的独立性要比不同进程之间的独立性低得多。

5)系统开销

(1)在创建或撤消进程时,操作系统所付出的开销明显大于线程创建或撤消时的开销。(2)类似的,在进程切换时,进程也是远高于线程的。(3)此外,由于一个进程中的多个线程具有相同的地址空间,在同步和通信的实现方面线程也比进程容易。

6)支持多处理机系统

在多处理机系统中,对于传统的进程,即单线程进程,不管有多少处理机,该进程只能运行在一个处理机上。但对于多线程进程,就可以将一个进程中的多个线程分配到多个处理机上,使它们并行执行,这无疑将加速进程的完成。因此,现代多处理机OS都无一例外地引入了多线程。

三、线程的状态和线程的控制块

1.线程运行的三个状态

线程在运行时也具有下述三种基本状态:

  • ①执行状态,表示线程正获得处理机而运行;
  • ②就绪状态,指线程已具备了各种执行条件,一旦获得CPU便可执行的状态;
  • ③阻塞状态,指线程在执行中因某事件而受阻,处于暂停执行时的状态。

2.线程控制块TCB

线程控制块通常有这样几项:

①线程标识符,为每个线程赋予一个唯一的线程标识符;

②一组寄存器,包括程序计数器PC、状态寄存器和通用寄存器的内容;

③线程运行状态,用于描述线程正处于何种运行状态;

④优先级,描述线程执行的优先程度;

⑤线程专有存储区,用于线程切换时存放现场保护信息,和与该线程相关的统计信息等;

⑥信号屏蔽,即对某些信号加以屏蔽;

⑦堆栈,在堆栈中通常保存有局部变量和返回地址;

3.多线程OS中的进程属性

在多线程OS中,进程是作为拥有系统资源的基本单位,但不再作为一个执行的实体。多线程OS中的进程有以下属性:

(1)作为系统资源分配的单位。

(2)可包括多个线程。在0S中的所有线程都只能属于某一个特定进程。

(3)进程不是一个可执行的实体。在多线程OS中,线程作为独立运行的基本单位。进程仍具有与执行相关的状态。例如,所谓进程处于“执行”状态,实际上是指该进程中的某线程正在执行。

线程的内存布局

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

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

相关文章

离线数仓的数仓分层

数据仓库分层的作用 数据结构化更清晰: 对于不同层级的数据,他们作用域不相同,每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。 数据血缘追踪: 提供给外界使用的是一张业务表&#xf…

Material Design:为你的 Android 应用提供精美的 UI 体验

Material Design:为你的 Android 应用提供精美的 UI 体验 介绍 Material Design 概念:介绍 Material Design 是 Google 推出的一种设计语言,用于创建现代、美观、直观且一致的用户界面。解释 Material Design 的基本原则,包括材料…

9、MachO简介

一、MachO文件 MachO其实是Mach Object文件格式的缩写,是Mac以及iOS上可执行文件的格式,类似于windows上的PE格式(Portable Executable), linux上的elf格式(Executable and Linking Format) 二、MachO文件结构 Mach-O为Mach Object文件格式的缩写,它是一种用于可执行文件、目…

fileclude(文件包含漏洞及php://input、php://filter的使用)

先介绍一些知识 1、文件包含漏洞 和SQL注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。 什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写…

Pytorch实现FCN图像语义分割网络

针对图像的语义分割网络,本节将介绍PyTorch中已经预训练好网络的使用方式,然后使用VOC2012数据集训练一个FCN语义分割网络。 一、使用预训练好的语义分割网络 PyTorch提供了已预训练好的图像语义分割网络,已经预训练好的可供使用的网络模型…

Java 对象的创建过程面试总结

Java对象创建的过程 Java对象创建的过程主要分为五个步骤,下面我将详细介绍这五个步骤。 Step1:类加载检查 虚拟机遇到一条new指令时,首先会去检查这个指令的参数是否能在class文件中的常量池中定位到这个类的符号引用,并且会检查这个符号…

unplugin-vue-components 源码原理分析

unplugin-vue-components 是一款按需自动导入Vue组件的库。支持 Vue2 和 Vue3,同时支持组件和指令。使用此插件库后,不再需要手动导入组件,插件会自动识别按需导入组件以及对应样式,我们只需要像全局组件那样使用即可。 当然上面…

深入谈谈内存压缩那些事!

1. 技术背景 说到压缩这个词,我们并不陌生,应该都能想到是降低占用空间,使同样的空间可以存放更多的东西,类似于我们平时常用的文件压缩,内存压缩同样也是为了节省内存。 尽管当前android手机6GB,8GB甚至12GB的机器都…

两个月15斤以上的健康减脂减重法,与饥饿、运动等无关的自我实验的验证方法(第六篇完结,无收费内容)...

阅读本文前请先看前五篇内容,本文有部分修改,但是涉及前五篇的内容会大量隐藏,只保留关联修改部分,链接如下: 两个月15斤以上的健康减脂减重法,与饥饿、运动等无关的自我实验的验证方法(第五篇&…

OpenCascade安装编译

重新编译OpenCascade,在漫长的等待过程中,记录一下编译的流程 下载安装 OpenCascade官网中提供了直接安装的二进制版本,如果只是简单的使用需求可以直接下载安装,二进制版本使用VC 2017 64 bit编译 官网地址 源码编译 源码编…

Docker容器:docker基础

目录 一、docker容器简介 1、什么是容器 2、容器的优点 3、什么是docker容器 4、docker的logo及设计宗旨 5、docker与虚拟机对比 6、docker容器2个重要技术 7、docker三大核心概念 二、docker的安装及管理 1、安装docker 2、配置docker加速器 3、docker镜像相关基础…

你为什么从上一家公司离职?程序员这样回答最机智

想必每一位跳槽的程序员伙伴,在面试时都会被问到这个问题吧: “为什么从上一家公司离职?” 可能不少人跳槽的原因都是钱少事多离家远,加班干到十二点,同事之间还内卷,但是这些原因在面试的时候都能说吗&a…

软件测试培训

软件测试培训 软件测试培训是一门针对软件测试人才培养的技术,培训内容涉及到:软件测试基础、自动化测试、性能测试、安全测试、接口测试、云计算测试等。就业方向:软件开发工程师,软件测试工程师, web前端工程师&…

Docker概念|容器|镜像|命令详细(创建,删除,修改,添加)

Docker概念|容器|镜像|命令详细(创建,删除,修改,添加) 一,Docker简介二,Docker与虚拟机的区别三,容器核心技术四,Docker核心概念五 docker的安装5.1关闭防火墙,关闭文件防…

2022年 团体程序设计天梯赛——题解集

Hello各位童学大家好!😊😊,茫茫题海你我相遇即是缘分呐,或许日复一日的刷题已经让你感到疲惫甚至厌倦了,但是我们真的真的已经达到了我们自身极限了吗?少一点自我感动,没有结果前别太…

大悦城中粮物业:用二维码搭建物业系统,“多快好省”提高管理效率

中粮物业(大悦服务)隶属于大悦城控股集团股份有限公司,成立于1993年6月,是中国物业管理协会会员单位、广东省物业管理行业协会常务理事单位。 作为连续多年蝉联“中国物业服务百强企业”的头部物业公司,中粮物业自主研…

OMRON Sysmac Studio如何将PDO参数复制到其他轴

Sysmac Studio如何将PDO参数复制到其他轴 实验时间:2023/4/19 实验设备:Sysmac Studio(ver 1.53)、EveryThing搜索工具 实验目的:将轴分配的PDO参数复制到其他轴 一. 实验概述 ​ 当PLC当很多相同的伺服轴时,轴的PDO映射是完全…

ESP32在ESP-IDF框架下使用LVGL(v8.3)

开发环境 VSCodeESP-IDF插件 说明:IDF版本为4.4.4,最新版的5.0.1弃用了些东西,而lvgl_esp32_drivers对5以上的版本未适配,所以不建议使用5以上的版本。 安装:安装教程,建议整体看完在进行安装,以…

解决vue-print-nb打印时多出一页空白,vue-print-nb打印有空白页

项目场景: 提示:这里简述项目相关背景: 打印table表格,需要用到vue-print-nb插件,使用该插件可以一键弹窗打印页面 效果如图 问题描述 提示:这里描述项目中遇到的问题: 查了一下&#xff…

斩获“双金”!玻色量子在中国移动第七届创客马拉松大赛脱颖而出

​4月7日,中国移动第七届创客马拉松大赛总决赛在厦门圆满落幕。此次大赛以“能力无界 智算同行”为主题,经过近4000个创新项目的层层选拔,玻色量子凭借“相干量子计算设备”项目脱颖而出,成功摘取“双金”:总决赛全球通…