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. jQuery导入Eclipse后报错解决方法

         使用Eclipse 3.7及以上版本时,工程中加入jquery.min.js文件,发现该文件出现错误提示(红×),但使用Eclipse 3.7以前的版本就不会出现这种提示.是因为Eclips ...

  2. Android广播接收器BroadcastRceiver

    一.使用BroadcastRceiver 1.创建BroadcastRceiver(MyRceiver),重写OnReceiver: public void onReceive(Context con ...

  3. java初始化

    一.成员初始化 1.成员变量没有赋值,则被初始化成默认值. 2.局部变量没有赋值,编译时报错. 二.构造器初始化 1.成员变量在构造器初始化之前,已经被初始化. 2.变量定义的顺序决定了初始化的顺序. ...

  4. 【WP8.1】HttpClient网络请求、进度以及终止

    工作这么长时间,起初还是喜欢用面向程序过程的思路去写代码. 慢慢的才会用面向对象的思路分析.解决问题.也算是一点点进步吧. 最近在做一个下载音乐的功能.用到了HttpClient类. 于是就简单的写了 ...

  5. hashMap 深入理解

    1.java 的hashMap 是通过 链地址 法来解决 hash冲突的 2.初始时是一个empty table, 第一次添加数据时检查到时空数组就会 生成指定容量的数组,也就是 在第一次使用时才初始 ...

  6. 第3月第19天 cxx_destruct dispatch_get_main_queue()死锁

    1. http://blog.jobbole.com/65028/ 2. - (void)viewDidLoad { [super viewDidLoad]; NSLog("); dispa ...

  7. python raise a string exception is deprecated

    python不允许raise 一个内建的string 对象.所以就崩溃,可以先将其转换成其他string,比如赋值.

  8. angularJS实践过程中出现的问题总结

    同名服务 在一次项目里,之前是同事写的.我有一次在异步获取服务器上的数据时,习惯把api地址写在一个服务Store里,但是程序总是返回Store.api.get()里的get is undefined ...

  9. Ubuntu14.04源

    Ubuntu14.04源:   来源: http://wiki.ubuntu.org.cn/Qref/Source (包含15.04.14.10.14.04.12.04.10.04的源)     Ub ...

  10. tcp 出现rst情况整理

    正常情况tcp四层握手关闭连接,rst基本都是异常情况,整理如下: 1. GFW 2. 对方端口未打开,发生在连接建立 如果对方sync_backlog满了的话,sync简单被丢弃,表现为超时,而不会 ...