zoukankan      html  css  js  c++  java
  • Python线程和进程

    一、进程

    程序并不能单独和运行只有将程序装载到内存中,系统为他分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别在于:程序是指令的集合,它是进程的静态描述文本;进程是程序的一次执行活动,属于动态概念。

    例如我们写一个hello程序,当这个程序再操作系统上运行的时候,操作系统会给我们一种假象,好像系统上就这一个程序在运行。程序看上去是独占的使用处理器,主存,和IO设备,处理器看上去就像在不间断的执行程序中的指令,即该程序的代码和数据是操作系统内存中唯一的对象。这其实就是通过进程实现的。

    进程的概念

    进程是操作系统对一个正在运行的程序的一种抽象。即进程是处理器,主存,IO设备的抽象
    操作系统可以同时运行多个进程,而每个进程都好像在独占的使用硬件

    并发运行

    并发运行:一个进程的指令和另外一个进程的指令是交错执行的。

    上下文切换
    CPU看上去像是在并发的执行多个进程,这是通过处理器在进程之间切换来实现的,操作系统实现这种交错执行的机制称为上下文切换

    操作系统保持跟踪进程运行所需的所有状态信息。这种状态,就是上下文。
    在任何一个时刻,操作系统都只能执行一个进程代码,当操作系统决定把控制权从当前进程转移到某个新进程时,就会进行上下文切换,即保存当前进程的上下文,恢复新进程的上下文,然后将控制权传递到新进程,新进程就会从它上次停止的地方开始。

    我们还通过hello这个程序进行理解这个过程(环境为linux):

    shell进程和hello进程。

    1. 开始,shell进程在运行,等待命令行的输入
    2. 执行hello程序,shell通过系统调用来执行我们的请求,这个时候系统调用会讲控制权传递给操作系统。操作系统保存shell进程的上下文,创建一个hello进程以及其上下文并将控制权给新的hello进程。
    3. hello进程终止后,操作系统恢复shell进程的上下文,并将控制权传回给shell进程
    4. shell进程继续等待下个命令的输入

    二、线程

    线程的概念

    线程是操作系统能够进行运算调度的最小单位,它被包含在进程中,是进程中的实际运作单位

    一个进程实际上可以由多个线程的执行单元组成。每个线程都运行在进程的上下文中,并共享同样的代码和全局数据。

    由于在实际的网络服务器中对并行的需求,线程成为越来越重要的编程模型,因为多线程之间比多进程之间更容易共享数据,同时线程一般比进程更高效

    三、并发和并行的概念

    并发指的是同时具有多个活动的系统

    并行值得是用并发来使一个系统运行的更快。并行可以在操作系统的多个抽象层次进行运用

  • 相关阅读:
    导包路径
    django导入环境变量 Please specify Django project root directory
    替换django的user模型,mysql迁移表报错 django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependen cy user.0001_initial on database 'default'.
    解决Chrome调试(debugger)
    check the manual that corresponds to your MySQL server version for the right syntax to use near 'order) values ('徐小波','XuXiaoB','男','1',' at line 1")
    MySQL命令(其三)
    MySQL操作命令(其二)
    MySQL命令(其一)
    [POJ2559]Largest Rectangle in a Histogram (栈)
    [HDU4864]Task (贪心)
  • 原文地址:https://www.cnblogs.com/sunshine-1/p/7373065.html
Copyright © 2011-2022 走看看