Linux多任务-进程篇

Delta-Sigma调制(DSM)技术 前言 数字信号处理和通信系统的性能很大程度上受到了模拟信号到数字信号转换接口——ADC的精度和分辨率的限制。而传统的线性脉冲编码调制(PCM)ADC受到了制造工艺的限制,无法达到很高的分辨率。但基于Delta-Sigma调制技术的ADC可以在现有工艺下实现高分辨率(大于16位),同时由于结构简单,所以易于实现。低成本高性能使得Delta-Sigma调制技术得到了广泛的应用。 Delta-Sigma型ADC的结构原理图如下图所示: 它最大的优势在于仅用1位ADC进行数据转换,同时其模拟电路部分结构简单不需要 阅读详情

一.进程

        进程:正在执行的程序实例,需要消耗内存和CPU,是系统进行资源调度和资源分配的独立单位。(系统资源分配的最小单位是进程,而 CPU 调度(执行)的最小单位是线程)。

进程是由多道程序的并发执行而引出的,它和程序是两个截然不同的概念。程序是静态的,
进程是动态的,进程的基本特征是对比单个程序的顺序执行提出的。
1)动态性。进程是程序的一次执行,它有着创建、活动、暂停、终止等过程,具有一定的
生命周期,是动态地产生、变化和消亡的。动态性是进程最基本的特征。
2)并发性。指多个进程同存于内存中,能在一段时间内同时运行。引入进程的目的就是使
进程能和其他进程并发执行。并发性是进程的重要特征,也是操作系统的重要特征。
3)独立性。指进程是一个能独立运行、独立获得资源和独立接受调度的基本单位。凡未建
立PCB的程序,都不能作为一个独立的单位参与运行。
4)异步性。由于进程的相互制约,使得进程按各自独立的、不可预知的速度向前推进。异
步性会导致执行结果的不可再现性,为此在操作系统中必须配置相应的进程同步机制。

进程和程序的区别:

1.程序是一组数据指令集合,存储在硬盘空间,是静态的;

2.进程存储在内存空间,执行过程需要CPU参与(内存+CPU);

3.进程具备动态生命周期,从启动到消亡;

4.程序运行起来产生一个进程,也可产生多个进程;

5.在一个进程中也可以执行多个程序。

二.进程的创建

在操作系统中,终端用户登录系统、作业调度、系统提供服务、用户程序的应用请求等都会引起进程的创建。操作系统创建一个新进程的过程如下(创建原语):

创建时的操作:

1)为新进程分配一个唯一的进程标识号,并申请一个空白PCB(PCB是有限的)。若PCB申
请失败,则创建失败。
2)为进程分配其运行所需的资源,如内存、文件、I/O设备和CPU时间等(在PCB中体现)。这些资源或从操作系统获得,或仅从其父进程获得。若资源不足(如内存),则并不是创建失败,而是处于创建态,等待内存资源。
3)初始化PCB,主要包括初始化标志信息、初始化CPU状态信息和初始化CPU控制信息,
以及设置进程的优先级等。
4)若进程就绪队列能够接纳新进程,则将新进程插入就绪队列,等待被调度运行。

./a.out ------>启动进程
进程在被创建的时候,操作系统会为该进程分配0-4G的虚拟内存空间。

三.进程的调度

CPU调度进程:

        宏观并行,微观串行(并发)

        并行:多个任务同时执行

调度算法:

1.时间片轮询(RR)算法

        时间片轮转(RR)调度算法主要适用于分时系统。这种算法最大的特点是公平,系统将所有的就绪进程按FCFS策略排成一个就绪队列,每隔一定的时间(如30ms)便产生一次时钟中断,激活调度程序进行调度,将CPU分配给就绪队列的队首进程,并令其执行一个时间片。在执行完个时间片后,即使进程并未运行完成,它也必须释放出(被剥夺)CPU给就绪队列的新队首进程,而被剥夺的进程返回到就绪队列的末尾重新排队,等候再次运行。

        在RR调度算法中,若一个时间片尚未用完而当前进程已运行完成,则调度程序会被立即激活;若一个时间片用完,则产生一个时钟中断,由时钟中断处理程序来激活调度程序。
        在RR调度算法中,时间片的大小对系统性能的影响很大。若时间片足够大,以至于所有进程都能在一个时间片内执行完毕,则时间片轮转调度算法就退化为先来先服务调度算法。若时间片很小,则CPU将在进程间过于频繁地切换,使CPU的开销增大,而真正用于运行用户进程的时间将减少。因此,时间片的大小应选择适当,时间片的长短通常由以下因素确定:系统的响应时间、就绪队列中的进程数目和系统的处理能力。

