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)

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

  • 相关阅读:
    Parameter Binding in ASP.NET Web API
    Which HTTP methods match up to which CRUD methods?
    ErrorHandling in asp.net web api
    HttpStatusCode
    Autofac Getting Started(默认的构造函数注入)
    Autofac Controlling Scope and Lifetime
    luvit 被忽视的lua 高性能框架(仿nodejs)
    undefined与null的区别
    VsCode中使用Emmet神器快速编写HTML代码
    字符串匹配---KMP算法
  • 原文地址:https://www.cnblogs.com/topass123/p/12750668.html
Copyright © 2011-2022 走看看