E: 进程------->进程控制块PCB   结构体

进程控制块中,存放的是指针数组------>是已经打开的文件的结构体的指针

文件描述符实际上就是指针数组的索引

e1: ps命令(进程快照):查看进程状态

ps aux;ps -ef

e2: 进程process概念:

进程是一个程序的一次执行过程,是一个程序的执行实例,是一个抽象实体,当系统执行某一个程序,分配和释放各种资源(内存空间,磁盘)

特点:进程是一个独立可调度的任务

调度:1.找到下一个要调度的进程(优先级,时间片轮转)   2.进程交换/上下文切换

e3: 进程的状态:

运行态:已经在cpu上运行或准备就绪

可中断的等待态          跟资源访问有关

不可中断的等待态(可中断睡眠状态/不可中断睡眠状态)

停止态:中止,运行中间停止

僵尸态

e4: 进程与程序的区别:

1.进程是一个动态的概念,是程序执行的过程

2.程序是静态的,保存在磁盘上的指令的有序集合

e5: 进程的组织结构:

程序:正文段(代码段)+ 数据段

进程:正文段(代码段)+ 数据段 + 进程控制块PCB(process control block)

e6: 在进程运行过程中,还包括存储临时数据的进程堆栈,CPU的所有寄存器值

e7: 父进程和子进程:进程是由其他进程生成的,生成进程的进程则叫做父进程,被生成的进程叫做子进程

进程id号    PID,一个id号对应一个进程,一个进程对应一个id号,是唯一的

父进程id号    PPID

孤儿进程:父进程运行完退出或异常退出,子进程成为孤儿进程,孤儿进程由init进程收养

e8: 进程的类型:

守护进程/精灵进程daemon:在后台运行,提供服务的进程(大多数的服务都是由守护进程实现的),一般在linux系统启动时开始执行,系统关闭时才结束,生存期较长的进程

终端:系统与用户进行交流的界面

从一个终端开始运行的进程都会依附于这个终端,这个终端称为这些进程的控制终端,当控制终端关闭时,相应的进程也会被自动关闭

会话session:一个或多个进程组所组成的组

进程组:一个或多个进程组成的组

交互进程:由shell控制和运行的交互进程既可以在前台运行,也可以在后台运行

批处理进程:被提交到一个队列中顺序执行

e9: 当前进程(运行原来的程序)

|   |------------------------------------------------------------------>|

| fork():创建一个新的进程,操作/处理------->exit():结束一个进程------->wait(&s)等待/阻塞,s&0377的值是n

|

-->进程(exec()运行新的程序)

e10: fork()与vfork():

fork:完整的拷贝/复制父进程的内存空间,因此执行速度比较慢

vfork:提高效率

1.会创建新进程,但是它不产生父进程的副本,不进行复制,子进程在父进程的空间当中运行

2.子进程先运行,子进程会阻塞父进程,它必须等子进程结束后,父进程才能运行,否则,父进程会处于不可中断等待状态

注意:若子进程依赖父进程的操作,父进程又必须阻塞到子进程结束,此时就会造成“死锁(deadlock)”

vfork 的子进程与父进程的变量是共享的,进程空间是共享的

e11:  _exit()和exit():

_exit()函数直接使进程停止运行,清除其使用的内存空间,并撤销了他在内核空间的数据结构

exit()函数则是在这些基础上做了一个包装,在执行退出之前/调用_exit()之前,检查文件的打开情况,把文件缓冲区中的内容进行刷新fflush,即“清理IO缓冲”

e12: pid_t waitpid(pid_t pid, int *status, int options);

@pid:

>0-----> 只等待进程的id = pid的子进程

=0-----> 等待组id = 调用waitpid的进程的组id的任意一个子进程

=-1----> 等待任何一个子进程退出,相当与wait()函数

<-1----> 等待其组id = pid的绝对值的任意一个子进程

@options:

0:阻塞父进程,等待子进程退出,跟wait()函数作用一样

WNOHANG:如果pid指定的子进程不是退出/不是立即可用,那么waitpid不会等待/阻塞,此时返回值=0

wait(&status) 等价于   waitpid(-1, &status, 0);

|

v

----------fork()----------

|                        |

|                   父进程waitpid(WNOHANG)<-----

子进程                |                      |

打印时间          返回值?-------ret==0------

3次,1s1次              |

|                     ret==pid

exit                   打印status

|

退出

e13: 进程的操作/编程:

