linux进程环境及进程属性

进程是linux下资源管理的基本单元,每个进程有自己独立的运行空间。

每个进程都有一个独立的进程控制块(PCB)来管理每个进程资源。

进程的资源分为两大部分:内核空间进程资源 和 用户空间进程资源。

其中,内核空间进程资源是指:PCB相关信息,即进程PID、PPID、UID等,包括进程控制块本身、打开的文件表项等等。简而言之,就是内核通过PCB可以访问到的资源。

用户空间进程资源是指:进程的代码段、数据段、堆、栈,以及可共享访问的库的内存空间。这些资源在进程退出的时候主动释放。

进程的状态

用户级进程 在linux 2.6中有如下几种状态:就绪/运行状态可中断等待不可中断等待僵死状态停止状态

TASK_RUNNING:正在运行或处于就绪状态,就绪状态意味着进程申请到除了CPU以外的其他所有资源。

TASK_INTERRUPTIBLE:处在等待队伍,等待唤醒,可被中断唤醒。

TASK_UNINTERRUPTIBLE:处在等待队伍,等待唤醒,但是不可以被中断唤醒。

TASK_ZOMBIE:进程资源用户空间被释放,但内核中PCB并没有被释放,等待父进程回收。

TASK_STOPPED:进程被外部程序暂停,当再次允许的时候继续执行。

内核级进程状态,多两种:

TASK_TRACED、TASK_DEAD

linux中所有的进程都在上述状态中不停地切换。由调度算法决定,进程处于何种状态。

进程的基本属性

进程的基本属性包括:进程号PID、父进程号PPID、进程组号PGID

进程号是系统维护的唯一标识一个进程的正整数,进程号是无法在用户层修改的。

父进程号:除了init进程外,其他任何进程都是由另一个进程创建的。被创建的进程称作子进程,当前进程称作父进程。父进程无法在用户层修改。

进程组号:每一个进程拥有自己的进程组号。进程组是一个或多个进程的集合,他们与同一作业相关联,可以接收来自同一终端的各种信号。进程组号可以在用户层修改。

每个进程组都有一个组长进程,组长进程的进程号就是进程组号。组长进程退出,进程组还在,只要进程组有一个进程,则该进程组仍然存在。

会话:会话是一个或多个进程组集合。

控制终端

会话和控制终端有如下特点:

1、一个会话可以有一个控制终端,建立于控制终端连接的会话首进程被称为控制进程。

2、一个会话中的几个进程组可被分成为一个前台进程和几个后台进程,如果一个会话有一个控制终端,则它有一个前台进程。

3、无论何时终端键入中断键\退出键,会发送中断信号\退出信号给前台进程。

时间: 2024-10-29 00:19:52

linux进程环境及进程属性的相关文章

Linux系统开发 4 进程资源 环境 fork()子进程 wait() waitpid()僵尸 孤儿进程

<大纲> Linux系统编程 进程资源上限 进程环境变量 进程获取/修改环境变量 创建子进程fork() 最大进程数测试 程序的设置用户ID/组ID/黏住位 exec簇函数,执行程序覆盖堆栈 fork 与execl函数在一起 exec() 与主程序同一个PCB 僵尸进程 wait()回收僵尸进程 证明:父子进程同组pid waitpid() 非阻塞等待子线程发生变化 孤儿进程演示[父进程已经结束,子进程还在运行] 进程资源上限值 [email protected]:~$ cat /proc/s

Unix编程第7章 进程环境

准备雄心勃勃的看完APUE,但是总感觉看着看着就像进入一本字典,很多地方都是介绍函数的用法的,但是给出例子远不及函数介绍的多.而且这本书还是个大部头呢.第7章的讲的进程环境,进程是程序设计中一个比较重要的概念,知道倒是知道它的大概意思,但是其实还是有很多的细节其实都没有深究,这章呢APUE就带着我们逛了一下如下的几个主题(尼玛,学C语言的话,学那点语法其实不是很重要,反而经常把时间浪费在语法的蹩脚处): 1.程序执行的时候main函数是如何被调用的 2.命令行参数是如何传递给新程序的: 3.典型

