linux系统编程之进程简述

    科技2024-12-15  14

    文章目录

    一、什么是程序,什么是进程?二、什么是进程标识符?三、进程的结构3.1.1 进程表3.1.2 查看进程3.1.3、ps命令下STAT序列3.1.4 ps 四、进程中的父进程和子进程?五、C程序中存储空间的分配六、总结

    一、什么是程序,什么是进程?

           程序是静态的概念,在linux下通过命令gcc xxx.c -o main磁盘中生产一个文件main 叫做程序。例如下面main、a.out 、f_config文件

           进程是程序的一次运行活动,也就是说程序运行,系统就多一个进程。

    通过ps指令可以查看系统中的进程 ps -aux 可以显示全部进程,示例如下 除此之外linux下还有一个top指令,相当于window下的任务管理器

    二、什么是进程标识符?

           每个进程都有一个非负整数来表示唯一的ID,linux系统下称之为PID号,可以同比文件标识符、身份证号。每个进程都有唯一的进程标识符,如上图所示。

    PID=0,称为交换进程,用于进程调度 PID=1,init进程,用于系统初始化

    三、进程的结构

           1.将要被grep命令执行的代码保存在一个磁盘文件中。正常情况下,Linux进程不能对存放这代码文件的内存区域进行写的操作,即代码是以只读方式写入内存区域。可被多个进程安全的共享。        2.进程有自己的栈空间,用于保持函数中的局部变量和控制函数的调用与返回。        3.进程有自己的环境空间,包含专门为这个进程建立的环境变量。在linux系统中,在/proc中有一组特殊的文件,它允许你查看正在运行的进程内部的情况

    3.1.1 进程表

           Linux进程表像一种数据结构,它把当前加载在内存中的所有进程的有关信息保存在一个表中,如PID、进程状态、命令字符串等等信息。操作系统通过PID对他们进行管理和一些操作。早期的UNIX系统只能同时运行256个进程,而现在最新的版本,可以运行的进程数可能仅仅和建立进程表象的内存空间有关,也就是说这部分内存空间越大,相对之下,可运行的进程数越多,可以说是没了数字限制。

    3.1.2 查看进程

           ps命令可以显示我们正在运行的进程、其他用户正在运行的进程或者目前在系统上运行的所有进程。

    3.1.3、ps命令下STAT序列

    STAT这一序列表示的是进程当前的状态 S 睡眠,通常在等待事件发生,如 一个信号或者输入 R 运行,通常表示“可运行”队列中,正在执行或者正在运行 D 不可终端的睡眠,又称等待,通常是在等待输入或者输入完成 T 停止,它通常是被shell作业控制而停止,或者进程处于调式器控制下 Z 僵尸进程 N 低优先级任务,nice W 分页,不适用于version2.6以后的Linux内核 s 进程是会话期首进程 + 进程属于前台进程组 l 进程是多线程 < 高优先级任务

    3.1.4 ps

    ps -a 查看所有进程 ps -f 显示进程完整信息 ps命令的精确语法可能和系统版本不同而不同,Linux使用的GNU版本的 ps命令支持来自以前几个ps命令实现版本中的选项, 具体情况和更多命令 大家可以自行查看其手册

    四、进程中的父进程和子进程?

           在某一个进程A中,创建了进程B,称进程A为父进程、进程B为子进程。linux系统中,通过fork()函数创建子进程。

    五、C程序中存储空间的分配

           此部分不需要深究,有大致了解即可。

    六、总结

           基础概念很重要,这里只是简单介绍,深入了解可以多查查百度        增强编程能力,光看不行,动手最关键,最后总结出一片文章记录自己的学习过程。

    Processed: 0.061, SQL: 8