2.先来先服务(FIFS)算法

在作业调度中,FCFS 调度算法每次从后备作业队列中选择最先进入该队列的一个或几个作
业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。
在进程调度中,FCFS调度算法每次从就绪队列中选择最先进入该队列的进程,将CPU分配
给它,使之投入运行,直到运行完成或因某种原因此阻塞时才释放CPU。

3.优先级调度算法

在作业调度中,优先级调度算法每次从后备作业队列中选择优先级最高的一个或几个作业,将它们调入内存,分配必要的资源,创建进程并放入就绪队列。在进程调度中,优先级调度算法每次从就绪队列中选择优先级最高的进程,将CPU分配给它,使之投入运行。根据新的更高优先级进程能否抢占正在执行的进程,可将该调度算法分为如下两种:

1)非抢占式优先级调度算法。当一个进程正在CPU上运行时,即使有某个优先级更高的进程进入就绪队列,仍让正在运行的进程继续运行,直到由于其自身的原因此让出CPU时(任务完成或等待事件),才将CPU分配给就绪队列中优先级最高的进程。

2)抢占式优先级调度算法。当一个进程正在CPU上运行时,若有某个优先级更高的进程进入就绪队列,则立即暂停正在运行的进程,将CPU分配给优先级更高的进程。而根据进程创建后其优先级是否可以改变,可将进程优先级分为以下两种:

1)静态优先级。优先级是在创建进程时确定的,且在进程的整个运行期间保持不变。确定静态优先级的主要依据有进程类型、进程对资源的要求、用户要求。优点是简单易行,系统开销小;缺点是不够精确,可能出现优先级低的进程长期得不到调度的情况。

2)动态优先级。创建进程时先赋予进程一个优先级,但优先级会随进程的推进或等待时间
的增加而改变,以便获得更好的调度性能。例如,规定优先级随等待时间的增加而提高,
于是,对于优先级初值较低的进程,在等待足够长的时间后也可获得CPU。
一般来说,进程优先级的设置可以参照以下原则:

1)系统进程>用户进程。系统进程作为系统的管理者,理应拥有更高的优先级。

2)交互型进程>非交互型进程(或前台进程>后台进程)。大家平时在使用手机时,在前台运行的正在和你交互的进程应该更快速地响应你,因此自然需要被优先处理。
3)I/O型进程>计算型进程。所谓I/O型进程,是指那些会频繁使用I/O设备的进程,而计算型进程是那些频繁使用CPU的进程(很少使用I/O设备)。我们知道,I/O设备(如打印机)的处理速度要比CPU慢得多,因此若将I/O型进程的优先级设置得更高,就更有可能让I/O设备尽早开始工作,进而提升系统的整体效率。

4.短作业优先(SJF)调度算法

短作业(进程)优先调度算法是指对短作业(进程)优先调度的算法。短作业优先(SJF)
调度算法从后备队列中选择一个或几个估计运行时间最短的作业,将它们调入内存运行;短进程优先(SPF)调度算法从就绪队列中选择一个估计运行时间最短的进程,将CPU分配给它,使之立即执行,直到完成或发生某事件而阻塞时才释放CPU。
例如,考虑表2.2中给出的一组作业,若系统采用短作业优先调度算法,其平均等待时间、
平均周转时间和平均带权周转时间见表2.3。

SJF算法也存在不容忽视的缺点:
1)该算法对长作业不利,由表2.2和表2.3可知,SJF调度算法中长作业的周转时间会增加。更严重的是,若有一长作业进入系统的后备队列,由于调度程序总是优先调度那些(即
使是后进来的)短作业,将导致长作业长期不被调度,产生饥饿现象(注意区分死锁,后者是系统环形等待,前者是调度策略问题)。

2)该算法完全未考虑作业的紧迫程度,因此不能保证紧迫性作业会被及时处理。

