操作系统--进程与线程

操作系统笔记、面试八股(一)—— 进程、线程、协程 本章详细介绍并对比了操作系统中进程、线程、协程相关的知识点 阅读详情

3. 进程与线程

3.1 进程的概念

3.1.1 多道程序设计

    多道程序同时进入内存并运行,其目的是为了提高系统效率,但是伴随而来的程序的并发执行和系统资源的共享使得采用多道程序技术的操作系统工作变得更复杂,不像单道程序系统那样简单、直观。

    并发环境是指在一段时间间隔内,单处理器上有两个或两个以上的程序同时处于开始运行但尚未结束的状态并且次序不是事先确定的。并发程序是指在并发环境中执行的程序。

3.1.2 进程

1. 进程的概念

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

    进程与程序的区别:

1)程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;

2)程序是静态的观念,进程是动态的观念;

3)进程具有并发性,而程序没有;

4)进程是竞争计算机资源的基本单位,程序不是。

5)进程和程序不是一一对应的: 一个程序可对应多个进程即多个进程可执行同一程序; 一个进程可以执行一个或几个程序;

2. 进程的基本特征

1)动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

2)并发性:任何进程都可以同其他进程一起并发执行。

3)独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。

4)异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的、不可预知的速度向前推进。

3.2 进程的状态与转换

    进程的三种基本状态:运行状态、就绪状态、阻塞状态。

运行状态(running):运行状态是指当前进程占有CPU,并在CPU上运行。

就绪状态(ready):就绪状态是指进程已经具备运行条件,但由于没有空闲CPU,暂时不能运行。

阻塞状态(blocked):阻塞状态又称等待状态或封锁状态,是指进程因等待某一事件而暂时不能运行。处于阻塞状态的进程不具备运行条件,即使CPU空闲,它也无法运行。


    进程的其他状态:

新建(new):已完成创建进程所必要的工作,但尚未同意执行该进程。

终止(terminated):终止执行后,进程进入该状态。


3.3 进程的控制

3.3.1 进程控制块

    进程控制块(Processing Control Block),也称进程描述块(Process Descriptor),是操作系统核心中一种数据结构,主要表示进程状态。在创建进程时,首先建立PCB,它伴随进程运行的全过程,直到进程撤销而报销。系统可以利用PCB来控制和管理进程,所以说,PCB(进程控制块)是系统感知进程存在的唯一标志。

    进程控制块的组成一般包括:进程描述信息、进程控制信息、所拥有的资源和使用情况、CPU现场信息。

1)进程描述信息:进程标识符(process ID)、进程名、用户标识符(user ID)、进程组关系。 每个进程都必须有一个标识符,通常是一个整数。

2)进程控制信息:当前状态、优先级(priority)、程序的磁盘地址、代码开始地址、进程队列指针、通信信息。

3)所拥有的资源和使用情况:虚拟地址空间的状况、打开文件列表

4)CPU现场信息:寄存器值(通用寄存器、程序计数器PC、程序状态字PSW、栈指针)、指向该进程页表的指针

    PCB是一个通用的名称,在Linux操作系统中进程控制块叫task_struct。

3.3.2 进程的控制

    进程是有生命周期的,这一过程包括进程的产生、运行、暂停、终止。对进程的这些操作称为进程控制。进程控制包括进程创建、进程撤销、进程阻塞、进程唤醒、改变进程优先级、调度进程运行。这些操作都要对应地执行一个特殊的程序段(操作系统核心程序),同时系统也通过系统调用给用户提供进程控制的功能。完成进程控制的这种特殊的系统调用,我们把它成为原语。实际上它是一种特殊的系统调用命令,执行时是不可中断的。共有4中原语,分别为进程阻塞、进程唤醒、进程创建、进程调度。

1. 进程的创建

    进程创建的过程:

1)给新进程分配一个唯一标识以及进程控制块

2)为进程分配地址空间

3)初始化进程控制块。

4)设置相应的队列指针。如把新进程加到就绪队列中

    在Linux系统中使用fork/exec来创建新进程,在Windows中使用createProcess来创建新进程。

2. 进程的撤销

    进程撤销的过程:

1)收回进程所占有的资源,如关闭打开的文件、断开网络连接、回收分配的内存

2)撤销该进程的PCB

3. 进程的阻塞

    进程阻塞的过程:

1)停止当前进程的执行

2)现行进程的CPU现场保存

3)现行状态由“运行”改为“阻塞”

4)转到进程调度程序

