当前位置: 首页 > article >正文

【Linux】进程(2)状态

目录一、冯诺依曼二、操作系统三、进程状态1运行状态进程已获得CPU资源正在执行指令是进程生命周期中唯一能直接操作硬件、推进任务的阶段。2阻塞状态进程因等待特定事件如打印主动放弃CPU但仍保留在内存中仅不占用CPU资源。等待的事件触发后进程可直接进入就绪态等待下一次CPU调度。3挂起状态挂起是进程的特殊挂起状态进程会被操作系统从内存换出到外存如磁盘完全不占用CPU和内存资源仅在外存保留进程映像如PCB等。前面我们已经学习了进程的基本概念在进入进程状态前我们先了解下冯诺依曼体系结构一、冯诺依曼输入设备包括键盘 鼠标等中央处理器(CPU)含有运算器和控制器、寄存器等输出设备显示器等存储器是指内存是cpu和外设之间的巨大缓冲区cpu只能对内存进行读写不能访问外设这也是进程某个状态会发生的原因。二、操作系统操作系统对下与硬件交互管理所有的软硬件资源对上为用户程序应用程序提供⼀个良好的执行环境操作系统中不止对进程有着系统的管理对底层硬件也有管理类似与对进程的管理每个外设都有对应的结构体。我们可以看出进程是在操作系统中当进程需要被启用时会先进入cpu就绪队列中等待cpu调度与执行运行完还会重新返回到操作系统中。三、进程状态这里我们细说三种比较重要的状态1运行状态进程已获得CPU资源正在执行指令是进程生命周期中唯一能直接操作硬件、推进任务的阶段。R运行状态(running)运行状态不一定在运行它表示进程要么是在运行中要么是在运行队列里。让程序一直死循环且啥都不打印就会一直处于运行状态大家来猜一下子进程是什么状态子进程一直循环打印自己的信息。#include stdio.h #include sys/types.h #include unistd.h int main() { int ret fork(); // printf(%d, ret: %d\n, getpid(), ret); if (ret 0) { while (1) { printf(I am a child, pid: %d, ppid: %d\n, getpid(), getppid()); sleep(1); } } else if (ret 0) { printf(I am a father, pid: %d, ppid: %d\n, getpid(), getppid()); while (1) { } } return 0; }2阻塞状态进程因等待特定事件如打印主动放弃CPU但仍保留在内存中仅不占用CPU资源。等待的事件触发后进程可直接进入就绪态等待下一次CPU调度。S睡眠(可中断阻塞)状态(sleeping)意味着进程在等待事件完成没错子进程就是该状态为什么呢都是循环打印和不打印有什么区别呢在上述操作系统中外设也有对应的数据结构所以在打印时cpu会切换其他进程(显示器)而且cpu的运行速度是非常快的硬件存储时是非常慢的(打印过程)所以我们在查看进程时总是只能看见子程序在休眠因为代码执行快结果出的慢。D磁盘休眠(不可中断阻塞、不可中断挂起)状态(Disk sleep)有时候也叫不可中断睡眠状态在这个状态的进程通常会等待IO的结束。ctrlc是不能终止的当操作系统中内存要满时会挂起一些进程如果解决不了就会杀死一些进程而有时候会杀死错某些重要的进程如果在这之前将那些被杀死的程序改成D状态就不会被杀死相当于免死金牌OS无法将他们杀死。3挂起状态挂起是进程的特殊挂起状态进程会被操作系统从内存换出到外存如磁盘完全不占用CPU和内存资源仅在外存保留进程映像如PCB等。T停止(可中断挂起)状态(stopped)可以通过发送特定信号给进程来停⽌T进程。这个被暂停的进程也可以通过发送特定信号让进程继续运行。这个信号是什么呢首先kill -9是杀死进程那他其他的编号对应什么功能呢SIGSTOP对应的就是停止SIGCONT对应的就是继续分别是19、18X死亡状态(dead)这个状态只是⼀个返回状态你不会在任务列表里看到这个状态。Z僵尸状态(zombie)这是一个特殊的状态当子进程退出时父进程没有读到子进程退出的返回码时就会产生僵尸进程。僵死进程会以终止状态保持在进程表中并且会⼀直在等待父进程读取退出状态代码。所以会一直占用内存会产生内存泄漏#include stdio.h #include sys/types.h #include unistd.h int main() { int ret fork(); // printf(%d, ret: %d\n, getpid(), ret); if (ret 0) { //while (1) //{ // printf(I am a child, pid: %d, ppid: %d\n, getpid(), getppid()); // sleep(1); //} printf(I am a child, pid: %d, ppid: %d\n, getpid(), getppid()); sleep(1); } else if (ret 0) { printf(I am a father, pid: %d, ppid: %d\n, getpid(), getppid()); while (1) { } } return 0; }那我们如何去回收退出的子进程我们需要用到wait()函数。它是系统函数这里笔者就不给大家做函数解析了就直接用了。但有一点要提就是在等待的时候父进程会进入阻塞状态等待子进程结束才可以继续运行。孤儿进程父进程先于子进程退出的话子进程就会形成孤儿进程那这时候子进程退出是由谁来回收会不会也形成僵尸进程答案是肯定不会它会被1号init/systemd进程领养所以init/systemd进程就会正常进行回收。前后台运行这有个小知识点进程状态后带了号的是前台运行没有的是后台运行./test 启动进程会直接进入后台运行。前台运行会占用终端你无法输入可以用ctrlc来终止后台运行不会占用终端你可以输入但进程会继续在终端打印ctrlc终止不了直接用kill -9 PID来杀死就行了。这次的内容就到这我们学习了进程中最常见的状态其中有于冯诺依曼层次有关的还有怎么回收子进程这些都为重要大家自己写的时候要多留意谢谢支持。

