描述进程的PCB

1、进程标识
      OS 会为每个进程分配一个唯一的整型ID,做为进程的标识号(pid)。进程除了自身的ID外,还有父进程ID(ppid),所有进程的祖先进程是同一个进程,它叫做init进程ID1init进程是内核自举后的第一个启动的进程。init进程负责引导系统、启动守护(后台)进程并且运行必要的程序

     进程的pidppid可以分别通过函数getpid()getppid()获得。

示例:      

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
      printf("pid:%d   ppid:%d\n",getpid(),getppid());
      return 0;
}
welza0NPRDKzwAAAABJRU5ErkJggg==





2、进 程的用户ID与组ID(进程的运行身份)

进程在运行过程中,必须具有一类似于用户的身份,以便进行进程的权限控制,缺省情况下,哪个登录用户运行程序,该程序进程就具有该用户的身份。例如,假设当前登录用户为gotter,他运行了ls程序,则ls在运行过程中就具有gotter的身份,该ls进程的用户IDID分别为gottergotter所属的组。这类型的ID叫做进程的真实用户ID真实组ID。真实用户ID和真实组ID可以通过函数getuid()getgid()获得。

与真实ID对应,进程还具有有效用户ID有效组ID的属性,内核对进程的访问权限检查时,它检查的是进程的有效用户ID和有效组ID,而不是真实用户ID和真实组ID缺省情况下,用户的(有效用户ID和有效组ID)与(真实用户ID和真实组ID)是相同的。有效用户id和有效组id通过函数geteuid()getegid()获得。

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main()
{
          printf("uid:%d gid:%d euid:%d egid:%d\n",getuid(),getgid(),geteuid(),getegid());
          return 0;
}

ST4AAAAASUVORK5CYII=

cat /etc/passwd | grep meihao  查看……目录下的名为meihao的进程的相关信息,里面包含uid,gid

4pNI6i8OYJNI6SLn6n4+9EieZGUeGjDeVuy3OERf+gm1j6iR53WzSfHnfb0M7V5I8HJyPVylmaZtPGHwK11ux+TR+Akvt7Vr0fCFxsQsc6yR0au0S6ifsd13vTyl0VFxYP3bEC3AjuWB+288irpjscDoEbwR0Oh2NLcXFRHA6HY1v5PwjZ75ZafWRMAAAAAElFTkSuQmCC


(which  命令 )查看命令在哪里
D+xUigPOUwhAAAAAAElFTkSuQmCC

(chmod  u+s  文件)给文件用户组增加s权限     
s权限:当某一个用户执行该二进制时,权限会提升为拥有者(对应组)的权限




3、进程的状态

R 表示运行   S 表示睡眠   T 暂停   Z 僵尸

进程是程序的执行过程,根据它的生命周期可以划分成3种状态。

 执行态1 

就绪态:进程已经具备执行的一切条件,正在等待分配CPU的处理时间片。

等待态:进程不能使用CPU,若等待事件发生(等待的资源分配到)则可将其唤醒。

1wAAAABJRU5ErkJggg==

(ps —elf )查看进程   top实时采样并显示cpu参数

vnB687mqgAAAAASUVORK5CYII=

hAHgiAIghRL1j1RBEEQBEGQ3PwfZl0EmXEsV+EAAAAASUVORK5CYII=




4、Linux下的进程结构

      Linux系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。也就是说,进程之间是分离的任务,拥有各自的权利和责任。其中,每个进程都运行在各自独立的虚拟地址空间,因此,即使一个进程发生了异常,它也不会影响到系统的其他进程。

Linux中的进程包含3个段,分别为数据段代码段堆栈段

●“数据段”  存放全局变量、常数以及动态数据分配的数据空间。数据段分成普通数据段(包括可读可写/只读数据段,存放静态初始化的全局变量或常量)、BSS数据段(存放未初始化的全局变量)以及堆(存放动态分配的数据)。

●“代码段”  存放的是程序代码的数据。

●“堆栈段”  存放的是子程序的返回地址、子程序的参数以及程序的局部变量等。


A1CAw85pWTHKAAAAAElFTkSuQmCCCBSoEzXrCBTKEynbCBQhxqktjB3K59QGwivMNAAAAAAAAAAAAzuBvHCWVkQZuZ0YAAAAASUVORK5CYII=


(ps -aux) 看进程的cpu及内存mem占有率


Linux 调度策略:

FIFO         实时调度策略 (运行优先级高的进程,不适合服务器)
RR           实时调度策略(运行优先级相同的,轮着来。用于嵌入式,实时 要求高)
OTHER    普通调度策略(所有的一起运行,优先级高的在一个调度周期内拿到的时间片多)





5、 Linux下的进程管理

g+KsEiUu3jtqgAAAABJRU5ErkJggg==

(kill -9 pid) 杀掉pid进程        (./a.out  &  )表示该进程放到后台运行
XuAAAAAElFTkSuQmCC
ctrl  +z 暂停进程  bg继续运行 bg把进程放到前台执行

[bg作业ID]可以将该进程带入后台。利用jobs可以查看后台任务,fg 1把后台任务带到前台,这里的1表示作业ID。



转载于:https://www.cnblogs.com/meihao1203/p/8468850.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值