3)由于作业的长短是根据用户所提供的估计执行时间而定的,而用户又可能有意或无意地缩短其作业的估计运行时间,致使该算法不一定能真正做到短作业优先调度。

        SPF 算法也可以是抢占式的(若未特别说明,则默认为非抢占式)。当一个新进程到达就绪队列时,若其估计执行时间比当前进程的剩余时间小,则立即暂停当前进程,将CPU分配给新进程。因此,抢占式SPF调度算法也称最短剩余时间优先调度算法。

四.进程的状态

普适进程状态(三种基本状态):

linux进程状态:

1.运行态(用户运行态、内核运行态)        R

        正在执行,且被CPU任务调度所执行的进程
2.就绪态        R

        正在执行,没有CPU任务调度执行的进程(只缺少cpu)
3.可唤醒等待态        S

        也称为睡眠态,阻塞等待资源的进程
4.不可唤醒等待态         D
        不想被CPU任务调度所打断的进程任务可以设置为不可唤醒等待态
5.暂停态        T

        被暂停执行的进程
6.僵尸态        Z

        进程执行结束,空间没有被回收
7.结束态        X        

        进程执行给束,空间被回收

五.进程的相关命令

1.ps -aux

查看操作系统所有进程的相关参数:PID(进程ID号)、创建者、状态、CPU占有率、内存占有率。

ps -aux | grep a.out(将ps -aux的输出作为grep的输入,查找与a.out相关的字符串)

| 管道:将前面的输出作为后面的输入

grep:字符串查找

2.ps -ef

查看操作系统所有进程的相关参数:PID(进程ID),PPID(父进程ID)

允许一个进程创建另一个进程,此时创建者称为父进程,被创建的进程称为子进程。子进程可以继承父进程所拥有的资源。当子进程终止时,应将其从父进程那里获得的资源还给父进程。

3.top

动态查看进程状态及CPU占有率,内存占有率

4.pstree

查看进程间的创建关系(族谱图)

pstree  -sp  进程ID

查看指定ID的进程的创建关系

5.kill

kill  -信号名称/信号ID  PID

给PID对应的进程发送一个信号

kill  -l        查看系统定义出来的信号

kill  -9  PID :结束一个进程

kill  -19  PID :停止一个进程

S+:处于可中断睡眠状态的前台进程

S:处于可中断睡眠状态的后台进程

T:处于暂停态的后台进程

6.fg  后台进程编号

将后台进程调到前台

jobs:查看当前后台进程编号

六.进程相关函数

  • fork()

子进程:操作系统通过拷贝完整父进程0-3G内存空间数据到子进程

内核空间拷贝部分内容:PCB块;程序执行的位置;文件管理;

                                        PID不拷贝,PPID不拷贝

注意:

1.进程公用3G-4G这1G的内核空间;

2.各自进程0-3G用户空间互相独立,互不干扰,不能互相通信;

3.进程间不能直接通信,需要借助内核空间(IPC机制)。

pid_t  fork(void)
功能:创建新的进程,新进程叫子进程,原来的进程为父进程。

参数:

返回值:

        成功:父进程中返回子进程的PID号

                   子进程中返回0;

        失败:-1,没有新进程被创建

getpid():获取当前进程自己的PID号

getppid():获取当前进程的父进程的PID号

进程的退出:

1.进程执行结束退出

2.主函数中遇到return退出

3.通过信号结束一个进程(kill  -9  进程ID)

4.exit,_exit,_Exit()结束进程(也可直接结束main函数)

  • exit()

void  exit(int status)

功能:退出一个进程

参数:

        status:进程结束时的状态

                0:正常退出

                !0:因为其他原因退出

void  _exit(int status);

void  _Exit(int status);

僵尸进程与孤儿进程:

僵尸进程:进程已退出,但其资源空间没有被其父进程回收。

孤儿进程:父进程先结束,其父进程创建的子进程成为孤儿进程,将会被系统进程所收养,结束后,由系统进行回收。(守护进程)

如何避免僵尸进程产生:

1.由其父进程对僵尸态进程进行回收:wait(),waitpid();

2.让进程成为孤儿进程,结束后,由操作系统回收。

  • wait()

#include<sys/wait.h>

#include<sys/types.h>

pid_t  wait (int * wstatus);

功能:回收僵尸态进程