4. 进程唤醒

    进程唤醒的过程:

1)把阻塞进程从相应的阻塞队列中摘下

2)将现行状态改为就绪状态,然后把该进程插入就绪队列中

3)如果被唤醒的进程比当前运行进程的优先级更高,则重新设置调度标志。

    UNIX系统中的几个进程控制操作:

fork():通过复制调用进程来建立新的进程,是最基本的进程建立过程。

exec():包括一系列系统调用,它们是通过用一段新的程序代码覆盖原来的地址空间,实现进程执行代码的转换。

wait():提供初级进程同步操作,能使一个进程等待另外一个进程的结束。

exit():用来终止一个进程的执行。

3.4 线程

3.4.1 线程的概念

1. 线程概念的引入

    进程是资源的拥有者,同时也是CPU调度的基本单位,这双重身份使得在进程创建、撤销以及状态转换中,系统要为之付出较大的时间和空间开销。因为上述原因,系统中所设置的进程数目不宜过多,进程切换频率也不宜太高,但这样限制了进程并发程度的进一步提高。

    现代操作系统中把资源分配和调度分离开来,把进程作为资源分配的单元,把线程作为系统调度的单位。线程只拥有一些在运行时必不可少的资源(如程序计数器、一组寄存器和栈),它与同属一个进程的其他线程共享该进程拥有的全部资源。

    所以说线程是进程中的一个运行实体,是CPU的调度单位,即在同一进程中增加了多个执行序列(线程),有时将线程称为轻量级进程。

2. 线程的状态

    每个线程有一个thread结构,即线程控制块(简称TCB),用于保存自己的私有信息,主要包括:状态和调度信息、线程标识信息、现场信息、线程私有存储区、指针(指向TCB)。

    进程产生的同时产生第一个线程,其他线程在以后由任一线程请求创建。与进程一样,除了新建状态和终止状态,线程创建后运行过程中3个主要状态,分别是运行、就绪、阻塞。

3.4.2 线程与进程的比较

1. 调度单位

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

2. 并发性

    在引入线程的操作系统中,不仅进程之间可以并发执行,作为比进程更小的执行单位,一个进程中的多个线程之间也可以并发执行。

3. 拥有资源

    传统的操作系统中,进程是拥有资源的独立单位。在多线程环境中,进程仍然有一个进程控制块和用户地址空间。线程本身基本上不拥有资源,只拥有少量必不可少的资源。线程具有共享性,属于同一进程的线程共享进程的资源。

4. 系统开销

    由于创建或撤销进程时,系统都要为之分配或回收资源,操作系统所付出的时间和空间开销将显著地大于重建或撤销线程的开销。进程切换涉及当前进程CPU环境的保存及新被调度运行的进程CPU环境的设置,包括程序地址和数据地址等。而线程的切换只需保存和设置少量寄存器的内容。线程之间的切换比进程之间的切换花费的时间要少。由于同一进程中多个线程具有相同的地址空间,同一进程中的线程共享存储空间和文件,它们无需内核的支持就可以互相通信。

3.4.3 线程的实现

1. 用户级线程

    用户级线程只存在于用户级,线程的创建、撤销及切换都不利用系统调用实现,因而这种线程与内核无关,内核也不知道这种线程的存在。内核是以进程为单位,实现进程状态的转换,所以同一进程的线程之间的切换在用户空间实现,内核并不知道用户空间线程的活动。

    用户级线程由用户空间运行的用户级线程库实现,任何应用程序通过线程库进行程序设计。用户级线程库是线程运行的支撑环境。线程库是用于管理用户级线程的可以被所有系统共享的应用级实用程序。

    用户级线程的优缺点:

优点:

1)线程切换不需要内核特权方式,所以线程之间切换速度快

2)调度算法是应用程序特定的

3)用户级线程可以运行在任何操作系统上(只需要实现线程库)

缺点:

1)内核只将处理器分配给进程,所以同一进程的两个线程不能同时运行于两个处理器上。

2)大多数系统调用是阻塞的,因此,由于内核阻塞进程,故进程中所有线程也被阻塞。

2. 内核级线程

    内核级线程的线程管理有操作系统内核在内核空间实现,如线程创建、结束、同步等系统调用。内核调度以线程为单位。

    内核为应用程序开发者提供了一个应用程序设计接口API,应用程序通过调用API函数,实现线程的创建和控制管理。除了API函数调用外,应用程序区不需要有任何线程管理的其他代码。

      内核级线程的优缺点:

