python进程

2018-12-06  本文已影响0人  You_d75e

进程的概念

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

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

进程是一个动态的过程,占有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号。

上一篇下一篇

猜你喜欢

热点阅读