1.进程 什么是进程: 一个正在被运行的程序就称之为进程,是程序具体执行的过程,是一种抽象概念,进程来自操作系统 2.多进程  多个正在运行的程序 在python中实现多线程的方法 from multiprocessing import Process import os import time # 当出现一些耗时时间比较长的操作时,会导致程序进入阻塞状态,无法执行其他代码 # 这个时候就可以开启子进程把任务交给他 def task(name): print('name%s子进程开始!'% na…
day34 并行并发.进程开启.僵尸及孤儿进程 1.并行与并发 什么是并行? 并行指的是多个进程同时被执行,是真正意义上的同时 什么是并发? 并发指的是多个程序看上去被同时执行,这是因为cpu在多个程序之间不停的进行切换,且切换的速度十分快,让我们觉得自己在共享这段时间,所以不是真正意义上的同时 2.阻塞与非阻塞 阻塞: 当程序在执行过程中遇到了IO操作,此时进入阻塞状态 非阻塞: 当程序正常执行代码而没有遇到IO操作时,此时就是非阻塞状态 3.程序执行的三种状态 在程序执行过程中,程序不是一直…
参考博文 基本概念 僵尸进程:是所有进程都会进入的一种进程状态,子进程退出,而父进程并没有调用 wait() 或 waitpid() 获取子进程的状态信息,那么子进程的 PID 和 进程描述符 等资源仍然保存在系统中,这种进程称之为僵尸进程 .僵尸进程会一直以终止状态(释放了内存等资源)保持在进程表里并会一直等待父进程获取其退出状态,但父进程没有回收(父进程出了问题). 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程.孤儿进程将被 init 进程(Cent…
原文地址:Go Exec 僵尸与孤儿进程 最近,使用 golang 去管理本地应用的生命周期,期间有几个有趣的点,今天就一起看下. 场景一 我们来看看下面两个脚本会产生什么问题: 创建两个 shell 脚本 start.sh #!/bin/sh sh sub.sh sub.sh #!/bin/sh n=0 while [ $n -le 100 ] do echo $n let n++ sleep 1 done 执行脚本 输出结果 $ ./start.sh 0 1 2 ... 进程关系 查看进程信…
Python并发编程03 /僵孤进程,孤儿进程.进程互斥锁,进程队列.进程之间的通信 目录 Python并发编程03 /僵孤进程,孤儿进程.进程互斥锁,进程队列.进程之间的通信 1. 僵尸进程/孤儿进程 1. 僵尸进程 2. 孤儿进程 2. 进程互斥锁 3. 进程队列 4. 进程之间的通信 1. 僵尸进程/孤儿进程 1. 僵尸进程 定义:僵尸进程是当子进程比父进程先结束,而父进程又没有利用wait/waitpid回收子进程.释放子进程占用的资源,此时子进程将成为一个僵尸进程 主进程与子进程之间的…
本文内容: 1.僵尸进程,孤儿进程的定义,区别,产生原因,处理方法 2.wait函数,waitpid函数的分析,以及比较 背景:由于子进程的结束和父进程的运行是一个异步的过程,即父进程永远无法预测子进程什么时候结,所以就产生了孤儿进程和僵尸进程 定义: 孤儿进程:即父进程退出后,它的一个或多个子进程还在运行,那么这些子进程叫做孤儿进程 僵尸进程:如果子进程退出,但是父进程没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符pid仍然保存在系统中,那么该子进程叫做僵尸进程…
linux提供了一种机制可以保证只要父进程想知道子进程结束时的状态信息,就可以得到.这种机制就是:在每个进程退出的时候,内核释放该进程所有的资源,包括打开文件,占用的内存等.但是仍然为其保留一定的信息(包括进程号.退出状态.运行时间等).直到父进程通过wait/waitpid来取时才释放. 孤儿进程:一个父进程退出,而它的一个或者多个子进程还在运行,那么那些子进程将成为孤儿进程.孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作. 僵尸进程:一个进程使用fock…
man wait: NAME wait, waitpid, waitid - wait for process to change state SYNOPSIS #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *status); pid_t waitpid(pid_t pid, int *status, int options); int waitid(idtype_t idtype, id_t id, sig…
0x01 前言 此文出自:https://www.cnblogs.com/Anker/p/3271773.html 博文主要用unix/linux举例,但道理没问题的同样有助于在Python中理解僵尸进程和孤儿进程 0x02 基本概念 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程.子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束. 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpi…
一.基本定义 正常情况下,子进程是通过父进程创建的,子进程在创建新的进程.子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束. 当一个 进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态. 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程.孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作. 僵尸进程:一个进程使用fork创建子进程,…
什么是孤儿进程? 孤儿进程,  指在父进程退出后,而子进程还在运行,这个子进程就成了孤儿进程,这时由init进程(pid=1)接管 来看看例子: #include <stdio.h> #include <unistd.h> int main(void) { pid_t pid ; //父进程先结束,子进程还在运行 //如果父进程结束,则子进程的父亲为init //孤儿进程由进程他的祖先收留 pid = fork(); if(0 == pid) { printf("firs…
lienhua342014-10-12 当一个进程正常或者异常终止时,内核就向其父进程发送 SIGCHLD信号.父进程可以选择忽略该信号,或者提供一个该信号发生时即被调用的函数(信号处理程序).对于这种信号的系统默认动作是忽略它. 在文档“进程控制三部曲”中,我们讲的第三部曲是使用 wait 函数来获取终止子进程的终止状态.那么,有几个问题我们这里需要详细的学习一下. 1. 父进程一定能够获取到子进程的终止状态吗?如果子进程在父进程调用 wait 函数前就终止了,怎么办? 2. 如果父进程没有获…
本文有xhz1234(徐洪志)编写,转载请注明出处. http://blog.csdn.net/xhz1234/article/details/36635083 作者:徐洪志 近期阅读Linux-内核代码.发现非常多地方使用了函数指针,遂自己写一个演示样例程序.以供參阅: #include <stdlib.h> #include <stdio.h> #define ADDONE 0 #define MINUSONE 1 #define S_OK 0 #define S_ERR -1…
http://www.cnblogs.com/Anker/p/3271773.html…
以下函数使用之前需安装mysql,并包含mysql.h头文件,设置好mysqlclient动态库 一.mysql_init() MYSQL * mysql_init(MYSQL *mysql); // 初始化一个MYSQL 连接的实例对象 这个函数有两种用法: .参数传NULL 值. // 这种情况很显然,是mysql_init() 函数内部申请了一片内存,然后返回了首地址. MYSQL *ms_conn = mysql_init(NULL); // 用完记得要释放 mysql_close(ms…
不断的练,加深记忆吧. #!/usr/bin/env python # -*- coding: utf-8 -*- import threading import time exitFlag = 0 def first_function(): print (threading.currentThread().getName() + \ str(' is Starting \n')) time.sleep(2) print (threading.currentThread().getName()…
说起fork就不得不提COW(Copy On Write),就是“写时拷贝”.也就是当fork发生时,子进程根本不会去拷贝父进程的内存页面,而是与父进程共享.当子进程或父进程需要修改一个内存页面时,Linux就将这个内存页面复制一份给修改者,然后再去修改,这样从用户的角度看,父子进程根本就没有共享什么内存.COW也就是进程要写共享的内存页面,先复制再改写. 采用了COW技术后,fork时,子进程还需要拷贝父进程的页面表.这种拷贝的代价就非常小了,对于CPU来说用不了几个时钟周期. 1.孤儿进程…
孤儿进程与僵尸进程 孤儿进程: 如果父进程先退出,子进程还没退出那么子进程的父进程将变为init进程.(注:任何一个进程都必须有父进程) [cpp] view plaincopy #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <unistd.h> int main() { pid_t pid; //创建一个进程 pid = fork(); //创建失败 if (pid &…
创建进程 在python中提供了一个multiprocessing模块可以帮助我们使用多进程解决问题.在multiprocessing 模块中有一个类Process. from multiprocessing import Process ''' group=None, 为日后开发新功能准备 target=None, 目标任务 name=None, 进程的姓名 args=(), 目标任务需要的位置参数 kwargs={}, 目标任务需要的字典参数 daemon=None):默认值为False,如…
僵尸进程:子进程终止了,但是父进程没有回收子进程的资源PCB.使其成为僵尸进程 孤儿进程:父进程先与子进程结束了,使得子进程失去了父进程,这个时候子进程会被1号进程init进程领养,成为孤儿进程 为了防止上面两种情况,我们应当在父进程结束之前一定要回收子进程的所有资源 所以出现了wait和waitpid #include <sys/types.h> #include <sys/wait.h> pid_t wait(int *status); pid_t waitpid(pid_t…
概念 僵尸进程:当子进程退出时,父进程还没有(使用wait或waitpid)接收其退出状态时,子进程就成了僵尸进程 孤儿进程:当子进程还在运行时,父进程先退出了,子进程就会成为孤儿进程被pid=1的init/systemd进程收养 需要说明的是,僵尸进程的父进程死掉后,僵尸进程也会被pid=1的init/systemd进程收养,而init/systemd进程会定期清理其下僵尸进程,并在它的任意子进程退出时检查它的领土下是否有僵尸进程存在,从而保证init/systemd下不会有太多僵尸进程. 僵…
最近一台机器的systemd内存高达30%多,一直不变,后来排查是僵尸进程,什么是僵尸进程呢,只能google,百度等先了解,然后自己总结了一下,虽然这是基础的东西,但是对于我来说就如新大陆一样.花了一下午可算明白了.模拟的时候主要是先要理解fork这个函数的东西.总结的不对的地方望给位大哥指出   什么是僵尸进程?什么是孤儿进程?   僵尸进程:一个进程使用fork() 创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在…
Python进阶----进程间数据隔离, join阻塞等待, 进程属性, 僵尸进程和孤儿进程, 守护进程 一丶获取进程以及父进程的pid 含义:    进程在内存中开启多个,操作系统如何区分这些进程,每个进程都有一个唯一表示 方法三种方法:     一,终端查看所有pid tasklist     二,指定具体的PID tasklist | findstr python     三,代码查看pid os 模块 ### 利用os 模块 查看 pid(当前进程id) 和 ppid(父进程id) im…
僵尸进程 当子进程运行结束,父进程仍然继续运行,但父进程没有对子进程进行回收,释放子进程占用的资源,此时子进程就成为了一个僵尸进程. 在Unix进程管理中,如果新开的子进程运行结束,父进程将会收到一个SIGCHLD信号,子进程暂时成为僵尸进程,等待父进程进行处理.如果父进程一直不处理,该进程将会一直存在,占用系统进程表项,永久成为僵尸进程.如果僵尸进程过多,导致系统没有可用的进程表项,将无法运行其他的应用程序. <?php $str = "hello world!" . PHP_…
一.Linux下多任务机制的介绍 Linux有一特性是多任务,多任务处理是指用户可以在同一时间内运行多个应用程序,每个正在执行的应用程序被称为一个任务. 多任务操作系统使用某种调度(shedule)策略(由内核来执行)支持多个任务并发执行.事实上,(单核)处理器在某一时刻只能执行一个任务.每个任务创建时被分配时间片(几十到上百毫秒),任务执行(占用CPU)时,时间片递减.操作系统会在当前任务的时间片用完时调度执行其他任务.由于任务会频繁地切换执行,因此给用户多个任务运行的感觉.所以可以说,多任务…
基本概念 程序和进程的区别 程序是平台相关的二进制文件,只占用磁盘空间.编写完程序代码后,编译为可执行的二进制文件即可. 进程是运行中的程序,占用 CPU.内存等系统资源. 通过 Shell 命令,可以在终端启动进程,例如执行 ls 命令: 找到命令对应的二进制文件 使用 fork() 函数创建新的进程 在新创建的进程中调用 exec 函数组,加载命令对应的二进制文件,并从 main 函数开始执行 并发和并行 并发 concurrent:在一个时间段内,处理的请求总数.个数越多,并发越大. 并行…
注:本文部分图片来源于网络,如有侵权,请告知删除 1. 什么是进程? 在了解进程概念之前,我们需要先知道程序的概念. 程序,是指编译好的二进制文件,这些文件在磁盘上,并不占用系统资源. 进程,指的是一个程序的执行实例,是操作系统分配系统资源的单位,这里的系统资源有CPU时间,内存等.当程序运行起来,产生一个进程. 也就是说,相比于程序,进程是一个动态的概念. 2. 用什么来描述进程? 进程信息被放在一个叫做进程控制块的数据结构中,可以理解为进程属性的集合.教材中称为PCB(process con…
摘要:本文主要讲述进程的终止方式,以及怎样使用exit()函数来终止进程.回收进程用户空间资源:分析了exit()函数与_exit()函数,returnkeyword的差异.同一时候具体解读了怎样使用atexit()和on_exit()函数来注冊终止处理程序. 进程终止.回收资源 1.进程终止方式 在内核中,程序运行的唯一方法是调用一个exec函数.而进程自愿终止的唯一方法是显示或隐式地调用_exit()或_Exit().     进程有5种正常终止方式: (1)常见的一种是,在main函数中运…
一.整体大纲 二.基础知识 1. 进程相关概念 1)程序和进程 程序,是指编译好的二进制文件,在磁盘上,不占用系统资源(cpu.内存.打开的文件.设备.锁....)     进程,是一个抽象的概念,与操作系统原理联系紧密.进程是活跃(运行起来的)的程序,占用系统资源.在内存中执行.(程序运行起来,产生一个进程).     程序 → 剧本(纸) 进程 → 戏(舞台.演员.灯光.道具...),同一个剧本可以在多个舞台同时上演.同样,同一个程序也可以加载为不同的进程(彼此之间互不影响)     如:同…
多道技术 1.空间上的复用 多个程序共用一套计算机硬件 多道技术原理 2.时间上的复用 ​ 切换+保存状态 ​ 1.当一个程序遇到IO操作 操作系统会剥夺该程序的CPU执行权限( 提高了CPU的利用率,并且也不影响程序的执行效率 ) ​ 2.当一个程序长时间占用CPU 操作系统也会剥夺该程序的CPU执行权限( 降低了程序的执行效率 ) 并发: 看起来像同时运行就可以 并行: 真正意义上的同时运行 ​ 单核的计算机不能实现并行,但是可以实现并发 进程 程序和进程的区别 程序: 一段代码 进程: 正…