优点:

1)在多处理器上,同一进程内线程可以并发执行;

2)如果进程中的一个线程阻塞,内核能够调度同一进程内的其他线程占有处理器;

缺点:

1)当对线程的控制需要从一个线程传送到另一个线程时,需要经过用户态到和内核态,再从内核态到用户态的模式切换,系统开销较大。

3.混合式线程

    线程创建在用户空间完成,线程调度在内核态完成。


镜像电流源与比例电流源:原理、应用与性能优化 本文深入解析了镜像电流源与比例电流源的工作原理、核心应用与性能优化方法。镜像电流源利用匹配晶体管实现电流复制,是集成电路的基础;比例电流源通过发射极电阻实现电流缩放,应用更灵活。文章重点探讨了其作为有源负载提升放大器增益的关键应用,并分析了静态误差、输出阻抗和最小工作电压三大性能指标,最后介绍了威尔逊电流镜等进阶优化技术及实战设计要点。 阅读详情

相关推荐

智能车竞赛环岛处理全解析:从图像识别到状态机控制

在嵌入式系统与自动控制领域,状态机是管理复杂系统行为、实现清晰逻辑流的核心设计模式。其原理在于定义一组有限的状态,以及触发状态迁移的事件和条件,从而将连续、模糊的过程分解为离散、确定的阶段。这种技术在机器人导航、工业自动化等场景中价值显著,尤其适用于需要应对多种场景、做出序列化决策的场合。在智能车竞赛中,赛道元素识别与路径跟踪是典型应用,其中环岛作为连续闭环的复杂场景,对系统的鲁棒性和决策连贯性提出了更高要求。通过图像处理提取赛道边线、宽度和曲率等特征,结合陀螺仪等传感器数据,可以构建一个专门处理环岛的状态

weixin_34033624的博客 560

操作系统第二章​练习题

而在用户级线程调用一个系统调用时,由于内核并不知道有该用户级线程的存在,因而把系统调用看作是整个进程的行为,于是使该进程等待,而调度另一个进程执行,同样是在内核完成系统调用而返回时,进程才能继续执行。可见,进程具有一定的生命周期。4:线程除了拥有自己的少量资源外,一个进程的多个线程之间共享该进程所拥有的资源,故同一进程的所有线程都具有相同的地址空间并且还可以访问进程所拥有的资源,如已打开的文件和它所申请到的I/O设备等,但同时带来的缺点就是同一个进程中的不同线程之间的独立性比不同进程之间的独立性低得多。

2301_78420308的博客 2010

已解决-Parallels Desktop 16 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络

我是月球挖掘机,相信不少打工人为了尝鲜已经更新了MacOS 11 Big Sur,当然,苹果每次的系统大更新,都会给我们软件的功能无法使用惊喜,这次的也不例外。 这个问题是我在更新macOS Big Sur之后,Parallels Desktop打开虚拟机后,提示: 报错信息 网络初始化失败:您的虚拟机将继续正常运作,但将无法连接网络 这是我的软件版本: 起初我以为是我的虚拟机坏了,结果重装了一遍虚拟机,没有任何用处。我开始在网上找方法,只能找到那个使用命令行打开软件的命令,除此之外没有了

月球挖掘机 5万+

操作系统 - 线程与进程

操作系统 线程与进程

Bolg of EQuaker 1456

保姆级教程:在Ubuntu 22.04上搞定PX4 V1.14 + ROS2 Humble的HITL仿真(避坑实录)

本文提供在Ubuntu 22.04上配置PX4 V1.14与ROS2 Humble的HITL仿真环境的详细教程,涵盖环境准备、固件编译、QGroundControl配置、ROS2通信设置及联调测试。特别针对版本兼容性、Gazebo插件构建和MicroDDS配置等常见问题提供避坑指南,帮助开发者高效搭建无人机仿真系统。

weixin_30836759的博客 1001

Mujoco xml actuator

在MuJoCo中,actuator(执行器) 是用于定义外部力或力矩的机制,这些力或力矩可以作用于关节、肌腱或身体。执行器可以模拟各种类型的驱动器,如电机、液压缸、肌肉等。它们通过定义传输(transmission)和力生成机制(force generation)来实现对模型的控制。

m0_52113469的博客 2893

进程撤销原语

