进程和线程及相关引申

进程是资源分配和拥有的基本单位,线程是CPU调度的基本单位。进程是可执行程序在系统中动态执行的抽象,线程可以理解为轻量级的进程,同一个进程内部有多个线程。一个进程拥有堆区、栈区、代码区和数据区,一个线程共享进程的堆、全局变量、静态变量、指针,引用、文件等,而独自占有栈和少量寄存器。进程切换需要保存CPU环境(栈、寄存器、页表和文件句柄等),开销较大,而线程切换只需要保存程序计数器、少量寄存器和栈的内容,开销较小。多进程引申出IPC,多线程引申出同步互斥机制。

进程间的通信方式:文件、管道、命名管道、信号、共享内存、消息队列、套接字、命名管道
管道是一种最基本的 IPC 机制,作用于有血缘关系的进程之间,完成数据传递。调用 pipe 系统函数即可创建一
个管道。有如下特质:

  1. 其本质是一个伪文件(实为内核缓冲区)
  2. 由两个文件描述符引用,一个表示读端,一个表示写端。
  3. 规定数据从管道的写端流入管道,从读端流出。
    管道的原理: 管道实为内核使用环形队列机制,借助内核缓冲区(4k)实现。
    管道的局限性:
    ① 数据不能进程自己写,自己读。
    ② 管道中数据不可反复读取。一旦读走,管道中不再存在。
    ③ 采用半双工通信方式,数据只能在单方向上流动。
    ④ 只能在有公共祖先的进程间使用管道。

线程间的同步互斥手段:互斥量(互斥锁)、读写锁、条件变量、信号量

全部评论

相关推荐

许愿ssp的咸鱼很不想泡池子:import python as pyhton
点赞 评论 收藏
分享
2024-12-23 10:55
已编辑
大连理工大学 Java
牛客930504082号:华子综测不好好填会挂的,而且填的时候要偏向牛马选项
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务