Linux进程概念

进程概念:

进程 : 进行中的程序(用户角度), 运行一个程序需要描述一个程序的运行,通过一个task_struct结构体描述,统称为PCB(操作系统角度)
程序 : 一堆代码, 存储在硬盘中, 程序运行起来就会被加载到内存中,删除硬盘中的程序,并不会使进程关闭
操作系统管理进程 : 描述进程, PCB—struct task_struct{} 操作系统通过PCB来管理运行中的程序, 其本质是一个task_struct结构体
描述信息 : 进程标识符(PID) , 进程状态, 优先级, 程序计数器, 上下文数据, 记账信息 内存指针, IO状态信息等

查看进程信息
cat /proc/self/limits查看详细的当前进程的资源限制,普通用户修改资源上限值,最大不超过硬限制,root用户可超过限制
/proc进程运行信息存放目录
ps -ef -aux -ajx查看系统上的进程信息
getpid()获取调用进程的进程ID
env查看当前进程的环境变量
杀死进程:
kill -9 pid杀死进程
kill -9 -pid杀死进程组

通过系统调用创建进程:
  #include <unistd.h>
  pid_t fork(void);
  通过复制调用进程,创建一个子进程
  子进程复制的就是父进程的PCB(父子进程数据, 代码看起来都一样)
  特点: 代码共享, 数据独有
进程状态:
  运行R, 可中断睡眠S, 不可中断睡眠D, 停止T, 死亡X, 僵死Z
僵尸进程:
子进程结束运行后,没有被父进程回收PCB,这种情况导致系统资源泄露
产生僵尸进程的代码:

int main()      
{      
  int pid = fork();      
  if(pid > 0)      
  {      
    while(1)      
    {      
      printf("i'm parent %d\n", getpid());    
      sleep(1);    
    }    
  }    
  if(pid == 0)    
  {      
      printf("i'm child %d\n", getpid());    
  }    
} 

孤儿进程:
父进程先于子进程结束,子进程称为孤儿进程,子进程的父进程成为1号进程,init进程,init进程领养孤儿进程
产生孤儿进程的代码

int main()      
{      
  int pid = fork();      
  if(pid > 0)      
  {      
    while(1)      
    {      
      printf("i'm parent %d\n", getpid());    
    }    
  }    
  if(pid == 0)    
  {      
    while(1)                                                                                                                       
    {    
      printf("i'm child %d\n", getpid());    
      sleep(1);    
    }    
  }    
} 

守护进程:
  脱离了与终端和会话的关联的孤儿进程
进程优先级:
  优先级: 决定资源的优先分配权的等级划分
为什么要有优先级:
  让操作系统运行的更加合理
  交互式进程: 一旦有操作, 优先处理
  批处理进程: 一直处理数据, 但是对cpu要求不高
  设置: ps -efl
  PRI 优先级 NI nice值: PRI无法直接设置, 但是可可以通过设置NI值,调整PRI至
  PRI = PRI + NI
  renice -n size -p pid

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值