zoukankan      html  css  js  c++  java
  • 进程和线程以及它们的区别

    进程?线程?

    进程是对运行程序的封装,是系统进行资源调度和分配的基本单位,实现了操作系统的并发。

    其实现的过程:用户运行xx程序,系统就创建一个进程同时为其分配(内存空间,磁盘空间,I/O设备)资源,将该进程放到就绪队列中等待,被进程调度器选中。这就运行起来了。

    线程是进程的子任务,是cpu调度和分派的基本单位,用于保证程序的实时性,实现进程内部的并发。

    注意:在没有实现线程的时候,进程即是资源分配的基本单位,也是调度的基本单位,是系统中并发执行的单元

          实现线程的时候,进程是资源分配的基本单位,线程是调度的基本单位和系统中并发执行的单元。

    引入线程的优点:

    1)易于调度

    2)提高并发性。通过线程可以方便有效实现并发

    3)开销小,创建线程比创建进程要快,所需的开销也少

    4)有利于发挥多处理器的功能。通过创建多线程,每个线程都在一个处理器上运行,从而实现应用程序的并行,充分利用每个处理器。

    进程与线程的区别:

    1)一个程序至少有一个进程,一个进程至少有一个线程,线程依赖进程而存在。

    2)进程在执行时拥有独立的内存单元,而线程则是多个线程共享内存空间。

    3)线程又称为轻量级的进程。进程有进程控制块,线程又线程控制控制块。线程控制块小,线程间切换代价小。

    4)进程是一个程序的一次执行,线程可以理解为程序中一段程序片段的执行。

    进程间的通讯:

    1)管道与命名管道,这在linux中是“|”

    管道可用于亲缘关系的父子进程间通信,但有名的管道还可以允许无亲缘关系的进程间通信。

    2)信号

    信号是一种用于通知接受进程某个事件发生

    3)消息队列

    是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。

    4)信号量(semaphore)它是一个计数器。

    信号量用于实现进程间的互斥与同步,而不是用于存储进程间通信数据。

    5)共享内存(Shared Memory)

    指两个或多个进程共享一个给定的存储区。

  • 相关阅读:
    Rails组件逐个数:Rails Form helpers
    watirwebdriver常用方法
    Rails组件逐个数:Rails Form helpers(续)
    rails常用命令速查手册
    Rails new, build, create, save方法区别
    Ruby如何使用require从外部加载自定义类或模块
    升级Firefox8后watirwebdriver出现错误“unable to obtain stable firefox connection in 60 seconds”
    POJ2723Get Luffy Out(2sat)
    POJ3683Priest John's Busiest Day(2sat)
    UVA11374Airport Express(dijkstra)
  • 原文地址:https://www.cnblogs.com/topass123/p/12750668.html
Copyright © 2011-2022 走看看