linux 进程

来源:互联网 发布:centos 安装mysql 编辑:程序博客网 时间:2024/05/22 14:38


进程的产生方式:fork,system,exec等

进程通信方式:管道pipe,命名管道fifo,信号量sem,共享内存shm,消息队列msg,信号signal


进程的产生过程:

            1.复制父进程的环境配置

            2.在内核中建立进程结构

            3.将结构插入到进程列表,便于维护

            4.分配资源给此进程

            5.复制父进程的内存映射信息

            6.管理文件描述符和链接点

            7.通知父进程


进程终止方式:

            1.从main返回

            2.调用exit

            3.调用_exit

            4调用abort

            5.由一个信号终止  


进程和线程的区别和联系

           1.进程是操作系统进行资源分配的基本单位,进程拥有完整的虚拟空间,在进行系统资源分配的时候,除了cpu资源之外,不会给线程分配独立的资源,线程所需要的

资源需要共享

           2.线程是进程的一部分

           3.多线程和多进程是两种不同的概念,两者虽然都可以并行完成功能

           4.进程有进程控制表pcb,系统通过pcb对进程进行调度,线程有线程控制表tcb,tcb所表示的状态比pcb要少的多


进程复制 fork()

           fork()函数以父进程为蓝本复制一个进程,在linux环境下,fork()是以写复制实现的,只有内存等和父进程不同,其他与父进程共享


system()

          system()函数调用shell的外部命令在当前进程中开始另外一个进程

          system调用 “  /bin/sh-c command” 执行特定的命令,阻塞当前进程只到command命令执行完 


exec()函数

           调用新的进程替代原有的进程,系统会从新的进程运行,新的进程pid和原来老的进程pid一样

           使用exec普遍的作法是先使用fork分出进程,然后在新的进程中调用exec函数


在linux系统中,所有的进程都是父子或者兄弟关系,没有那个进程是与其他进程完全独立的,除了初始进程init

           使用pstree 可以看出来所有的进程都是init进程直接或者间接fork出来的


进程间的通信

           通常把多个进程之间的通信机制叫做ipc

    半双工管道:管道是一种把两个进程之间的标准输入和标准输出连接起来的机制

                            由于它只是某个进程的输出和另外一个进程的输入相连接的单向通信的方法,因此称其为半双工

           































原创粉丝点击