笔记:并发简介
一、并发的定义
在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但是任一个时刻点上只有一个程序在处理机上运行。并发环境下,由于程序的封闭性被打破,出现了新的特点:
- 程序与计算不再一一对应,一个程序副本可以有多个计算;
- 并发程序之间有相互制约关系:直接制约体现为一个程序需要另一个程序的计算结果,间接制约体现为多个程序竞争某一资源,如处理机、缓冲区等;
- 并发程序在执行中是走走停停,断续推进的。
二、和并行的区别与联系
并发性(Concurrence):指两个或两个以上的事件或活动在同一时间间隔内发生。
并行性(Parallelism):指两个或两个以上事件或活动在同一时刻发生。
1)两者的区别
并发和并行的区别就是一个处理器同时处理多个任务和多个处理器(或者是多核的处理器)同时处理多个不同的任务。前者是逻辑上的同时发生,而后者是物理上的同时发生。
2)两者的联系
并行的事件或活动一定是并发的,但反之并发的事件或活动未必是并行的。
并行性是并发性的特例,而并发性是并行性的扩展。
三、表现形式
1)多进程并发
当客户有请求时 ,服务器用一个子进程来处理客户请求,父进程继续等待其它客户的请求。这种方法的优点是当客户有请求时 ,服务器能及时处理客户 ,特别是在客户服务器交互系统中。对于一个 TCP 服务器 ,客户与服务器的连接可能并不马上关闭 ,可能会等到客户提交某些数据后再关闭 ,这段时间服务器端的进程会阻塞 ,所以这时操作系统可能调度其它客户服务进程。
2)多线程并发
多线程并发是对多进程并发的改进 ,由于多进程并发服务器在创建进程时要消耗较多的系统资源,所以用线程来取代进程,这样服务处理程序可以较快的创建(据统计,创建线程比创建进程要快 10100 倍,所以又把线程称为“轻量级”进程)。
3)I/O复用并发
I/O复用技术是为了解决进程或线程阻塞到某个I/O系统调用而出现的技术,使进程不阻塞于某个特定的I/O系统调用。它也可用于并发服务器的设计,但很多情况下它是与多线程和多进程一起使用。
这种方法的优点是:由于只有一个进程或线程 ,系统资消耗较小。缺点是要处理完一个客户后 ,才能处理其它客户的请求 ,而且处理客户请求时 ,不能让它阻塞到其它的 I/O系统调用上 ,否则就成了一种迭代服务器。对于某些处理客户请求的时间较短、实时性要求不是很高的网络服务器 ,I/O复用可以较好的应用。
I/O复用能让一个或多个I/O条件满足(例如,输入已经准备好被读,或者描述字可以承接更多的输出)时,我们就被通知到。I/O复用由select和poll支持,较新的Posix.1g也支持(pselect)。I/O复用技术的应用面十分广泛,总结一下主要有以下几方面:
- 客户程序需要同时处理交互式的输入以及与服务器之间的网络连接。
- 客户端需要同时对多个网络连接作出反应。
- TCP服务器需要同时处理处于监听状态和多个连接状态的套接字。
- 服务器需要处理多个网络协议套接字。
- 服务器需要同时处理不同的网络服务和协议。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)