参数:

        wstatus:接收子进程的exit()中的参数,判断子进程是如何死亡的,自杀还是他杀(指针指向的变量中的某一位接收)

返回值:

        成功:回收到的子进程ID号

        失败:-1

wait(NULL)

  pid_t pid = fork();
   if( pid >0 )
    {
        int wstate;
       pid_t wpid = wait(&wstate);
       if(-1 == wpid)
         {
             perror("wait error");
             exit(1);
         }
         printf("wpid = %d\n",wpid);
         if(WIFEXITED(wstate))    //为真说明进程正常结束,即主动调用exit
         {
            printf("son over normally,status = %d\n",WEXITSTATUS(wstate));
         }
         else if(WIFSIGNALED(wstate))    //为真说明被信号杀死
         {
             printf("son over by signal,num = %d\n",WTERMSIG(wstate));
         }
     }
  • waitpid()

pid_t waitpid(pid_t pid, int *status, int options);
功能:回收指定进程的资源
        和wait功能相似,比wait更灵活
参数:
pid:
        <-1回收指定进程组内的任意子进程 (-100.等待GID=100的进程组中的任意子进程)
        -1 回收任意子进程,组内外
        0 回收和当前调用waitpid一个组的所有子进程,组内
        >0回收指定ID的子进程


status :进程退出时候的状态,
        如果不关注退出状态用NULL;

options选项:
        0 表示回收过程会阻塞等待
        WNOHANG 表示非阻塞模式回收资源。
返回值:
        成功 返回接收资源的子进程pid
        失败 -1
        设定为非阻塞且没有回收到子进程返回0


waitpid如果以阻塞方式回收和wait使用方式一样
如果父进程有任务需要执行,则可以选择waitpid非阻塞方式回收,此时搭配轮询方式实现。

七.exec函数簇

作用:在一个进程里面执行外部的可执行程序(外部命令)

外部命令:bin下的,ls,cp,mv...

内部命令:cd

命令别名:ll(ls -l别名)

本质:exec将要执行的外部程序替换到了进程的文本区,后面的原代码不会被执行, 不会创建新进程

int  execl(const  char* path,const char *arg,......(可省略参数))

l:list列表,把参数列出来

参数:

        path:可执行程序所在路径

                    ”/bin/ls“

        arg:执行可执行程序时传递的参数

        NULL:参数结束标志

返回值:

        失败:-1

        成功不返回

int  execlp(const  char* path,const char *arg,......(可省略参数))

功能:执行PATH环境变量保存的路径中的可执行程序(/bin,/usr/bin)

参数:

        file:可执行文件的名称

        arg:执行可执行程序时,传递的参数

        NULL: 参数的结束标志

env查看系统定义出来的环境变量

int  execv(const  char* path, char *const argv[ ])

将参数用argv数组保存

int  execvp(const  char* path, char *const argv[ ])

结合execlp与execv,自动去/bin下找path,同时argv保存参数

认知建模:模拟人类决策过程的AI方法 认知建模的目的在于构建能够模拟人类认知和决策过程的模型,通过AI技术将人类的思维、判断和选择等过程以数字化的形式呈现出来。其范围涵盖了多个领域,包括心理学、人工智能、经济学、管理学等。在心理学领域,认知建模可以帮助研究人员更好地理解人类的认知机制;在人工智能领域,可用于开发具有更智能决策能力的系统;在经济学和管理学中,能辅助进行市场预测、战略规划等决策制定。本文首先介绍认知建模的背景知识,让读者对该领域有初步的了解。接着阐述核心概念和它们之间的联系,通过示意图和流程图直观展示。 阅读详情

相关推荐

企业微信群机器人配置全攻略:从零到消息推送的完整流程

本文详细介绍了企业微信群机器人的配置与使用全流程,从零开始指导如何创建机器人、获取Webhook地址,到通过HTTP请求发送文本、Markdown、图片及模板卡片等多种消息类型。内容涵盖核心的接口配置、安全实践及实战应用场景,帮助开发与运维团队快速构建自动化消息推送中枢,提升协作效率。

weixin_29231725的博客 842

嵌入式Linux C多任务编程(进程篇)

对于Linux C下多任务编程 进程部分内容,后面会持续更新进程间通信、线程等一系列内容,间多任务编程完整的整理一遍。

