进程的相关知识

关于进程、线程相关知识详解 当一个线程开始运行后,除非它主动地交出 CPU 的使用权,否则它所在的进程当中的其他线程无法运行,因为用户态的线程没法打断当前运行中的线程,它没有这个特权,只有操作系统才有,但是用户线程不是由操作系统管理的。如果两个进程「要求的服务时间」相同时,「等待时间」越长,「响应比」就越高,这就兼顾到了长作业进程,因为进程的响应比可以随时间等待的增加而提高,当其等待时间足够长时,其响应比便可以升到很高,从而获得运行的机会;但在 1 秒钟期间,它可能会运行多个进程,这样就产生并行的错觉,实际上这是并发。 阅读详情

程序和进程的区别:

程序是静态的,就是我们通常编写的代码
进程是动态的,完成对程序的一次执行,执行完成该进程就over。

进程是拥有资源的最小单位

linux是用命令来管理进程的,如: ps, at, top, kill, pstree, nice, renice等

进程由三个部分组成:

进程控制块(PCB)—->描述和控制进程运行的数据结构;主要包含进程标示符,进程控制和调度信息等
代码段—->存放程序代码的数据
数据段—->存放程序的参数以及程序的局部变量,全局变量,常数以及动态数据分配的数据空间

进程的主要特征:

动态性: 进程的实质是程序的一次执行过程, 进程是动态产生,动态消亡
并发性: 可以和其他进程一起并发执行
独立性: 进程是一个能独立运行的基本单位,也是系统分配资源和调度的基本单位
异步性: 进程间的相互制约,使进程具有执行的间断性,即进程按各自独立的,不可预知的速度向前推进

因为进程执行期间的间断性,运行中的进程有三种基本状态:

就绪状态—->资源已经就绪,就等CPU调度
运行(执行)状态—->资源就绪,也得到CPU资源
阻塞状态—->缺少资源

Linux系统启动时处于核心模式,此时只有一个进程,初始化进程(init进程),进程号为1, Linux系统中的所有进程都是由1号i进程直接或间接创建的!

在系统中,默认的最大进程数是512,即系统可同时容纳512个进程个数!

进程的终止:

子进程一旦被创建就与其父进程一起被系统进行调度,子进程运行完成后并不是立即释放所占有的资源(进程控制表项),
而是作为疆尸进程存在于系统,直到父进程正常退出或者调用wait()函数,子进程才彻底终止。

注意:调用了*wait()函数的父进程 会马上阻塞自己,直到wait()函数等到一个子进程变成僵尸进程,wait()就回收该进程的资源,并返回子进程结束状态值*

孤儿进程:就是父进程在子进程over之前over,此时的子进程就变成了孤儿进程,该子进程就会被init进程管理,init进程将控制它退出后的资源回收任务。

产生孤儿进程:

#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>

using namespace std;


int main()
{
    pid_t pid;

    pid = fork();

    if(pid == 0){
        //child
        printf("I am child process, pid = %d\n", getpid());
        sleep(3);
        printf("ppid1 = %d\n", getppid());
    }else if(pid > 0){
        //parent
        printf("I am parent process, pid = %d\n", getpid());
        printf("ppid2 = %d\n", getppid());

    }else{
        printf("errno = %d\n", errno);
        printf("create child error\nd");
    }

    return 0;
}

测试结果:

[root@localhost mine]# g++ fork.cpp -o fork
[root@localhost mine]# ./fork 
I am parent process, pid = 8538
ppid2 = 8353
I am child process, pid = 8539
[root@localhost mine]# ppid1 = 1
^C
[root@localhost mine]# 

产生僵尸进程:

#include <iostream>
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <sys/wait.h>

using namespace std;


int main()
{
    pid_t pid;

    pid = fork();

    if(pid == 0){
        //child
        printf("I am child process, pid = %d\n", getpid());
        sleep(3);
        printf("ppid1 = %d\n", getppid());
    }else if(pid > 0){
        //parent
        printf("I am parent process, pid = %d\n", getpid());
        printf("ppid2 = %d\n", getppid());

        int status;
        wait(&status);

    }else{
        printf("errno = %d\n", errno);
        printf("create child error\nd");
    }

    return 0;
}

测试结果:

