当前位置: 首页 > ai >正文

【刷题Day23】线程和进程(浅)

线程和进程有什么区别?

维度进程线程
定义资源分配的基本单位,每个进程都有自己独立的内存空间(代码段、数据段、堆栈等),可以看作是一个正在运行的程序实例。进程之间是相互独立的。CPU调度的基本单位,属于进程,一个进程中可以包含多个线程。线程共享进程的内存空间和资源(如文件句柄、数据段),但每个线程有自己独立的栈和寄存器。
资源消耗进程时需要为其分配独立的内存空间和系统资源,创建和切换进程的开销较大。线程间共享进程的资源,创建线程所需的开销较小,线程切换的开销远小于进程切换。
通信方式因为各自独立的内存空间,进程间通信(IPC)较为复杂,需要使用管道、消息队列、共享内存、套接字等方式。同一进程内的线程共享内存空间,因此线程直接读写内存即可,但注意需要使用同步机制避免数据错误。

进程之间的通信方式有哪些?

  1. 管道(Pipes):管道是一种单向通信方式,用于在父进程和子进程之间或者同一主机上的不同进程之间传递数据。它可以是匿名的,也可以是命名的。
  2. 命名管道(Named Pipes):与匿名管道类似,但具有一个在文件系统中有名的路径,允许不相关的进程之间进行通信。
  3. 消息队列(Message Queues):消息队列允许一个进程向另一个进程发送消息,消息在队列中按顺序存储,并且接收方可以按需接收。
  4. 共享内存(Shared Memory):共享内存允许多个进程访问同一块内存区域,从而实现快速的数据交换。但需要注意同步问题,以避免竞态条件和数据一致性问题。
  5. 信号量(Semaphores):信号量是一种同步原语,用于管理对共享资源的访问。它可以用于实现进程间的互斥访问和同步操作。
  6. 信号(Signal):信号是一种异步的通信方式,用于通知目标进程发生了某个事件。信号常用于进程之间发送中断或终止命令。
  7. 套接字(Sockets):套接字允许在网络上的不同主机上的进程进行通信,是实现网络通信的基础。
  8. 文件(File):进程可以通过读写文件来进行通信,这种方式通常用于进程之间的间接通信,例如使用临时文件或者共享文件。

进程的调度算法你知道吗?

  • 先来先服务(FCFS,First-Come,First-Served): 按照进程到达的顺序进行调度,适用于批处理系统。简单易实现,但可能造成”长任务“拖延其他任务的执行。
  • 短作业优先(SJF,Shortest Job First): 优先调度执行时间最短的进程,能减少平均等待时间。分为非抢占式和抢占式(SRTF,Shortest Remaining Time First)。但它需要预先知道任务执行时间,不适用于交互式系统。
  • 优先级调度(Priority Scheduling): 根据进程的重要性(优先级)来调度,优先级高的进程先执行。适用于需要不同优先级服务的场景。可能导致”低优先级进程“长期得不到调度,造成饥饿现象。
  • 时间片轮转(RR,Round Robin): 为每个进程分配固定的时间片,时间片结束后调度下一个进程。适用于交互式系统,能提升系统响应性。时间片的选择对系统性能有重要影响。
  • 最高相应比优先(HRRN,Highest Response Ratio Next): 通过计算响应比来决定下一个被调度的进程,适合在批处理环境中平衡长短任务的等待时间,防止短任务过多导致长任务饥饿。
  • 多级反馈队列调度(MLFQ,Multilevel Feedback Queue): 结合多个调度策略,通过将进程放入不同优先级的队列,实现灵活的调度机制。优先级较高的进程先被调度,随着执行时间增加,进程可能被降至低优先级队列。适合多任务、多类型的操作系统。
http://www.xdnf.cn/news/1197.html

相关文章:

  • elasticsearch 查询检索
  • 1.1 AI大模型与Agent的兴起及其对企业数字化转型的推动作用
  • 变更管理 Change Management
  • opencv 读取3G大图失败,又不想重新编译opencv ,可以如下操作
  • AI催生DLP新战场 | 天空卫士连续6年入选Gartner 全球数据防泄漏(DLP)市场指南
  • 工程投标k值分析系统(需求和功能说明)
  • 【项目】基于MCP+Tabelstore架构实现知识库答疑系统
  • move闯关(更新啦)1
  • 力扣刷题Day 25:反转链表(206)
  • 输入框仅支持英文、特殊符号、全角自动转半角 vue3
  • C# foreach 循环中获取索引的完整方案
  • PCIe体系结构学习入门——PCI总线概述(一)PCI 总线的基础知识
  • [预备知识]4. 概率基础
  • 关于ubuntu密码正确但是无法登录的情况
  • Android-KeyStore安全的存储系统
  • P3909 异或之积 解题报告
  • QML FontDialog:使用FontDialog实现字体选择功能
  • 【重走C++学习之路】16、AVL树
  • Java练习——day3
  • qemu如何支持vmovdqa64指令(百度AI)
  • 游戏工作室为何要更换IP进行多开?工作室使用代理IP要注意什么?
  • 35.编写一个简单的Mybatis插件
  • ​​电商系统用户需求报告(示例)
  • 随着ai技术的应用,及玩具类产品的层出不穷,开发此类产品的情感AI算法技术的底层构架,及情感AI算法的应用场景是转型的比较好的一个方向
  • HTTP状态码有哪些常见的类型?
  • 三网通电玩城平台系统结构与源码工程详解(四):子游戏集成与服务器调度机制全解
  • Spring AOP + Logback + MDC全链路日志追踪
  • 三线服务器通常适用于哪些用户?
  • GPIO(通用输入输出端口)详细介绍
  • 【T2I】TOKENCOMPOSE: Text-to-Image Diffusion with Token-level Supervision