操作系统—多进程与多线程模型

本文探讨了多进程和多线程模型在操作系统中的应用。在多进程模型中,每个客户端请求由子进程处理,但上下文切换开销大。相比之下,多线程模型通过线程池减少资源占用,实现更高效的并发处理。线程间的上下文切换比进程更轻量级,但线程池可能导致资源限制问题。最后,文章提到了多线程和多进程的主要区别。
摘要由CSDN通过智能技术生成

4、多进程与多线程模型

4.1、多进程模型

​ 使⽤多进程模型,也就是为每个客户端分配⼀个进程来处理请求。服务器的主进程负责监听客户的连接,⼀旦与客户端连接完成,accept() 函数就会返回⼀个「已连接Socket」,这时就通过 fork() 函数创建⼀个⼦进程,实际上就把⽗进程所有相关的东⻄都复制⼀份,包括⽂件描述符、内存地址空间、程序计数器、执⾏的代码等。

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

​ 正因为⼦进程会复制⽗进程的⽂件描述符,于是就可以直接使⽤「已连接 Socket 」和客户端通信了,可以发现,⼦进程不需要关⼼「监听 Socket」,只需要关⼼「已连接 Socket」;⽗进程则相反,将客户服务交给⼦进程来处理,因此⽗进程不需要关⼼「已连接 Socket」,只需要关⼼「监听 Socket」。

存在问题:进程间上下文切换开销大

4.2、多线程模型

​ 对于多线程模式,也就说来了client,服务器就会新建一个线程来处理该client的读写事件。 这种模式虽然处理起来简单方便,但是由于服务器为每个client的连接都采用一个线程去处理,使得资源占用非常大。因此,当连接数量达到上限时,再有用户请求连接,直接会导致资源瓶颈ÿ

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值