[root@localhost mine]# ./fork 
I am parent process, pid = 8734
ppid2 = 8353
I am child process, pid = 8735
ppid1 = 8734
[root@localhost mine]# 
Lisflood 文献:基于SWMM和LISFLOOD-FP模型的居住区低影响开发模拟评价。问题:多个节点溢流同时,不行,待解决。目录下,cmd命令行。 阅读详情

相关推荐

【软件介绍】RVC本地部署使用方法

【摘要】RVC是一款功能强大的开源语音转换工具,具有实时处理、多音效选择、高质量音频处理等特点。文章详细介绍了RVC的安装与使用方法:1)配置Python环境;2)根据电脑系统选择对应安装包解压;3)启动程序进入浏览器操作界面。重点讲解了声音克隆的关键步骤:建议使用短音频素材,选择合适训练方法(推荐pm或rmvpe),设置100次训练轮数,生成的模型文件存入weights文件夹。最后通过上传音频即可实现声音克隆。操作过程需注意保持程序运行状态,并提供了相关资源下载地址。

心动的那一刻,记忆便盛开了花 2976

进程 相关知识

计算机中的进程相关概念

weixin_53453184的博客 900

电商秒杀场景下,如何用Redis+Lua脚本实现原子性库存扣减(附完整代码)

本文针对电商秒杀场景下的高并发与超卖难题,详细解析了如何利用Redis的原子性命令与Lua脚本实现可靠的库存扣减。通过对比多种方案,阐述了Redis+Lua作为黄金搭档的技术原理,并提供了从基础扣减到预扣减模型的完整代码实现,确保在高并发下数据的一致性与系统性能。

weixin_29219539的博客 503

进程相关知识

2302_76213070的博客 176

UniApp消息推送进阶:不用插件实现动态语音播报(含保活策略)

本文详细介绍了在UniApp中实现动态语音播报的进阶方案,无需依赖第三方插件。核心采用透传消息传递动态数据,结合本地TTS引擎合成语音,并针对不同安卓厂商提供了深度通道配置与差异化保活策略,有效解决了App退至后台或被清理后语音播报失效的难题。

weixin_29224309的博客 486

STM32异常与中断过程详解

1. 异常与中断概念引入 异常主要是指来自CPU内部的意外事件,比如执行了未定义指令、算术溢出、除零运算等发生在CPU内部的意外事件,这些异常的发生,会引起CPU运行相应的异常处理程序;中断一般来自硬件(如片上外设、外部I/O输入等)发生的事件,当这些硬件产生中断信号时,CPU会暂停当前运行的程序,转而去处理相关硬件的中断服务程序。但无论是异常还是中断,都会引起程序执行偏离正常的流程,转而去执行异常/中断的处理函数。 下面对异常和中断的介绍,如果中断信号的产生原因来自CPU内部,则称之为异常;如果中断信号来

luobeihai的博客 1万+

进程的相关知识总结

前几篇博文中我已经介绍过进程的创建以及一些基本知识,这里就不再赘述,本篇博文我主要会涉及进程的终止细节以及父进程对子进程的监控,还有函数组exec()1.进程的终止(1)_exec()和exit()进程终止分俩中情况,一种是收到某种信号异常终止,另一种是调用_exit()正常退出#include<unistd.h> void _exit(int status);参数status保存了进程的终止状态,

Shreck66的专栏 1055

VN5620以太网测试——DoIP配置

CANoe(CAN open environment)VN5620 :是一个紧凑而强大的接口,用于以太网网络的分析、仿真、测试和验证。VN5620 接口支持各种可能的应用。它适用于与其他总线系统、网络参与(例如在模拟和生成帧、测试中的负载和错误)的同步以太网监控。在2021年Vector公司的以太网接口卡VN5610和VN5640设备已经陆续停产,相应被VN5620和VN5650代替。参考文章了解DoIP协议——汽车以太网应用介绍。

诊断协议那些事儿's blog 3006

进程相关知识总结

进程相关知识总结

ybbgrain的历程 973

2025年CSP-X初赛真题及答案解析(江西)(完善程序第1题)

2025年CSP-X初赛真题及答案解析(江西)(完善程序第1题)

王老师青少年编程 713

SAP Joule for Consultants 与 Joule for Developers 全面解读

