人工智能(PythonNet)—— 多任务编程之进程

一、概念

        多任务编程
                意义 : 充分利用计算机的资源提高程序的运行效率;
                定义 : 通过应用程序利用计算机多个核心,达到同时执行多个任务的目的。
                方案 : 多进程、多线程

        并行 : 多个计算机核心在同时处理多个任务,多个任务之间是并行关系。
        并发 : 计算机同时处理多个任务,内核在多个任务间不断切换,达到好像在同时处理的运行效果。此时多个任务实际为并发关系。

        进程和程序的关系 :进程是程序在计算机中运行一次的过程;
        程序 : 是一个可执行文件,是静态的,占有磁盘,不占有计算机运行资源。
        进程 : 进程是一个动态的过程描述,占有cpu内存等计算机资源的,有一定的生命周期。
                 注:同一个程序的不同执行过程是不同的进程,因为分配的计算机资源等均不同。

二、进程

1、进程的创建流程

        a、用户空间运行一个程序,发起进程创建
        b、操作系统接受用户请求,开启进程创建
        c、操作系统分配系统资源,确认进程状态
        d、将创建好的进程提供给应用层使用

2、cpu时间片(多个进程,如何占用cpu)

        * 一个内核统一时刻只能运行一个任务
        * 多个进程对内核资源进行争夺,操作系统决定哪个进程占有计算机核心
        * 占有计算机核心的进程我们称为该进程占有cpu的时间片

3、进程的信息及其保存

       PCB(进程控制块):在操作系统中,进程创建后会自动在内存中开辟一块空间用于存放进程的相关信息,称为进程控制块。
        进程信息 : 用户、PID、占有的内存、创建时间 ......
        PID : 进程在操作系统中的唯一编号,由系统自动分配且大于0的整数
        进程信息查看命令 :   ps  -aux

信息说明:

USER  PID  %CPU                     %MEM                     VSZ                  RSS                        TTY              STAT     START        TIME       COMMAND

用户     PID  占用的CPU百分比  占用的内存百分比   虚拟内存大小  常驻内存集合大小  控制台终端  状态   开始时间   运行时间       命令

RSS( Resident Set Size )常驻内存集合大小,表示相应进程在RAM中占用了多少内存,并不包含在SWAP中占用的虚拟内存。即使是在内存中的使用了共享库的内存大小也一并计算在内,包含了完整的在stack和heap中的内存。

VSZ (Virtual Memory Size),表明是虚拟内存大小,表明了该进程可以访问的所有内存,包括被交换的内存和共享库内存。 

4、进程特征

        * 进程是操作系统资源分配的最小单位
        * 每个进程单独占有4G虚拟内存
        * 进程之间相互独立,运行互不影响

5、进程的状态

        三态
            * 就绪态:进程具备执行条件,等待系统分配cpu
            * 运行态:进程占有cpu处理器,处于运行状态
            * 等待态:进程暂时不具备运行条件,需要阻塞等待
        五态 (在三态基础上增加新建态和终止态)
            * 新建态 : 创建一个新的进程,获取资源的过程
            * 终止态 : 进程结束释放资源的过程

        ps -aux   ---> STAT 查看进程状态
             D  等待态   (不可中断等待)
             S  等待态   (可中断等待)
             T  等待态   (暂停状态)
             R  运行态   (就绪态  运行态)
             Z  僵尸态

             +  前台进程
             <  高优先级
             N  低优先级
             l  有进程链接
             s  会话组组长

6、进程优先级

        优先级决定了一个进程的执行权限和占有资源的优先程度。
        top  : 动态查看当前运行的进程的状态 ;q退出,< > 可以翻页(shift + ,  shift + .)
        说明:
                linux 中优先级范围:-20 ---- 19   -20最高
                用户程序默认优先级为0
补充命令:nice、renice
        nice  : 以指定的优先级运行进程
                nice  -9   ./hello.py              # 以 9的优先级运行hello.py程序
                sudo nice  --9 ./hello.py      # 以-9的优先级运行hello.py程序,另外小于0的优先级需要root权限
        renice : 改变某个进程的优先级
                renice  2  PID                      # PID指的是运行程序的pid值

三、附录:目录

        人工智能(PythonNet)—— 目录汇总


猜你喜欢

转载自blog.csdn.net/qq_27297393/article/details/81026808