美文网首页
python进程

python进程

作者: You_d75e | 来源:发表于2018-12-06 17:46 被阅读0次

    进程的概念

    进程:进程是计算机中一次执行的过程

    程序是一个静态文件的描述,不占用计算机的系统资源

    进程是一个动态的过程,占有CPU内存等资源,有一定的生命周期

    同一个程序的不同执行过程,即为不同的进程

    问题1:什么决定了进程的创建

    用户通过应用层程序进行进程的创建申请,----

    调用操作系统接口进行进程创建。操作系统可以想象成一个大的软件

    操作系统告知系统内核创建新的进程提供给应用层使用,

    问题2:操作系统中有多少个进程

    进程依赖于内存和CPU,CPU的核是有限的,每个进程都要使用内核,而一个内核同一时刻一次最多使用一个进程。

    问题3:进程如何占用CPU

    1。同一个内核同一时刻只能运行一个进程。

    2。多个进程对内核资源进行抢占,由操作系统内核进行分配,优先级

    3.哪个进程占用计算机内核,我们称为该进程占有CPU的时间片

    问题4:进程在运行过程中的形态和附带内容

    pcb :进程控制块儿。在Linux和Unix操作系统中,进程创建后会在内存中开辟一块空间存放进程的相关信息,这个空间称之为pcb

    pid:在操作系统中进程的唯一标识,是一个大于0的整数。系统自动分配。是一个大于0的正整数。在Linux终端下,process    命令 ps -aux命令可以查看进程,通常pid是从小往大排列的。

    CPU是负责计算机的运算的。有些程序不占用CPU,要看程序是不是要运算。

    memory:

    虚拟内存:memory。在系统中,每个进程占有4个G的内存地址空间,这里的内存指的是虚拟内存。电脑内存称之为物理内存,虚拟内存是采用交换分区等进行内存地址的扩展。

    定义了很大的虚拟内存,但是其实物理内存没有那么多,采用映射的技术。执行原理如下,运行哪一块用哪一块儿,这样不用的抛弃,只把要运行的部分放到物理内存中。

    进程状态

    三态:就绪态,运行态,等待态。这三个状态有一定的关联。创建之后没有运行是就绪态,

    运行sleep函数的时候就是等待态,等待某种条件才能执行,也称为阻塞状态。

    五态:

    新建态  终止态z

    D不可中断

    进程的优先级

    优先级往往决定了一个进程的执行权限和占有系统资源的

    top可以查看进程运行状况,动态监测,按q退出,NI指当前运行的优先级状态。Linux系统中-20----19  由高到低,用户创建进程默认优先级为0

    man ps 可以查看ps的相关

    nice:以指定的优先级运行某个进程。

    chmod 777 while.py  睡3秒打印一次,大部分时间都在睡眠态,S+,第一次运行4206第二次就是4207了,

    ps -aux:  NI:显示优先级

    命令:nice -9 ./while.py 以9的优先级来运行程序。

    sudo nice --9 ./while.py当小于0的优先级的时候说明是root权限

    运行一个程序有两个方法,第一种是指定解释器,python 3    while.py

    如果给她一个权限 

    chomod 777 while.py

    就可以./jwhile.py来运行程序,就可以从程序的第一行自动调用Python3解释器。

    <>进行翻页查找。

    renice n PID:修改一个正在运行的进程的优先级

    renice 8 4277

    父子进程:在系统中除了初始化进程之外,每个进程都是由父进程创建的,每个进程都有一个唯一的父进程,可能有多个子进程。

    命令tree可以查看目录结构

    命令pstree可以查看进程树

    上午的课上完了,有一个问题

    这个程序需要10秒才能运行完,如何才能6秒呢:?

    当我们完成多个事情,如果这两个事情没有关联性的时候,可以并发来执行。当我们创建运行一个程序的时候。我们可以写两个程序完成上述问题,也可以自动创建进程来完成

    fork创建子进程

    实现方法:通过os.fork()函数来实现,这是系统函数。自己要学会分析函数。

    功能:

    运行到第7行的时候,子进程把父进程中的内存空间全部复制下来,从第7行开始,父子进程开始运行相同的内容。

    fork函数会返回一个数值。所以上述程序打印了两遍。

    终端,屏幕是共用的,父子进程都可以打印,所以我们看到了打印两句。为什么父子进程打印的不一样呢。在父进程中返回的是一个大于0的正整数,在子进程中=0的整数。虽然父子进程都执行这个函数,但是返回值不同。所以他们打印的东西不一样。这是系统设计接口的时候制定的规则,

    父子进程是独立的,父子进程空间内容的修改不会相互影响。

    父子进程在执行上互不影响,具体哪个先执行还不一定。

    fork的返回值即为创建的子进程的PID号。

    相关文章

      网友评论

          本文标题:python进程

          本文链接:https://www.haomeiwen.com/subject/phpcbxtx.html