SAP推出面向不同用户群体的Joule AI助手:开发者版(Joule for Developers)专注于编码提效,嵌入开发工具链辅助生成、重构和测试代码;顾问版(Joule for Consultants)聚焦业务场景,集成SAP云应用知识库,为咨询项目提供方案设计、差距分析和实施指引。两者共享AI底座但功能侧重点不同:开发者版优化技术开发流程,顾问版加速项目交付周期。典型应用场景包括制造业云转型方案制定和ABAP代码迁移,分别展示了两版本在业务决策支持和技术实施中的价值。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 538

进程相关知识day1

【代码】进程相关知识day1。

2302_76213070的博客 918

AI应用架构师视角:AI技术引发的全球经济格局重构,你看懂了吗?

本文将从AI应用架构师的独特视角,拆解AI技术栈(算力/算法/数据)如何通过"架构渗透"重塑产业价值链,分析中美欧等主要经济体的AI战略差异如何改写全球分工格局,并为企业与个人提供一套可落地的"AI经济适应性框架"。当OpenAI的GPT-4在代码生成、多模态理解上展现出超越人类的能力,当英伟达的H100芯片成为全球科技巨头争抢的"数字石油",当中国的AI大模型在电商、金融等场景实现规模化落地——我们正站在一场由AI技术引发的全球经济重构的临界点上。AI重构全球经济格局的过程,既是挑战,更是机遇。

小白菜的博客 1258

进程相关知识点

来咯来咯,小进程来咯

qq_61638209的博客 325

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

进程线程相关知识

进程线程相关知识 进程间的通信方式之一:队列 进程共享数据的方式:匿名管道、无名管道、内存映射 Queue:只能在Process()创建出来的进程间通信。 Manager().Queue():用POOL进程池创建的进程,需要用这个来创建队列。 线程的队列: 导入方式是python3:from queue import Queue    python2:from Queu...

kevin_junjie的博客 224

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Linux 进程相关知识总结

进程是操作系统分配资源的最小单位,运行时会从磁盘读入内存执行。进程在操作系统中以并发形式执行,系统为每个进程分配时间片,进程运行至结束或时间片耗尽后,切换到调度队列下一个进程。进程是操作系统进行资源分配和调度的基本单位,是程序的一次执行过程。它不仅包含程序的代码和数据,还包括程序计数器、寄存器状态、内存指针等运行时状态信息。动态性:进程是程序的执行过程,有创建、运行、消亡的生命周期并发性:多个进程可在同一时间间隔内同时运行独立性:进程拥有独立的地址空间和系统资源。

qq_69186673的博客 1915

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

进程相关知识梳理

子进程拷贝父进程(除进程id号)外的所有内容,不过子进程从fork函数之后开始运行程序,规定父进程会回收子进程产生的资源,如果父进程先于子进程结束,子进程将会变成孤儿进程,由init进程收养。3、守护进程:是一个后台进程(不属于交互类进程),在操作系统启动的时候就可以运行的一个进程,在操作系统即将结束的时候结束的进程。进程:一个程序执行的体现,包括创建、调度、执行、消亡,是系统资源分配的最小单位。子进程id号返回给父进程,0返回给子进程。1、交互类进程:由shell控制,分为前台进程、后台进程两种。

cxy255256的博客 1046

进程之相关知识点总结

进程相关知识点详解

m0_63904107的博客 1352

【Linux】进程状态相关知识详细梳理

可以看到,子进程退出后,父进程没有进行资源回收(调用wait()),子进程的状态就会变成“Z+”,其中Z表示僵尸状态 ,+表示进程属于前台进程的一部分。每个僵尸进程在进程表中保留一个条目,系统的进程表是有限的。如果僵尸进程数量过多,可能会导致进程表满,新的进程无法创建。fork函数“有两个返回值”,父进程会返回子进程的pid,子进程会返回0,于此同时,子进程会继承父进程的代码以及数据(所有运行在系统里的进程都以task_struct链表的形式存在内核里,也可以称为进程表。那么如果父进程先退出呢?

fulufulucode的博客 875
上一篇: fork函数
下一篇: UNIX网络编程:IPC之消息队列
lm_123_456
博客等级 码龄11年 35粉丝 86原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值