进程与线程

根本区别

进程:是操作系统分配资源的最小单位
线程:是程序执行和调度的基本单元

开销区别

进程具有自己的独立内存空间,因此在进程间切换时的开销比较大;
在同一进程中的线程共享内存空间,线程间的切换开销小;除CPU外,系统不会为线程分配其他内存资源。

进程间通信

管道

一个进程向存储空间的一端写入信息,另一个进程存储空间的另外一端读取信息,这个就是管道。

信号量(semaphore)

主要作为进程间以及同一进程不同线程之间的同步手段。
在计算机中,信号量实际上就是一个简单整数。一个进程在信号变为0或1的情况下推进,并将信号变为1或0来防止别的进程同时推进。当该进程完成任务后,则将信号再改为0或1,从而允许其他进程执行。从而我们也可以看出,信号量已经不只是一种通信机制,更是一种同步机制。

共享内存

共享内存(shared memory)可以说是最有用的进程间通信方式,也是最快的IPC形式。两个不同进程A、B共享内存的意思是,同一块物理内存被映射到进程A、B各自的进程地址空间。进程A可以即时看到进程B对共享内存中数据的更新,反之亦然。由于多个进程共享同一块内存区域,必然需要某种同步机制,互斥锁和信号量都可以

套接字

套接口(socket):更为一般的进程间通信机制,可用于不同机器之间的进程间通信。

消息队列

消息队列是一列具有头和尾的消息排列,新来的消息放在队列尾部,而读取消息则从队列头部开始。这样看来,它和管道十分类似,一头读,一头写?的确,看起来很像管道,但又不是管道:

(1)消息队列无固定的读写进程,任何进程都可以读写;而管道需要指定谁读和谁写;
(2)消息队列可以同时支持多个进程,多个进程可以读写消息队列;即所谓的多对多,而管道是点对点;
(3)消息队列只在内存中实现,而管道还可以在磁盘上实现;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 简介 用户打开浏览器,其实就是打开了浏览器应用程序。那么什么是程序呢?我们常说浏览器是多线程的,JS 是单线...
    love丁酥酥阅读 3,669评论 0 6
  • 内容大纲 1、操作系统概述1.1 OS定义及特征1.2 OS的发展 2、进程2.1 进程概念及特征2.2 进程的状...
    看看你的肥脸阅读 2,022评论 0 4
  • 11.1进程的概念 进程的定义 进程是指一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程 精髓:正在执...
    龟龟51阅读 586评论 0 1
  • 进程 定义:是一个程序及其数据在处理机上执行时所发生的活动。 程序与进程的区别:程序是一组有序指令的集合,是静态的...
    traxes阅读 964评论 0 0
  • 旅行,如果没来佛山,可以说你要走的路还很长! 爱上一个人,恋上一座城,每个城市,每个人都有自己的故事,每座城市都值...
    穷人就要多旅行阅读 1,423评论 0 2

友情链接更多精彩内容