大二下 计算机操作系统 第二次课 多处理器编程 20250314
并发就是操作系统的核心之一,操作系统的很多内部数据结构(如进程列表、页表、文件系统结构)都得考虑「数据竞争」的可能。
并发的很多技术都是源自于操作系统的设计需求和其相应的解决方案。
多线程编程
线程
并发的基本单元是线程(thread),线程拥有独立的「上下文」和栈帧列表,共享全局变量,堆空间。
上下文包括程序计数器、寄存器、栈指针等。注意,一定要注意哪些是线程私有的,哪些是线程共享的!
进程和线程的区别
1.定义
进程:是应用程序运行时的实例,是程序在某个数据集上的一次动态执行过程。它是一个独立的执行单元,拥有自己的内存空间、代码段、数据段、栈段等资源。每个进程在操作系统中都有一个唯一的标识符,如进程ID(PID)。
线程:是进程中的一个执行单元,是CPU调度和执行的最小单位。一个进程可以包含多个线程,这些线程共享该进程的资源,如内存空间、文件句柄等,但每个线程有自己的程序计数器、栈和局部变量。
2.执行
进程:每个进程有自己独立的内存空间和系统资源,进程之间的切换会保存当前进程的状态,并加载下一个进程的状态,开销较大。
线程:线程是进程中的一个执行流,是进程中的一个实体。线程的切换相对轻量级,因为线程共享进程的资源,切换时不需要切换整个进程的上下文。
3.创建和销毁
进程:创建和销毁进程需要分配和回收内存空间、初始化进程控制块等操作,系统开销较大。
线程:创建和销毁线程相对简单,只需要分配和回收线程控制块等少量资源,系统开销较小。
4.通信
进程:进程之间通信需要使用特定的机制,如管道、消息队列、共享内存等,通信较为复杂。
线程:线程之间可以直接共享进程的内存空间和资源,通信相对简单。
进程和线程的联系
线程是进程的一部分:一个进程可以包含多个线程,这些线程共享该进程的资源和内存空间。
线程是进程中的执行单元:线程是CPU调度和执行的最小单位,进程的执行实际上是由其包含的线程来完成的。
线程的生命周期受进程控制:当进程结束时,其包含的所有线程也会随之结束。
总结
进程是资源分配和保护的单位,每个进程有自己独立的内存空间和系统资源。
线程是CPU调度和执行的单位,线程之间的切换开销小,适合用于实现并发操作。
线程依赖于进程存在,一个进程可以包含多个线程,线程共享进程的资源。



浙公网安备 33010602011771号