一个进程在完成其任务后应给予撤销,以便及时释放它所占有的各类资源。引起进程了撤销的事件大致有以下几类: 1、进程正常结束,到一个进程完成其任务后,应该将其撤销并释放其所占有的资源。 2、进程异常结束,在进程运行期间,如果出现了错误或故障,则进程被迫结束运行,导致进程异常结束的事件较多,如运行超时,内存不足。越界错误,I/O故障算数运算错误的。 3、外界干预进程用外界的干预而被迫结束运行,外界干预包括操作人员或操作系统的干预,如为了解除死锁,操作人员或操作系统要求撤销进程,当父进程终止时,操作系统会终止子孙进

weixin_56839811的博客 3758

SQLite学习——Dapper初识

dapper下载:https://www.nuget.org/packages/Dapper/1.40.0

jiDxiaohuo的博客 1295

操作系统——进程和线程(一文详解进程和线程关系)

操作系统——进程和线程(一文详解进程和线程关系)

xdx_dili的博客 868

STM32入门教程:无人机控制

我们将会一步一步引导您完成无人机的控制代码,包括无人机的姿态控制、飞行控制和通信控制等。第三步:配置无人机姿态控制 无人机的姿态控制是指控制无人机在空中的倾斜和转向。为了实现姿态控制,我们需要使用加速度计和陀螺仪传感器来获取无人机的姿态信息,并使用PID控制算法来控制无人机的姿态。在这一步骤中,您需要根据您使用的具体传感器和控制算法的要求进行更详细的配置和编码。在通信控制中,您需要考虑到通信的稳定性和可靠性。第五步:通信控制 无人机的通信控制是指与地面站或其他设备进行通信,传输飞行数据和接收飞行指令。

m0_75244442的博客 747

【推荐100个unity插件】在unity快速生成3D人物自然姿势和动作,且支持按图像生成姿势—— Pose AI

PoseAI是一款基于肌肉的智能动画创作工具,通过神经网络和逆运动学技术实现自然姿势生成。主要功能包括:自动/手动角色设置、神经控制装备、姿态估计与预览等。工具支持从2D图像生成3D姿势,并能在编辑器中实时预览动画效果。其神经网络架构采用前馈网络与ResNet结合的方式,通过多层全连接和ReLU激活函数处理输入数据。PoseAI简化了动画制作流程,提供高效的姿势创作解决方案,适用于Unity游戏开发。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1358

操作系统进程线程题库

网络课课后题 1、多道程序设计技术是操作系统中最早引入的软件技术,引入它的目的是 A、提高系统的实时响应速度 B、充分利用内存,有利于数据共享 C、充分利用CPU,提高CPU利用率 D、提高文件系统性能,减少内外存之间的信息传输量 解析: 2、下列关于进程控制块PCB的叙述中,哪一个是错误的? A、操作系统利用PCB描述进程的基本特征 B、一个PCB唯一对应一个进程 ...

闲狗的博客 5743

YOLO26改进策略【Neck】| arXiv 2025 分层多头注意力HMHA 子空间拆分提多样 + 通道重排降冗余,强化目标检测精度

HMHA(Hierarchical Multi-Head Attention,分层多头注意力)旨在解决传统多头注意力(MHA)在图像恢复任务中的核心缺陷——特征冗余。传统MHA将通道均匀拆分给各个头,导致不同头学习的子空间信息相似,进而出现多头关注同一区域、忽略退化区域修复的问题,限制了模型的特征表达能力。HMHA通过“分层子空间拆分+通道重排序”策略,让每个头学习差异化、互补的上下文特征,从根源上缓解冗余,提升图像恢复任务中对复杂退化场景的特征捕捉能力。

Limiiiing的博客 209

【操作系统·考研】进程与线程

进程是现代操作系统中实现并发执行和资源共享的基本单位,它由程序段、相关数据段以及进程控制块(PCB)组成,动态地经历创建、运行、就绪、阻塞和终止等状态。PCB作为进程存在的唯一标志,记录了进程的状态信息、资源分配情况及处理机上下文。进程间通过进程控制进行创建、阻塞、唤醒和终止操作,并通过共享存储、消息传递或管道等方式进行通信。线程是进程中更轻量级的实体,拥有独立的执行流但共享进程资源,也是处理机调度的基本单位,其状态转换与进程相似。在多线程模型中,有用户级线程(ULT)、内核级线程(KLT)以及组合方式..

qq_34920731的博客 2580

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

《操作系统》——进程与线程

进程与线程的基本介绍

m0_56069910的博客 2393

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

计算机操作系统之进程与线程