(转载)linux下的僵尸进程处理SIGCHLD信号Linux环境进程间通信(五): 共享内存(下)

Linux环境进程间通信(五): 共享内存(下) 在共享内存(上)中,主要围绕着系统调用mmap()进行讨论的,本部分将讨论系统V共享内存,并通过实验结果对比来阐述两者的异同.系统V共享内存指的是把所有共享数据放在共享内存区域(IPC shared memory region),任何想要访问该数据的进程都必须在本进程的地址空间新增一块内存区域,用来映射存放共享数据的物理内存页面. 系统调用mmap()通过映射一个普通文件实现共享内存.系统V则是通过映射特殊文件系统shm中的文件实现进程间的共享内

Linux环境编程之进程(六):进程组

进程组 每个进程除了有一个进程ID之外,还属于一个进程组.进程组是一个或多个进程的集合.每个进程组有一个唯一的进程组ID.进程组ID类似于进程ID--它是一个整数,并可存放在pid_t数据类型中.函数getpgrp返回调用进程的进程组ID. 每个进程组都可以有一个组长进程.组长进程的标识是,其进程组ID等于其进程ID.组长进程可以创建一个进程组,创建该组中的进程,然后终止.只要在某个进程组中有一个进程存在,则进程组就存在,这与其组长进程是否终止无关.从进程组创建开始到其中最后一个进程离开为止的时

Linux环境下进程的CPU占用率

阿里云服务器网站:https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=qqwovx6h 文字来源:http://www.samirchen.com/linux-cpu-performance/ 1.Linux 环境下查看 CPU 信息 1.1.查看 CPU 详细信息 通过 cat /proc/cpuinfo 命令,可以查看 CPU 相关的信息: [[email protected]~]$cat/proc/cpuinfo

Linux进程环境

1.进程是什么 正在运行的程序,就是进程,进程是动态的,程序是静态的:进程在执行过程中具有状态的变化. 进程具有三个不同的状态 : 运行.就绪.阻塞; 三模型分析 : 查看进程的命令ps -ef 和 top,   kill PID(杀死进程) 运行态:进程获得CPU资源,能够使用CPU计算机程序中的指令,当CPU的使用时间用完时,则进入就绪状态. 就绪态:其它资源已经就绪,只差CPU资源. 阻塞态:处理CPU之外的其它资源还未就绪. 进程的调度:进程启动时处于就绪状态,为了调度进程对CPU的使用

Linux/UNIX之进程环境

进程环境 进程终止 有8种方式使进程终止,当中5中为正常终止,它们是 1)      从main返回 2)      调用exit 3)      调用_exit或_Exit 4)      最后一个线程从其启动例程返回 5)      最后一个线程调用pthread_exit 异常终止有3中方式 6)      调用abort 7)      接到一个信号并终止 8)      最后一个线程对取消请求做出对应 exit函数 #include <stdlib.h> void exit(int

Linux 程序设计学习笔记----进程管理与程序开发(下)

转载请注明出处:http://blog.csdn.net/suool/article/details/38419983,谢谢! 进程管理及其控制 创建进程 fork()函数 函数说明具体参见:http://pubs.opengroup.org/onlinepubs/009695399/functions/fork.html 返回值:Upon successful completion, fork() shall return 0 to the child process and shall re

linux下查找进程及终止进程操作的相关命令

使用linux操作系统,难免遇到一些软件"卡壳"的问题,这时就需要使用linux下强大的kill命令来结束相关进程.这在linux系统下是极其容易的事情,你只需要kill xxx即可,这里xxx代表与此软件运行相关的进程PID号.首先,我们需要使用linux下另外一个命令ps查找与进程相关的PID号:ps aux | grep program_filter_word1)ps a 显示现行终端机下的所有程序,包括其他用户的程序.2)ps -A 显示所有程序.3)ps c 列出程序时,显示