十里长街走马的博客 1831

晶体管的 栅极gate 材料选用 多晶硅polysilicon,并采用 自对准工艺 self-aligned IC后端版图 【VLSI】

本文为了解决为什么要使用多晶硅作栅极触点的问题,先介绍了MOS管的工作原理是通过栅极上所加的电压控制漏极与源极之间电流,然后解释了栅极的材料为什么选用多晶硅,然后介绍了晶体管里栅极的自对准工艺(Self-Aligned Gate )。

Jie_MSD的博客 1万+

linux——进程(process)

在linux系统中,触发任何一个事件时,系统都会将它定义为一个进程,并且给予该进程一个ID称为PID,同时依据启发该进程的用户与相关属性关系,给予这个PID一组有效的权限设定。 1、进程与程序 执行一个程序或指令就产生一个进程,获得一个PID,程序一般是存放在实体磁盘中,透过用户的执行来触发,触发后会加载到内存中成为一个个体,这就是进程,程序被触发后,执行者的权限与属性、程序的程序代码与所需数...

小顽固的博客 1328

PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java

PTA 7-8 暴力小学(二年级篇)-求出4个数字 (10分)java 小博是新城小学二年级学生,这孩子人很老实,数学、语文成绩都是中等。不过一旦坐在电脑前,写起代码来,则有些霸气侧漏,尤其擅长各种暴力方法。本题就是数学莫老师的题目之一,请你和小博一起暴力求解吧。 输入格式: 第一行给出这个和N(图中例子的和N为2000)。 输出格式: 第一行输出所有解的数目K,随后K行按照DCBA 4位数字从...

qryzhfj的博客 2188

10bit SAR ADC电路:200多页设计与仿真文档,附gpdk045工艺与testbench,可直接导入Virtuoso仿真,含以太网、PLL电路例程及进阶ADC

拥有超过200页的详细设计和仿真文档,它以gpdk045工艺为基础,testbench均可直接导入virtuoso仿真,为我们提供了一个全面了解ADC电路设计的绝佳机会。通过对10bit SAR ADC电路的详细解析,我们不仅了解了其设计背后的原理和实现方法,还体会到了数字与模拟技术的交融之美。这个SAR ADC的结构采用了经典的电荷重分配架构。一个10bit SAR ADC电路,有200多页详细的设计和仿真文档,附带对应的gpdk045工艺,testbench都有,可直接导入virtuoso仿真。

OMyAVKmGPBOF的博客 1333

实验三linux服务与进程管理,认识Linux的进程管理

认识Linux的进程管理Tag内容描述:1、1,1.5 Linux操作系统概述,1.5.1 Linux的起源的历史,Linux是Internet的产物,Linus利用MINIX开发了两个进程用以写/读数据,并以此为契机添加硬盘驱动程序、小型文件系统以至形成了Linux的雏型 Linus将这个雏型放在校园网上征求大家的意见。Linux从一开始就是一个以编程爱好为主的系统。,最初是由芬兰的赫尔辛基大学...

weixin_33352628的博客 423

YOLOv11改进策略【模型轻量化】| 使用 MoblieOne 模块,引入结构重参数化,提高模型检测效率

本文记录的是基于MobileOne的YOLOv11骨干网络改进方法研究。MobileOne的基础模块通过重参数化,。在将其替换YOLOv11的骨干网络后,实现模型轻量化。

Limiiiing的博客 1424

Linux任务控制

这篇文章翻译自: http://linuxcommand.org/lts0080.php 上一课我们看到了Linux作为一个多用户系统的复杂之处(权限), 这一课我们来学习Linux的多任务特性和在命令行界面的操作方法. 如任何多任务系统一样, Linux执行的是多个同步的进程. 好吧, 它们只是看上去同步罢了. 实际上, 一个单处理器电脑在同一时间只能运行一个进程, 但Linux内核想办法给

97

深度学习实战42-基于大模型开发MathGPT的原理介绍,让数学问题智能解答变为可能

大家好,我是微学AI,今天给大家介绍一下深度学习实战42-基于大模型开发MathGPT的原理介绍,让数学问题智能解答变为可能。在去年ChatGPT的发布后,各种国内外的大语言模型层出不穷涌现,但是大家都知道现在的模型的诟病的数学能力不足,就算是简单的数学题都可能算错,今天我就来给大家引入MathGPT的模型,用来解决GPT解决数学问题,对于简单的初中数学高中数学都可以解决,让数学问题精准答题得到实现。

