• 进程与线程


    1进程概念 
      进程是表示资源分配的基本单位,又是调度运行的基本单位。例如,用户运行自己的程序,系统就创建一个进程,并为它分配资源,包括各种表格、内存空间、磁盘空间、I/O设备等。然后,把该进程放人进程的就绪队列。进程调度程序选中它,为它分配CPU以及其它有关资源,该进程才真正运行。所以,进程是系统中的并发执行的单位。 
      在Mac、Windows NT等采用微内核结构的操作系统中,进程的功能发生了变化:它只是资源分配的单位,而不再是调度运行的单位。在微内核系统中,真正调度运行的基本单位是线程。因此,实现并发功能的单位是线程。

    2线程概念 
      线程是进程中执行运算的最小单位,亦即执行处理机调度的基本单位。如果把进程理解为在逻辑上操作系统所完成的任务,那么线程表示完成该任务的许多可能的子任务之一。例如,假设用户启动了一个窗口中的数据库应用程序,操作系统就将对数据库的调用表示为一个进程。假设用户要从数据库中产生一份工资单报表,并传到一个文件中,这是一个子任务;在产生工资单报表的过程中,用户又可以输人数据库查询请求,这又是一个子任务。这样,操作系统则把每一个请求――工资单报表和新输人的数据查询表示为数据库进程中的独立的线程。

    3引入线程的优点 
    (1)易于调度。 
    (2)提高并发性。通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。 
    (3)开销少。创建线程比创建进程要快,所需开销很少。。 
    (4)利于充分发挥多处理器的功能。通过创建多线程进程(即一个进程可具有两个或更多个线程),每个线程在一个处理器上运行,从而实现应用程序的并发性,使每个处理器都得到充分运行。

    4进程和线程的关系 
    (1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。 
    (2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。 
    (3)处理机分给线程,即真正在处理机上运行的是线程。 

    (4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。

    5多线程的优点:

    • 无需跨进程边界;
    • 程序逻辑和控制方式简单;
    • 所有线程可以直接共享内存和变量等;
    • 线程方式消耗的总资源比进程方式好;

    6多线程缺点:

    • 每个线程与主程序共用地址空间,受限于2GB地址空间;
    • 线程之间的同步和加锁控制比较麻烦;
    • 一个线程的崩溃可能影响到整个程序的稳定性;
    • 到达一定的线程数程度后,即使再增加CPU也无法提高性能,例如Windows Server 2003,大约是1500个左右的线程数就快到极限了(线程堆栈设定为1M),如果设定线程堆栈为2M,还达不到1500个线程总数;
    • 线程能够提高的总性能有限,而且线程多了之后,线程本身的调度也是一个麻烦事儿,需要消耗较多的CPU

    7多进程优点:

    • 每个进程互相独立,不影响主程序的稳定性,子进程崩溃没关系;
    • 通过增加CPU,就可以容易扩充性能;
    • 可以尽量减少线程加锁/解锁的影响,极大提高性能,就算是线程运行的模块算法效率低也没关系;
    • 每个子进程都有2GB地址空间和相关资源,总体能够达到的性能上限非常大

    8多线程缺点:

      • 逻辑控制复杂,需要和主程序交互;
      • 需要跨进程边界,如果有大数据量传送,就不太好,适合小数据量传送、密集运算
      • 多进程调度开销比较大;
  • 相关阅读:
    python基础集合
    python 布尔类型
    元组,内置函数
    python 字典类型用法
    python
    redis非关系数据库
    TensorFlow基础9——tensorboard显示网络结构
    TensorFlow基础8——结果可视化
    TensorFlow基础7——完整神经网络栗子
    TensorFlow基础6——函数定义(神经网络添加神经层函数)
  • 原文地址:https://www.cnblogs.com/mystudy2016/p/5861996.html
Copyright © 2020-2023  润新知