相关文章:

【Linux】进程(2)状态

目录 一、冯诺依曼 二、操作系统 三、进程状态 (1)运行状态:进程已获得CPU资源,正在执行指令,是进程生命周期中唯一能直接操作硬件、推进任务的阶段。 (2)阻塞状态:进程因等待特…...

Canny边缘检测的精度天花板在哪里?深入剖析Devernay亚像素校正的误差与优化

Canny边缘检测的精度天花板在哪里?深入剖析Devernay亚像素校正的误差与优化 在工业检测、遥感成像等对精度要求严苛的领域,传统Canny算法提供的像素级边缘定位往往难以满足需求。当测量芯片电路线宽或分析卫星图像中的道路边界时,即使单个像素…...

2026 最新 Gemini 国内能用吗?无需特殊配置直连教程

在2026年的今天,AI工具已经成为我们日常生活和工作的重要助手。很多用户关心:Gemini这款由Google推出的强大AI模型,在国内能否顺畅使用?答案是肯定的。目前最推荐的访问方式是通过OneAiPlus(u.oneaiplus.cn)平台,它聚合…...

JDK安装与忍者像素绘卷:天界画坊Java SDK开发实战

JDK安装与忍者像素绘卷:天界画坊Java SDK开发实战 1. 前言:为什么需要这个SDK 如果你正在开发一个需要调用AI绘画服务的Java应用,直接处理HTTP请求、参数序列化和结果解析可能会很麻烦。本文将带你从JDK安装开始,一步步构建一个…...

BGE Reranker-v2-m3效果实测:在低资源方言查询(如粤语书面语)中保持83%+匹配准确率

BGE Reranker-v2-m3效果实测:在低资源方言查询(如粤语书面语)中保持83%匹配准确率 1. 引言:方言查询的匹配挑战 在日常信息检索中,我们经常遇到一个棘手问题:当用户使用方言或地区性语言进行查询时&#…...

2026年,高精度食品卫生级超声波液位计批发,究竟有何独特之处?

在食品行业的生产过程中,液位的精确测量至关重要,它关乎着产品的质量、生产的效率以及成本的控制。高精度食品卫生级超声波液位计作为一种关键的测量工具,在2026年的市场上正发挥着越来越重要的作用。下面我们就来详细探讨一下它的独特之处。…...

yolov8模型训练MOT20数据集 行人多目标跟踪计数数据集的训练及应用 如何根据mot20数据集 来实现行人目标识别,行人追踪,行人的计数

yolov8模型训练MOT20数据集 行人多目标跟踪计数数据集的训练及应用 如何根据mot20数据集 来实现行人目标识别,行人追踪,行人的计数 文章目录1. 数据准备与预处理2. 创建 data.yaml 文件3. 环境搭建4. 模型训练5. 推理与部署6. 性能评估7. 模型导出行人追…...

线性代数与矩阵运算:AI世界的数学基石——从SVD到特征值分解的实战解析

线性代数与矩阵运算:AI世界的数学基石摘要:线性代数是人工智能的数学语言。本文深入解析向量、矩阵、特征值、SVD等核心概念,结合Python代码实战,带你理解这些数学工具如何在降维、推荐系统、图像压缩等AI场景中发挥关键作用。一、…...