微学AI的博客 1651

【100%通过率】华为od统一考试B卷【查找接口成功率最优时间段】Python 实现

服务之间交换的接口成功率作为服务调用关键质量特性,某个时间段内的接口失败率使用一个数组表示,数组中每个元素都是单位时间内失败率数值,数组中的数值为0~100的整数, 给定一个数值(minAverageLost)表示某个时间段内平均失败率容忍值,即平均失败率小于等于minAverageLost,找出数组中最长时间段,如果未找到则直接返回NULL。

MISAYAONE的博客 5869

进程线程概念

并发: 1.同一时刻可以多个任务同时执行 如何实现并发: 1.进程 2.线程 Linux操作系统就提供了多任务并发机制。 linux如何实现多任务: 单核CPU 多核CPU Kernel的结构: 进程管理单元 (并发) ...

weixin_51516624的博客 150

【漏洞复现】WordPress Plugin NotificationX 存在sql注入CVE-2024-1698

技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。WordPress和WordPress plugin都是WordPress基金会的产品。WordPress Plugin NotificationX 存在安全漏洞,该漏洞源于对用户提供的参数转义不充分以及对现有 SQL 查询缺乏充分的准备,很容易通过“type”参数受到 SQL 注入攻击。

失心少年 1383

进程线程等学习笔记

总共分为12部分分别是:进程、线程、消息队列、信号量集、共享内存、PGSQL编程、MYSQL编程、网络编程、文件访问、标准I/O、系统数据文件和信息、信号 (一) 进程 1. 进程ID为0的进程通常是调度进程,常常被称为交换进程 进程ID为1的进程通常是init进程,在自举过程结束时由内核调用 进程ID为2的进程页守护进程,负责支持虚拟存储系统的分页操作 2. pid_t getpid(

金融行业从业者/C/JavaWeb 1122

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

linux高级编程进程,C++学习:第六章Linux高级编程 - (五)目录、进程、system、pop...

C++学习:第六章Linux高级编程 - (五)目录、进程、system、popC++学习:第六章Linux高级编程 - (五)目录、进程、system、popen2、exec、父子进程、fork一、IO与文件目录管理1. pread = lseek + readpread读取以后不改变读写位置2. mmap映射:/proc/${pid}/mem 无法映射3. IO的有效用户与实际用户默认情况:实...

weixin_35251837的博客 393

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

用户进程与内核进程是一一对应的吗_Linux内核-进程间通信组件的实现

Linux内核的五大组件一个完整的Linux内核一般由五大部分组成,他们分别是内存管理,进程管理,进程间通信,虚拟文件系统和网络接口。一、内存管理内存管理主要完成的是如何合理有效地管理整个系统的物理内存,同时快速响应内核各个子系统对内存分配的请求。Linux内存管理支持虚拟内存,而多余出的这部分内存就是通过磁盘申请得到的,平时系统只把当前运行的程序块保留在内存中,其他程序块则保留在磁盘中。在内存紧...

weixin_33428613的博客 196

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

linux应用软件编程:多任务(进程)

2.函数的形参和返回值;getppid():获取当前进程父进程的PID号。子进程拷贝父进程PCB(进程控制块)块中的部分内容:PID不拷贝。2. 让该进程成为一个孤儿进程,结束时被操作系统中的系统进程回收。由第一张图片中可以看出20429进程一开始是在R+运行状态,执行kill相关命令,其进程被杀死。孤儿进程:父进程先消亡,其对应的子进程成为一个孤儿进程,会被系统进程所收养。exit (非0) :由于进程产生了某种问题,需要主动退出进程。一个正在运行的程序称为一个进程,其运行过程中需要消耗内存和CPU。

2402_85476687的博客 2014

Linux -- 多任务机制(任务、进程、线程)介绍

多任务处理是指用户可以在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务。 Linux就是一个支持多任务的操作系统,多任务操作系统使用某种调度策略支持多个任务并发执行。事实上。(单核)处理器在某一时刻只能执行一个任务。每个任务创建时被分配时间片(几十到上百毫秒),任务执行(占用CPU)时,时间片递减,操作系统会在当前任务的时间片用完时调度执行其他任务。由于任务会频繁地切换执行,因此给用户多个任务同时运行的感觉。多任务操作系统中通常有3个基本概念:任务、进程、线程。

青椒*^_^*凤爪爪的博客 6810

Linux下的软件编程——多任务进程

应用程序 可执行程序 CPU硬盘 硬盘 内存程序和进程的区别:程序:静态的数据集合,存储在硬盘空间当中,程序运行起来可以产生进程;一个程序可以产生多个进程。进程:是一个程序动态执行的过程,需要消耗内存和CPU。一个进程中执行多个程序。进程具有生命周期,从产生到调度再到消亡。

mjy_111的博客 901

进程(多任务)

​ 子进程复制父进程的0到3g空间和父进程内核中的PCB, 但id号不同。此时,父子进程各自拥有独立的4g内存空间(32位的系统)​ 2.若子进程还在,父进程不在--------孤儿进程,-----此时由init进程收养。​ 结束子进程,父进程还在,但是父进程并没有对子进程"收尸",子进程处于僵尸态,(有危害)子进程先运行和是父进程先进程,,顺序不确定。注意:1.创建好之后,父子进程的运行顺序是不确定,取决于操作系统的调度。​ 克隆的进程称为子进程,原有的进程称为父进程。

apple_62443021的博客 1414

Linux软件编程(四)多任务与多进程管理

多任务指系统能够同时处理多个任务的能力。多进程多线程进程间通信(IPC)

2302_80202237的博客 663

多任务并行-进程

非抢占式多任务:由调度程序来决定什么时候停止一个进程的运行(如时间片结束时),以便其他进程得到执行机会。子进程复制父进程的0到3g空间和父进程内核中的PCB,但id号不同。5)一个程序可以运行多次,变成多个进程, 一个进程可以运行一个或多个程序。(2) 进程:是一个程序动态执行的过程,包括创建、调度、消亡(动态的)克隆的进程称为子进程,原有的进程称为 父进程。正在执行的程序(动态),需要消耗内存和CPU,是一个动态执行的过程。父进程:创建新进程的进程称为新进程的父进程。获得调用该函数进程的父进程pid号。

