03_Linux进程控制_系统编程.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
LINUX进程控制 Linux进程概述 进程是一个程序一次执行的过程,是操作系统动态执行的基本单元。进程的概念主要有两点:第一,进程是一个实体。每个进程都有自己的虚拟地址空间,包括文本区、数据区、和堆栈区。文本区域存储处理器执行的代码;数据区存储变量和动态分配的内存;堆栈区存储着活动进程调用的指令和本地变量。第二,进程是一个“执行中的程序”, 它和程序有本质区别。程序是静态的,它是一些保存在磁盘上的指令的有序集合;而进程是一个动态的概念,它是一个运行着的程序,包含了进程的动态创建、调度和消亡的过程,是Linux的基本调度单位。只有当处理器赋予程序生命时,它才能成为一个活动的实体,称之为进程。 内核的调度器负责在所有的进程间分配CPU执行时间,称为时间片(time slice),它轮流在每个进程分得的时间片用完后从进程那里抢回控制权。 进程标识 OS会为每个进程分配一个唯一的整型ID,做为进程的标识号(pid)。进程0是调度进程,常被成为交换进程,它不执行任何程序,是内核的一部分,因此也被成为系统进程。进程除了自身的ID外,还有父进程ID(ppid)。也就是说每个进程都必须有它的父进程,操作系统不会无缘无故产生一个新进程。所有进程的祖先进程是同一个进程,它叫做init进程,ID为1,init进程是内核自举后的第一个启动的进程。init进程负责引导系统、启动守护(后台)进程并且运行必要的程序。它不是系统进程,但它以系统的超级用户特权运行。 进程的状态 进程是程序的执行过程,根据它的生命周期可以划分成3种状态。 执行态:该进程正在运行,即进程正在占用CPU。 就绪态:进程已经具备执行的一切条件,正在等待分配CPU的处理时间片。 等待态:进程不能使用CPU,若等待事件发生(等待的资源分配到)则可将其唤醒。 Linux下的进程结构及管理 Linux系统是一个多进程的系统,它的进程之间具有并行性、互不干扰等特点。也就是说,进程之间是分离的任务,拥有各自的权利和责任。其中,每个进程都运行在各自独立的虚拟地址空间,因此,即使一个进程发生了异常,它也不会影响到系统的其他进程。 Linux中的进程包含以下几个部分: “堆栈段”存放的是子程序的返回地址、子程序的参数以及程序的局部变量等。“数据段”放全局变量、常数以及动态数据分配的数据空间。数据段分成普通数据段(包括可读可写/只读数据段,存放静态初始化的全局变量或常量)、BSS数据段(存放未初始化的全局变量)以及堆(存放动态分配的数据)。 “正文段”存放的是CPU执行的机器指令部分。 进程process:是os的最小单元 地址空间大小为4g,其中 1g给os 3g给进程{代码区 数据区 堆 栈} ps:查看活动进程。 ps –aux:查看各个进程状态,包括运行 就绪 等待等状态。 ps -aux| grep aa:查找指定(aa)进程。 ps –ef:查看所有的进程的pid,ppid等信息。 ps -aux看%cpu(cpu使用量) %mem(内存使用量) stat状态{S就绪 T中断 R运行 Z僵尸} vi a.c (表示后台运行),jobs查看后台任务,fg 1把后台任务带到前台 ctrl+z把进程带入后台 kill -9 进程号(杀掉某个进程 top显示前20条进程,动态的改变 pgrep vi查找进程 nice改变优先级 crontab计划任务,定时操作等 Linux进程控制 fork函数 原型: #include unistd.h pid_t fork(void); 在linux中fork函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。它和其他函数的区别在于:它执行一次返回两个值。其中父进程的返回值是子进程的进程号,而子进程的返回值为0.若出错则返回-1.因此可以通过返回值来判断是父进程还是子进程。 fork函数创建子进程的过程为:使用fork函数得到的子进程是父进程的一个复制品,它从父进程继承了进程的地址空间,包括进程上下文、进程堆栈、内存信息、打开的文件描述符、信号控制设定、进程优先级、进程组号、当前工作目录、根目录、资源限制、控制终端,而子进程所独有的只有它的进程号、资源使用和计时器等。通过这种复制方式创建出子进程后,原有进程和子进程都从fork函数返回,各自继续往下运行,但是原进程的fork返回值与子进程的fork返回值不同,在原进程中,fork返回子进程的pid,而在子进程中,fork返回0,如果fork返回负值,表示创建子进程失败。 (vfork函数)其作用和返回值与fork相同,但有一些区别。二者都创建一个子进程,但是它并不是将父进程的地址空间完全复制到子进程中,因为子进程

文档评论(0)

youyang99 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档