目录
一 进程概念
二 进程的组成
2.1 PCB
2.2 数据段
2.3 程序段
三 进程的五大特点
四 进程的创建与销毁
五 线程概念
六 线程特征
七 进程与线程的区别与联系
区别
联系
一 进程概念
进程是程序的一次执行过程,是操作系统进行资源分配和调度的基本单位。
一个程序至少有一个进程,一个进程至少有一个线程
每个进程有独立的内存空间和系统资源,一个进程的错误不会影响其他进程。
二 进程的组成
2.1 PCB
PCB:进程控制块。进程存在的唯一标识。用来描述进程的属性信息
当进程被创建时,操作系统为其创建 PCB,当进程结束时,会回收其 PCB。
进程控制块 PCB 一般包含如下四类信息:
进程描述信息:用来让操作系统区分各个进程,当进程被创建时,操作系统会为该进程分配一个唯一的、不重复的 “身份证号”— PID(ProcessID,进程 ID)。另外,进程描述信息还包含进程所属的用户 ID(UID)
进程控制和管理信息:记录进程的运行情况。比如 CPU 的使用时间、磁盘使用情况、网络流量使用情况等。
资源分配清单:记录给进程分配了哪些资源。比如分配了多少内存、正在使用哪些 I/O 设备、正在使用哪些文件等。
CPU 相关信息:进程在让出 CPU 时,必须保存该进程在 CPU 中的各种信息,比如各种寄存器的值。用于实现进程切换,确保这个进程再次运行的时候恢复 CPU 现场,从断点处继续执行。这就是所谓的保存现场信息。
2.2 数据段
一个进程的数据段,可以是进程对应的程序加工处理的原始数据,也可以是程序执行时产生的中间或最终结果,即进程运行过程中的各种数据(比如程序中定义的变量)。
2.3 程序段
程序段就是能被进程调度时程序调度到CPU执行的程序代码段(指令序列)。注意,程序可被多个进程共享,即多个进程可以运行同一个程序。同时挂三个 QQ 号,会对应三个 QQ 进程,它们的 PCB、数据段各不相同,但程序段的内容都是相同的(都是运行着相同的 QQ 程序)
三 进程的五大特点
动态性:进程是程序的一次执行过程,有着创建,活动,暂停,终止等过程。具有一定生命周期 。是动态的产生,变化和消亡的。动态性是最基本的特征
并发性:多个进程实体同时存在内存中。能在一段时间内同时运行。重要特征。引入进程的目的就是为了使程序能与其他进程的程序并发执行,提高资源利用率
独立性:指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单元。
异步性:由于进程的相互制约,使得进程具有执行的间断性,即进程按各自独立的、不可预知的速度走走停停、何时开始何时暂停何时结束不可预知的性质,就会导致执行结果的不可再现性,为此在操作系统中必须配置相应的进程同步机制。
结构性:每个进程都配置一个PCB对其进行描述。从结构上看,进程实体是由程序段、数据段和进程控制块三部分组成的。
四 进程的创建与销毁
创建: 通常通过 fork()
系统调用创建子进程。fork()
会复制父进程的地址空间和资源到子进程。
销毁: 进程可以通过 exit()
终止自身,父进程可以通过 wait()
等待子进程的终止。
五 线程概念
同一进程中的线程共享资源,一个线程的错误可能会影响其他线程
线程是程序执行流的最小单元。一个进程可以包含多个线程,这些线程共享进程的资源(如内存空间、文件描述符等),但每个线程有其独立的执行路径和线程上下文(如寄存器状态、栈等)。线程是操作系统调度的基本单位,它允许程序在并发执行时更加灵活和高效。
引入线程增加并发度。线程成为了程序执行流的最小单位。
可以把线程理解“轻量级进程”。
线程是一个基本的CPU执行单元,也是程序执行流的最小单位。
引入线程之后,不仅是进程之间可以并发,进程内的各线程之间也可以并发,从而进一步提升了系统的并发度,使得一个进程内也可以并发处理各种任务(如QQ视频、文字聊天、传文件)
引入线程后,进程只作为除CPU之外的系统资源的分配单元(如打印机、内存地址空间等都是分配给进程的)。
线程库完成了对线程的管理工作
六 线程特征
-
轻量级:
-
线程是轻量级的执行单元,创建、切换和销毁线程的开销比进程小得多。
-
线程共享进程的资源,因此不需要像进程那样分配独立的内存空间和系统资源。
-
-
并发性:
-
线程支持并发执行,多个线程可以在同一个进程中同时运行。
-
并发性使得程序可以更高效地利用多核处理器,提高程序的性能。
-
-
共享资源:
-
同一进程中的多个线程共享进程的资源,如内存空间、文件描述符等。
-
这种共享机制使得线程之间的通信和同步更加高效,但也增加了线程之间的竞争和冲突。
-
-
独立性:
-
每个线程有其独立的执行路径和线程上下文,包括程序计数器(PC)、寄存器状态和栈。
-
线程的执行是独立的,一个线程的执行不会直接影响其他线程的执行。
-
-
异步性:
-
线程的执行顺序和速度是不可预测的,取决于操作系统的调度策略和系统资源的可用性。
-
异步性使得程序的运行更加灵活,但也增加了程序设计的复杂性。
-
七 进程与线程的区别与联系
计算机的核心是cpu,他承担了所有计算任务,单个cpu一次只能运行一个任务,也就是说任意时刻cpu总是运行一个进程(任务),其他进程属于非运行状态。一个任务可以由多个线程协同来完成。进程的空间是可以由线程共享的,每个线程都可以使用这些共享内存,但是有些共享内存只能有一个线程使用,这代表一个线程使用这些共享内存时,其他线程必须等他结束才能使用。为了防止使用时其他线程进入,我们可以给它加一把锁,叫互斥锁mutex。防止多个进程与线程同时读写某一块内存区域
区别
1. 进程是程序的一次执行过程,是操作系统进行资源分配和调度的基本单位。每个进程都有独立的内存空间,系统资源等
线程是进程的一个执行单元,是操作系统能进行调度的最小单位。同一进程中的多个线程共享进程的资源
2. 每个进程都有独立的内存空间,系统资源如文件描述符,信号处理等。进程之间的资源是隔离的
同一进程中的线程共享进程的资源。线程之间的资源共享更加高效
3. 创建和销毁进程的开销大,线程的开销小
4. 进程之间的通信需要通过进程通信ipc机制,如管道,消息队列,共享内存等,通信开销大
同一进程中的线程可以共享内存直接通信,开销小,线程之间的通信更加高效
5. 每个进程都有独立的内存空间和系统资源,一个进程的错误不会影响其他进程
同一进程中的线程共享资源,一个线程的错误可能会影响其他线程
6. 操作系统调度的基本单位是进程
线程是操作系统调度的最小单位,调度的粒度更小,可以更高效的利用多核处理器
联系
1. 线程是进程的一部分
一个进程可以包含多个线程,线程的生命周期依赖于进程的生命周期。线程的创建和销毁必须在进程的上下文中进程
2. 共享资源
共享机制使得线程之间的通信和同步更加高效
3. 进程和线程都可以并发执行