Claude Design发布:3个核心能力让设计到代码全程自动化,Adobe和Figma股价应声下跌

大家好,我是苍一,一个干了13年的后端开发,正在探索AI编程,从产品到开发的全生命周期最佳实践,如果您感兴趣,欢迎关注👇,看我如何自我革命。Anthropic旗下实验室刚刚推出了一款名为Cl…...

亲测有效:GPT-OSS-20B在M1 Mac上的运行效果与速度实测

亲测有效:GPT-OSS-20B在M1 Mac上的运行效果与速度实测 1. 开篇:打破认知的本地大模型体验 当大多数人还在依赖云端API访问大语言模型时,一个令人惊喜的事实正在发生:搭载M1芯片的MacBook已经能够流畅运行参数量达210亿的GPT-OSS…...

Android TTS开发避坑指南:从Google TTS到华为引擎,如何搞定多语言语音包下载与兼容性?

Android TTS开发实战:多引擎兼容与语言包管理全解析 在全球化应用开发中,文本转语音(TTS)功能的质量直接影响着用户体验。当你的应用需要支持英语、西班牙语、阿拉伯语等多语言场景时,不同设备厂商的TTS引擎差异就像一…...

DeEAR在客服质检中的落地应用:基于wav2vec2的语音情感多维评估实战案例

DeEAR在客服质检中的落地应用:基于wav2vec2的语音情感多维评估实战案例 1. 引言:客服质检中的情感识别挑战 在客服行业,传统的质检方式主要依赖人工抽查录音,不仅效率低下,而且难以客观评估服务过程中的情感表达。一…...

real-anime-z显存优化部署方案:6GB显存卡运行1024×1024真实系出图

real-anime-z显存优化部署方案:6GB显存卡运行10241024真实系出图 1. 模型简介 real-anime-z是基于Z-Image的Lora版本的真实系动画图片生成模型。该模型经过特殊优化,能够在仅6GB显存的显卡上稳定运行,并生成10241024分辨率的高质量真实系动…...

告别手动写提示词:AI头像生成器帮你快速设计专属头像

告别手动写提示词:AI头像生成器帮你快速设计专属头像 1. 为什么你需要AI头像生成器 在数字社交时代,头像已经成为个人品牌的重要组成部分。无论是社交媒体、工作平台还是游戏社区,一个精心设计的头像能让你在众多用户中脱颖而出。然而&…...

YOLO12手把手教学:从上传图片到获取检测结果完整流程

YOLO12手把手教学:从上传图片到获取检测结果完整流程 1. 引言 目标检测是计算机视觉领域最基础也最重要的任务之一,而YOLO系列模型因其出色的实时性能一直备受关注。2025年最新发布的YOLO12模型在保持实时推理速度的同时,通过创新的注意力机…...

Qwen3.5-9B-GGUF真实案例:软件需求文档→测试用例→接口定义链式生成

Qwen3.5-9B-GGUF真实案例:软件需求文档→测试用例→接口定义链式生成 1. 项目背景与模型介绍 Qwen3.5-9B-GGUF是阿里云开源的Qwen3.5-9B模型经过GGUF格式量化后的版本,特别适合在消费级硬件上部署运行。这个90亿参数的稠密模型采用了创新的Gated Delta…...

注意力机制模块:老树发新芽:SE 注意力结合硬件友好型 Swish 激活函数,在边缘端模型中的极限优化

前言:边缘AI的「不可能三角」与两条救赎路径 2026年的边缘AI领域正在经历一场静默的革命。Google的TPU v7 Ironwood芯片、Qualcomm的77 TOPS物联网处理器、Ambiq基于Arm Ethos-U85的Atomiq SoC——这些硅基巨兽的算力一路飙升,但当我们把目光从云端数据中心转向智能家居、工…...

08-第六篇-超越-Coding-的泛化

第六篇:超越 Coding 的泛化 把组织与治理问题收住之后,接下来就该追问另一件事:这套经验究竟能走多远。代码是这场变化最早长出清晰形状的地方。 这不是因为程序员比别人更懂 agent,而是因为代码天然更容易版本化、测试、差分、回滚。也因此,coding 最早把 harness engi…...

注意力机制模块:引入 DiNA(空洞邻域注意力),扩大模型感受野且不增加自注意力计算复杂度

