首页 > 系统相关 >多进程模型

多进程模型

时间:2024-07-18 16:31:24浏览次数:12  
标签:Socket 模型 监听 进程 返回值 连接 客户端

多进程模型

基于最原始的阻塞网络 I/O, 如果服务器要支持多个客户端,其中比较传统的方式,就是使用多进程模型,也就是为每个客户端分配一个进程来处理请求。

服务器的主进程负责监听客户的连接,一旦与客户端连接完成,accept() 函数就会返回一个「已连接 Socket」,这时就通过 fork() 函数创建一个子进程,实际上就把父进程所有相关的东西都复制一份,包括文件描述符、内存地址空间、程序计数器、执行的代码等。

这两个进程刚复制完的时候,几乎一模一样。不过,会根据返回值来区分是父进程还是子进程,如果返回值是 0,则是子进程;如果返回值是其他的整数,就是父进程。

正因为子进程会复制父进程的文件描述符,于是就可以直接使用「已连接 Socket 」和客户端通信了,

可以发现,子进程不需要关心「监听 Socket」,只需要关心「已连接 Socket」;父进程则相反,将客户服务交给子进程来处理,因此父进程不需要关心「已连接 Socket」,只需要关心「监听 Socket」。

下面这张图描述了从连接请求到连接建立,父进程创建生子进程为客户服务。

另外,当「子进程」退出时,实际上内核里还会保留该进程的一些信息,也是会占用内存的,如果不做好“回收”工作,就会变成僵尸进程,随着僵尸进程越多,会慢慢耗尽我们的系统资源。

因此,父进程要“善后”好自己的孩子,怎么善后呢?那么有两种方式可以在子进程退出后回收资源,分别是调用 wait()waitpid() 函数。

这种用多个进程来应付多个客户端的方式,在应对 100 个客户端还是可行的,但是当客户端数量高达一万时,肯定扛不住的,因为每产生一个进程,必会占据一定的系统资源,而且进程间上下文切换的“包袱”是很重的,性能会大打折扣。

进程的上下文切换不仅包含了虚拟内存、栈、全局变量等用户空间的资源,还包括了内核堆栈、寄存器等内核空间的资源。

标签:Socket,模型,监听,进程,返回值,连接,客户端
From: https://www.cnblogs.com/sunupo/p/18309835

相关文章

  • 使用gradio部署微调后的模型
    文章目录概要整体架构流程技术细节小结概要使用gradio部署微调后的模型整体架构流程gradio前期学习,以下是一些常见的输入输出组件,有些即可输入也可输出gr.Audio(sources=['microphone','upload'],#音频输入sources,支持录制或者上传音频文件......
  • 含光AI心理大模型:AI 心理助手,随时待命,伴你左右
    “我感觉自己毫无用处,做什么都不顺。”“焦虑让我窒息,没人能帮我。”……在当今这个快速变化的世界,我们每个人都可能会遇到压力和挑战,这些压力和挑战有时会让我们感到焦虑、失落,甚至自我怀疑。我们的内心可能充满了未被听见的声音,这些声音是我们情感状态的真实写照,它们渴望......
  • 大模型的短期记忆和上期记忆各自的使用场景
    吾名爱妃,性好静亦好动。好编程,常沉浸于代码之世界,思维纵横,力求逻辑之严密,算法之精妙。亦爱篮球,驰骋球场,尽享挥洒汗水之乐。且喜跑步,尤钟马拉松,长途奔袭,考验耐力与毅力,每有所进,心甚喜之。 吾以为,编程似布阵,算法如谋略,需精心筹谋,方可成就佳作。篮球乃团队之艺,协作共进,方显力......
  • 【十分钟学会微调大语言模型 】
    有同学给我留言说想知道怎么训练自己的大语言模型,让它更贴合自己的业务场景。完整的大语言模型训练成本比较高昂,不是我们业余玩家能搞的,如果我们只是想在某个业务场景或者垂直的方面加强大模型的能力,可以进行微调训练。本文就来介绍一种大语言模型微调的方法,使用的工具是我......
  • 苹果大模型系列之 从头开始在 Apple Silicon 上进行 ComfyUI(教程含完整步骤)
    简介如何在搭载AppleSilicon的MacBookPro上安装ComfyUI,并开始使用StableDiffusion创作AI生成的艺术作品。无需开发技能。在安装了Python3.9的M1MacBookPro和安装了Python3.10的M1MaxMacBookPro上进行了测试,均使用macOSSonoma14.1.2。本地......
  • 探索混合专家(MoE)模型预训练:开源项目实操
    探索混合专家(MoE)模型预训练:开源项目实操Mantaverse 来自知乎​目录收起MOE模型是什么实现Moe模型实现步骤拆解1.初始化和形状调整2.计算路由器的logits3.初始化和创建专家掩码4.循环计算专家层输出5.恢复形状并返回结果预训练效果对比DeepseekMoE结语......
  • 能把进程和线程讲的这么透彻的,没有20年功夫还真不行【0基础也能看懂】
    本篇会加入个人的所谓鱼式疯言❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言而是理解过并总结出来通俗易懂的大白话,小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的.......
  • 大模型长度扩展:直接外推, PI, NTK-aware, NTK-by-parts, Dynamic NTK, ALiBi, YaRN, S
    目录第一部分背景知识:从进制表示谈到直接外推、线性内插、进制转换1.1从进制表示到直接外推1.1.1进制表示1.1.2直接外推1.2从线性内插到进制转换1.2.1线性内插1.2.2进制转换第二部分从RoPE、直接外推到位置内插PositionInterpolation2.1旋转位置嵌入2.1.1RoPE的快速回......
  • 【AI牛马贾维斯】微信接入国内大模型生成专属于自己的贾维斯
    效果展示:*根据自定义知识库生成的答案创建并发布智能体创建一个bot(bot如果不知道怎么创建的可以参考这个【养成系】创建你的coze聊天chatbo并训练成你要的样子(摸鱼、炒股、工作…))2.点击右上角的发布选中微信订阅号,点击配置输入APPID,点保存,如果不知道怎么获......
  • Monsters Pack 04(游戏卡通可爱怪兽怪物战士模型)
    以下模型有3种进化形态:捕手战士鱼卫战士骑士战士小鬼战士猴东战士无鼻战士坑娃战士刺头战士树斯特战士楔形战士这些模型是为您的主要角色设计的敌人。进化的每个阶段都会使他变得更加强大,因此您可以用它来增强对手的实力,并作为敌人的boss。它适用于不同类型的游戏......