刚学习操作系统时,常常被进程和线程搞晕,于是写一篇博客本主要讲述进程的区别与联系。
进程 | 线程 | |
动静态 | 动态(相比程序) | 动态 |
内存空间 | 每个进程,都有独立的地址空间和资源 | 隶属于统一进程的线程都具有相同的地址空间。 |
资源 | 进程是系统中拥有资源的基本单位,拥有系统资源和CPU资源。 | 线程不拥有系统资源(可以忽略不记),但是拥有CPU资源。注意:线程可以访问其隶属的进程的系统资源。 |
独立性 | 每个进程都拥有独立的地址空间和资源,除了共享全局变量,不允许其他进程访问 | 同一进程的线程共享所隶属的进程的地址空间的资源。 |
系统开销 | 创建或撤销进程时,系统要分配或回收PCB及其他资源(内存空间、I/O设备等),开销较大 | 进程切换时只需保存和设置少量寄存器内容,开销小 |
并发性 | 可并发执行 | 可并发执行 |
1.区别
-
定义:
- 进程是程序的一次执行过程,拥有独立的内存空间、系统资源和状态。
- 线程是进程内的一个独立执行单元,共享相同的内存空间和系统资源。
-
资源开销:
- 进程之间相互独立,每个进程有自己的地址空间,创建和销毁进程的开销较大。
- 线程共享相同的地址空间,创建和销毁线程的开销较小,因为它们属于同一个进程。
-
通信与同步:
- 进程间通信需要复杂的机制,如管道、消息队列、共享内存等。
- 线程之间可以通过共享内存等简单的机制进行通信,但需要考虑同步问题,以避免竞态条件和死锁。
-
独立性:
- 进程是相互独立的执行单元,一个进程的崩溃不会影响其他进程。
- 线程是进程内的执行单元,共享相同的资源,一个线程的错误可能影响整个进程。
-
切换开销:
- 进程切换的开销较大,涉及到保存和恢复整个进程的状态。
- 线程切换的开销相对较小,因为线程共享相同的地址空间,切换时只需保存和恢复线程私有的状态。
2.联系
-
层次关系:
- 一个进程可以包含多个线程,这些线程共享相同的资源。
- 多个进程可以同时存在,每个进程有独立的资源和内存空间。
-
并发执行:
- 进程和线程都是为了实现程序的并发执行,提高系统资源的利用率。
- 进程间通信和线程同步是并发编程中需要考虑的共同问题。
-
灵活性:
- 线程的创建、销毁和切换开销较小,提供了更灵活的并发控制机制。
- 进程提供了更强的隔离性,但创建和销毁的开销相对较大
3.计算机资源:
系统资源和CPU资源并不是同一回事,它们在计算机系统中有不同的含义和作用。
1.CPU资源:
CPU资源指的是中央处理器(CPU)的计算能力。CPU是计算机的核心组件,它执行计算指令,是处理器芯片的一部分。CPU负责执行计算任务,包括算术运算、逻辑运算、数据处理等。计算机的性能通常与CPU的速度、核数以及架构等因素有关。
2.系统资源:
系统资源是一个更广泛的概念,它包括计算机系统中的各种资源,不仅仅包括CPU,还包括内存、硬盘存储、网络接口、输入输出设备(如键盘、鼠标、显示器)、操作系统服务、文件系统、进程管理、线程管理等。系统资源用于支持计算机上运行的各种应用程序和任务。
系统资源的管理和分配由操作系统负责。操作系统通过调度算法来分配CPU时间片、内存空间、文件句柄等资源给不同的进程和线程,以确保它们能够合理地共享这些资源,同时保持系统的稳定性和性能。
总之,CPU资源是计算机中的一部分,用于执行计算任务,而系统资源是更广泛的概念,包括计算机上的各种硬件和软件资源,用于支持应用程序的运行和管理。系统资源的有效分配和管理对于计算机系统的性能和稳定性至关重要。
进程的优先级分为动态和静态两种,动态优先级是根据运行情况进行调整的。
系统发生死锁时,有可能进程全都处于堵塞态,CPU空闲。
程序密封性指:进程执行的结果只取决于进程本身,与外界影响无关。进程的执行速度也无法改变执行结果。如果失去密封性后,不同速度下的执行结果不同。
引入线程前,进程是系统进行资源分配和调度的一个独立单位。
引入线程后,进程依然是系统资源分配的单位,但内核级线程是处理器调度和分派的单位。
进程和程序的区别:进程并不只是程序,因为程序是静态的,进程是动态的,进程包括PCB、程序段、数据段。
正文段:二进制代码、常量
数据栈段:临时使用的变量
数据堆段:动态分配的存储区
这个博客如果对你有帮助,给博主一个免费的点赞就是最大的帮助❤
欢迎各位点赞,收藏和关注哦❤
如果有疑问或有不同见解,欢迎在评论区留言❤
后续会继续更新大连理工大学相关课程和有关操作系统的内容
点赞加关注,学习不迷路,好,本次的学习就到这里啦!!!