本文导读:自注意力机制的 O(N) 复杂度始终是制约 Transformer 在高分辨率视觉任务中大规模部署的核心瓶颈。DiNA(Dilated Neighborhood Attention,空洞邻域注意力) 是 2026 年视觉注意力领域的一个重要技术突破——它在 NA(Neighborhood Attention)的基础上引入空洞(dil…...

注意力机制模块:全局注意力机制 GAM 详解:跨维度特征交互,超越传统 CBAM 的2026落地新宠

引言:注意力机制的“维度困境” 在深度学习领域,注意力机制(Attention Mechanism)已经成为提升模型性能的核心武器。从SENet首次将通道注意力引入CNN,到CBAM(Convolutional Block Attention Mechanism)同时使用通道和空间注意力,再到Transformer中的自注意力机制,注意…...

MusePublic圣光艺苑快速部署:免编译环境+Streamlit轻量框架优势分析

MusePublic圣光艺苑快速部署:免编译环境Streamlit轻量框架优势分析 1. 项目概述与核心价值 MusePublic圣光艺苑是一个专为艺术创作设计的AI绘画平台,它基于Stable Diffusion XL架构,通过精心设计的用户界面和优化的工作流程,为创…...

Hypnos-i1-8B应用场景:智能编程助手支持Python/Julia/Matlab多语言

Hypnos-i1-8B应用场景:智能编程助手支持Python/Julia/Matlab多语言 1. 模型概述与核心能力 Hypnos-i1-8B是一款专注于复杂逻辑推理和科学计算的8B参数开源大模型,基于量子噪声注入训练技术开发。这款模型特别适合作为智能编程助手,能够理解…...

靠谱的霍比特小屋供应商

靠谱的霍比特小屋供应商——山东溶石洞穴景观装饰工程在当今追求独特与个性化的时代,霍比特小屋凭借其童话般的外观和温馨的氛围,成为众多人心中理想的居住或休闲空间。而在寻找靠谱的霍比特小屋供应商时,山东溶石洞穴景观装饰工程脱颖而出&a…...

Dify医疗问答系统崩溃了?3个被90%团队忽略的调试盲区及紧急恢复流程

第一章:Dify医疗问答系统崩溃的典型现象与初步诊断当Dify医疗问答系统发生崩溃时,运维人员通常首先观察到以下典型现象:用户请求持续超时、管理后台无法加载知识库列表、LLM调用返回503或429错误,以及日志中高频出现context deadl…...

Spring Boot 4.0 Agent-Ready 架构面试高频题全解,含ByteBuddy动态代理源码级剖析(附ASM vs ByteBuddy性能对比基准测试)

第一章:Spring Boot 4.0 Agent-Ready 架构面试概览Spring Boot 4.0 正式引入 Agent-Ready 架构设计范式,标志着其运行时可观测性、动态增强与非侵入式诊断能力进入全新阶段。该架构并非简单叠加 Java Agent 支持,而是将字节码增强、JVM 生命周…...

别再羡慕别人的UI了!用Python tkinter的TinUI库,5分钟给你的按钮加上圆角和悬停效果

用Python tkinter的TinUI库打造现代感UI:5分钟实现圆角按钮与悬停效果 每次看到那些设计精美的软件界面,你是否也暗自羡慕?作为Python开发者,我们常常被tkinter默认控件的"复古"风格困扰。别担心,今天我要分…...

LVGL移植避坑指南:STM32+ST7735S屏幕的三种缓冲区配置实战(附代码)

LVGL移植实战:STM32驱动ST7735S屏幕的三种缓冲区配置策略 第一次接触LVGL的嵌入式开发者,往往会在移植阶段遇到各种性能问题。特别是当项目从Demo板转移到实际产品时,那些在开发板上流畅运行的界面,突然变得卡顿不堪。这通常与显示…...

从Simulink仿真到DSP28335硬件部署:我的PID闭环调试踩坑记录

从Simulink仿真到DSP28335硬件部署:我的PID闭环调试踩坑记录 在嵌入式控制系统的开发过程中,从仿真模型到硬件实现往往是一条充满挑战的道路。作为一名长期从事电机控制开发的工程师,我曾多次经历从Simulink的理想仿真环境到DSP28335实际硬件…...

高效视频修复指南:使用Untrunc专业恢复损坏的MP4/MOV文件

高效视频修复指南:使用Untrunc专业恢复损坏的MP4/MOV文件 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 当珍贵的视频文件因意外中断而损坏时&#xff…...

为什么ViTPose正在重新定义人体姿态估计的终极解决方案?

为什么ViTPose正在重新定义人体姿态估计的终极解决方案? 【免费下载链接】ViTPose The official repo for [NeurIPS22] "ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation" and [TPAMI23] "ViTPose: Vision Transformer for…...