本篇文章将介绍计算机操作系统的相关内容,主要内容有进程,进程调度,并行与并发的概念,进程间通信,进程与线程的区别。

未见花闻的博客 2364

【操作系统】进程与线程

进程是正在运行的程序的实例,它是操作系统进行资源分配和调度的基本单位。例如,当你在电脑上打开一个文字处理软件,操作系统就会为这个软件创建一个进程,该进程会占用一定的内存空间、使用 CPU 时间片等系统资源,以保证这个文字处理软件能够正常运行。线程是进程中的执行单元,是 CPU 调度和分派的基本单位。一个进程可以包含多个线程,这些线程共享进程的资源(如内存空间、文件描述符等),同时每个线程又有自己独立的运行上下文(如程序计数器、寄存器组等),可以独立地执行任务。

Guiat的博客 1328

操作系统-进程与线程

操作系统用来保护系统资源和提高稳定性的重要机制。

LDM的博客 928

操作系统之线程和进程

操作系统相关内容, 进程和线程, 并发和并行.

trong_ 的烂笔头 2567

【操作系统】进程、线程、作业

多道程序设计,单道程序设计的缺点,多道程序设计的提出,多道程序设计的问题,进程,进程状态及状态转换,进程控制块(PCB),进程的组成与上下文,进程的队列,进程的类型与特征,进程间相互作用,进程的创建与撤销,进程与程序间的联系,轻进程,线程,作业

m0_74195626的博客 1144

操作系统——进程与线程(1)

进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位。进程控制块(PCB)、程序段、数据段。线程是进程中的一个实体,是被系续独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同属一个进程的其他线程共享进程所拥有的全部资源。执行态、就绪态、阻塞态。

Smooth的博客 1073

操作系统---进程与线程简述

进程控制的主要功能是对系统中所有的进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。简单说,进程控制就是要实现进程状态的转换进程通信就是指进程之间的信息交换进程是分配系统资源的单位(包括内存地址空间),因此各进程拥有的内存地址空间相互独立。为了保证安全,一个进程不能直接访问另一个进程的地址空间但是进程之间的信息交换又是必须实现的。

2401_84420653的博客 1551

【王道操作系统】ch2进程与线程-01进程与线程(长文预警)

定义:进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。通俗理解:进程控制就是要实现进程的状态转换。进程的运行环境也叫“进程上下文(Context)”,一个进程下CPU时会将其需要的运行环境存入PCB中,而当一个进程需要重新回到CPU运行时,就可以从PCB中恢复它的运行环境,让它继续往下执行。进程间通信(Inter-Process Communication,IPC)是指两个进程之间产生数据交互。特征管道通信共享存储通信方式。

verse_armour的博客 1144

操作系统 - 进程与线程的区别[超详解]

线程就是我们所谓的"跑起来的程序",那什么是可以跑起来的程序呢?就是类似我们在桌面上创建的对应软件的快捷方式,右击软件点击打开文件所在位置我们就可以看到xxx.exe文件,这样exe的文件我们统称为可执行文件当我们不想启动软件时,这些文件就会静静的"呆在"硬盘上,在我们双击之前是不会对系统有任何影响.

积跬步以至千里 1549

线程进程傻傻分不清?一文带你了解线程与进程的区别与联系| 操作系统| 进程| 线程

在操作系统中,进程和线程是两个重要的概念。它们都用于描述程序的执行过程,但它们之间也存在一些区别。本文将详细介绍线程和进程的概念,以及它们之间的区别和联系。线程和进程是操作系统中重要的概念,它们都用于描述程序的执行过程。线程是进程内部的最小执行单元,它可以共享进程的资源,并且可以同时执行。进程是操作系统中最小的资源分配单位,它拥有自己的地址空间、文件句柄等资源。进程和线程之间存在着密切的联系,一个进程可以包含多个线程,这些线程可以相互协作,共同完成一个任务。

2301_77611317的博客 1023

【操作系统】进程与线程概念基础知识

学习整理总结操作系统中进程与线程的相关基础知识,其中包括进程的概念、进程控制块、进程多种状态与三态模型,进程的上文文切换与控制,线程的引入与线程的概念,进程与线程的比较等,其中进程控制块、三态模型、进程与线程的对比及其各自的上下文切换与控制位重点内容。

weixin_46216674的博客 1453
上一篇: 操作系统--操作系统运行环境与运行机制
下一篇: 操作系统--处理机调度
Wang_AI
博客等级 码龄12年 988粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值