读书笔记:《深入理解计算机系统》 之 第十二章 并发编程

在现代系统中,进程是切换执行的。举个例子,我们一边听音乐一边浏览网站,看起来我们是同时执行的,其实是切换执行的,那为什么浏览网站的时候音乐还在播放呢,简单的来说是因为系统中缓冲了一些资源。

以上的举例是建立在单处理器的基础上,随着科技的发展,现在我们的电脑一般都是多核处理器,也就是说可以真的做到并发执行。

再谈一下并行与并发这两个概念,并发与处理器的个数没有关系,只要两个逻辑控制流有重叠或者交错就都是并发.并行是并发的一个特例.并行是指多个处理器同时执行。

但是并发不仅仅局限于内核,它在应用程序中也可以扮演重要角色。使用应用级并发的应用程序成为并发程序,现代操作系统提供了三种基本的构造基本并发程序的方法,分别是基于进程的并发编程,基于I/O多路复用的并发编程,基于线程的并发编程。

基于进程的并发编程,一个比较常见的方法是在父进程中接受客户端的连接请求,然后创建一个新的子进程为每个客户端提供服务。

而基于I/O多路复用的并发编程,基本的思路是使用一个select函数,要求内核挂起进程,只有在一个或多个I/O事件发生后,才将控制返回给应用程序。是一种事件驱动设计。

而基于线程的并发编程,是上面两种方法的混合。基于线程的逻辑流结合了基于进程和基于I/O多路复用的流的特性。同进程一样,线程由内核自动调度,并且内核通过一个整数ID来识别线程。同基于I/O多路复用的流一样,多个线程运行在单一进程的上下文中,因此共享这个进程虚拟空间的所有内容,包括它的代码,数据,堆,共享库和打开的文件。

发布了41 篇原创文章 · 获赞 15 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ScanQ/article/details/103657429