2401_84313943的博客 932

Linux基础篇——Linux进程、服务管理

程序(program)、进程(process)、守护进程(daemon)与服务(service)的之间是什么关系?简直一个头两个大,服务器之间的各个进程、服务又是怎么管理的呢?本篇文章,带你走进Linux进程(process)和服务(service)的世界。

LXWalaz1s1s的博客 4493

Linux系统——多任务操作

正在运行的程序,其运行过程中需要消耗内存和CPUgcc应用程序 可执行程序 内存硬盘 硬盘 cpu。

2401_84676053的博客 1275

Linux线程(总结)线程、进程、多线程、多进程和多任务的关系详解

实现并发技术相当复杂,最容易理解的是“时间片轮转进程调度算法”,它的思想简单介绍如下:在操作系统的管理下,所有正在运行的进程轮流使用CPU,每个进程允许占用CPU的时间非常短(比如10毫秒),这样用户根本感觉不出来 CPU是在轮流为多个进程服务,就好像所有的进程都在不间断地运行一样。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程 所花费的空间远远小于启动一个进程所花费的空间,而且,线程间彼此切换所需的时间也远远小于进程间切换所需要的时间。什么叫“多任务”呢。

Dola的博客 1699

Linux多任务机制

Linux 下多任务机制的介绍 多任务处理是指用户可以在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务。Linux就是一个支持多任务的操作系统,比起单任务系统它的功能增强了许多。多任务操作系统使用某种调度策略支持多个任务并发执行。事实上,处理器(单核)在某一时刻只能执行一个任务。每个任务创建时被分配时间片(ms级),任务执行(占用CPU)时,时间片递减。操作系统会在当前任务的时间片用完时调度执行其他任务。由于任务会频繁地切换执行,因此给用户多个任务同时运行的感觉。 多任务操作系统中通常有三

安迪西_嵌入式攻城狮 2565
上一篇: Linux C语言文件操作:从标准IO到文件IO的全面解析
下一篇: Linux多任务-线程篇
剑指offer.
博客等级 码龄3年 15粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值