小工具知识网

当前位置: 首页 > 行业知识 > 嵌入式学习day25 Linux

行业知识

嵌入式学习day25 Linux

2026-10-30 14:48:34 来源:互联网转载

进���基本概念:

1.进程:

    程序:存放在外存中的一段数据组成的文件

    进程:是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡

2.进程相关命令:

    1.top 

      动态查看当前系统中的所有进程信息(根据CPU占用率排序)

        PID:唯一识别进程的ID号(>0)

        优先级:Linux系统中数据高,优先级高(-20 - 19)  Windows系统中数值高,优先级高

        进程状态: 

            R   运行态/就绪态

            S   睡眠态/可唤醒等待态

            D   不可唤醒等待态

            T   暂停态

            Z   僵尸态

            X   结束态

        q退出 

    2.nice

      以指定优先级来运行进程

      示例:

        nice -n 优先级 要执行的集成任务

      renice 

      重新设定一个正在运行的进程的优先级

      

      示例:

        renice -n 优先级 进程PID 

    3.kill

      杀***指定的进程任务

      示例:

        kill -9 进程PID 

      killall 

      杀***进程名对应的所有进程任务

      示例:

        killall -9 进程名 

    4.ps -ef 

      查看当前时刻所有进程的信息

      PPID:父进程的ID号 

      ps -ef | grep a.out 

    5.pstree

      查看进程树关系

    6.ps -aux 

      查看当前时刻的进程信息

    7../a.out &

      将a.out任务放在后台执行

    

    8.jobs

      查看一个终端下后台执行的所有任务

    

    9.fg 编号

      将后台任务放到前台执行

3.进程的创建

    32bits

    一个进程在运行时,操作系统会为该进程分配 0 - 4G 虚拟内存空间,分为文本段、数据段、系统数据段

    文本段:

      也称为文本区,存放代码和指令

    

    数据段:

      也称为数据区,可以细分为:

            1.字符串常量区

            2.未初始化全局变量/静态变量

            3.已初始化全局变量/静态变量 

    

    系统数据段:

      包含堆区和栈区

   进程的虚拟内存空间:

4.进程中虚拟地址和物理地址的关系

    1. 0 - 4G虚拟内存空间只有一个,由进程轮流使用

    2. 实际物理地址中每个进程空间独立

    3. 通过MMU内存映射单元,单一个进程执行时,将物理地址中的数据加载到虚拟地址中运行

进程的物理内存地址

5.进程的调度:

    1.常见的调度算法:

      1.先来先执行,后来后执行

      2.高优先级调度算法

      3.时间片轮转调度算法

      4.多级队列反馈调度算法

      5.负载均衡调度算法

      时间片:

        1.CPU在一个任务中的运行时间称为一个时间片

    2.宏观并行,微观串行。  宏观上三个进程同时执行,微观上进程一  ->  进程二  ->  进程三

进程一执行一段时间,保护现场后再执行进程二,..........最后进程一恢复现场继续执行。

3.进程的状态:

        R     运行态、就绪态 

        S     睡眠态/可唤醒等待态 

        D     不可唤醒等待态 

        T     暂停态

        Z     僵尸态

        X     结束态

6.进程相关函数接口:

    1.进程的创建 

      fork 

      pid_t fork(void);

      功能:

        创建一个子进程,新创建的进程称为原来进程的子进程,原来的进程称为新进程的父进程

      参数:

        void 缺省

      返回值:

        成功子进程返回0 

        父进程返回子进程的PID 

        失败返回-1 

       父进程调用fork创建子进程,子进程拷贝父进程的文本段、数据段、系统数据段  

      getpid

      pid_t getpid(void);

      功能:

        获得调用进程的PID号(当前进程的ID号)

      

      getppid

      pid_t getppid(void);

      功能:

        获得调用进程的PPID(父进程的ID号)

 2.exit

    void exit(int status);

    功能:

      让进程结束

    参数:

      status:进程结束的状态

    返回值:

      缺省

    exit在主函数中使用和return效果一致

    exit会刷新缓存区

    _exit

    void _exit(int status);

    功能:

      让进程直接结束

    参数:

      status:进程结束的状态

    返回值:

      缺省

7.进程的消亡

  1.僵尸进程:

    进程代码执行结束,空间没有被回收,称为僵尸进程

  2.如何避免产生僵尸进程?

    1.让父进程先结束

    2.让父进程回收子进程空间

  3.孤儿进程:

      进程的父进程先结束,此时该进程称为孤儿进程,被系统进程收养,进程再结束时,会被系统进程回收进程空间

8.wait 

  pid_t wait(int *wstatus);

  功能:

    回收子进程空间,直到子进程结束,父进程才结束

  参数:

    wstatus:存放子进程结束状态空间的首地址

  返回值:

    成功返回回收到的子进程PID

    失败返回-1 

  1.wait函数具有阻塞功能

  2.wait函数具有同步功能

  WIFEXITED(wstatus)

  进程是否正常退出 

  WEXITSTATUS(wstatus)

  进程结束状态值

  WIFSIGNALED(wstatus)

  进程是否被信号杀***

  WTERMSIG(wstatus)

  获得杀***进程的信号编号

 

上一篇:渭南网站建设公司怎么选择

下一篇:凤仙花种子种植秘籍,轻松培育绚烂花朵的终极指南!