-------> fork -----> wait(&status) <---

|                           |

-----> exec -------------> exit(n)

启动例程

linux进程的更多相关文章

  1. Linux进程管理及while循环

    目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...

  2. 如何灵活运用Linux 进程资源监控和进程限制

    导读 每个 Linux 系统管理员都应该知道如何验证硬件.资源和主要进程的完整性和可用性.另外,基于每个用户设置资源限制也是其中一项必备技能. 在这篇文章中,我们会介绍一些能够确保系统硬件和软件正常工 ...

  3. TODO:Golang Linux进程退出说明

    TODO:Golang Linux进程退出说明 Golang使用os.Exit(code)进程退出导致当前程序退出并返回给定的状态代码.传统上,code代码为零表示成功退出,非零错误退出. sysca ...

  4. Linux进程管理子系统分析【转】

    本文转载自:http://blog.csdn.net/coding__madman/article/details/51298732 Linux进程管理: 进程与程序: 程序:存放在磁盘上的一系列代码 ...

  5. 12个Linux进程管理命令介绍(转)

    12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国  作者:Linux [字体:大 中 小]   执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ...

  6. linux 进程管理相关内容

    简介 当我们运行程序时,Linux会为程序创建一个特殊的环境,该环境包含程序运行需要的所有资源,以保证程序能够独立运行,不受其他程序的干扰.这个特殊的环境就称为进程. 每个 Linux 命令都与系统中 ...

  7. Linux - 进程查看与管理

    标签(空格分隔): Linux 进程的静态查看 查看系统所有进程 ps -ef -- 输出来好乱,看不懂..: ps aux -- a表示所有与终端相关的进程,u表示所有以用户组织的进程状态的信息,x ...

  8. Linux进程关系

    Linux进程关系   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux的进程相互之间有一定的关系.比如说,在Linux ...

  9. Linux进程基础

    Linux进程基础   作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 计算机实际上可以做的事情实质上非常简单,比如计算两个数的和 ...

  10. linux进程编程:子进程创建及执行函数简介

    linux进程编程:子进程创建及执行函数简介 子进程创建及执行函数有三个: (1)fork();(2)exec();(3)system();    下面分别做详细介绍.(1)fork()    函数定 ...

随机推荐

  1. ASP.MVC 基于AuthorizeAttribute权限设计案例

    ASP.MVC上实现权限控制的方法很多,比如使用AuthorizeAttribute这个特性 1.创建自定义特性用于权限验证 public class AuthorizeDiy : Authorize ...

  2. knn-伪代码与实现过程

    knn特点 优点:精度高,对异常值不明感,无数据输入嘉定 缺点:计算复杂度高,空间复杂度高 适用范围:数值型和标称型 knn算法的伪代码 1.计算已知类别数据集中的点与当前之间的距离 2.按照距离递增 ...

  3. BOM 浏览器对象模型

    总结自JavaSript高级编程

  4. //给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和

    //给定N个整数序列{A1,A2,A3...An},求函数f(i,j)=(k=i~j)Ak的求和 # include<stdio.h> void main() { ,sum1; ]={,- ...

  5. 基础的jdbc连接数据库操作

    首先我们知道在数据库中,我们可以直接写sql或者直接通过数据库工具操作数据,但是在java程序中我们是不能直接操作数据库数据的,所以这就引入了jdbc操作. 百度百科:JDBC(Java Data B ...

  6. 通过style控制圆形imageView显示

    1. 2.drawable--style <?xml version="1.0" encoding="utf-8"?> <layer-list ...

  7. varchar后面是否定义长度,还是有区别的

    ' ' PRINT @year 结果是:2 ) ,' ' PRINT @year 结果是:2015 varchar是否定义长度,还是有区别的,不定义长度的时候,并非我想象中按照实际赋值自动填充,似乎默 ...

  8. SqlPlus中退格键和方向键的设置

    参见:http://www.cnblogs.com/wjx515/p/3717986.html   http://blog.csdn.net/jacky0922/article/details/765 ...

  9. 解决上一篇jquery中on的疑惑

    内容都是来自:http://www.365mini.com/page/jquery-on.htm.这里做一下收藏.文章的最后  疑问和解答可以解决所有的疑惑  看了之后能更好的整篇文章. on()函数 ...

  10. sharepoint关键位置

    GAC:C:\Windows\assembly,也就是部署的位置: ISAPI位置,SharePoint API:C:\Program Files\Common Files\microsoft sha ...