进程和线程的区别和联系

进程和线程的区别和联系

进程(process

进程process/也就是任务task:是指一个内存中正在运行的应用程序,一个进程由程序代码、数据、堆栈和一组操作系统对象(如打开的文件、信号量等)组成是操作系统进行资源管理的基本单位,进程运行时需要占用系统的硬件/软件资源,硬件资源一般指CPU,内存,磁盘和网络等对于linux系统所有与该进程有关的资源,都被记录在进程控制块PCB中以表示该进程拥有这些资源或正在使用它们一个进程都有一个独立的内存空间彼此独立,互不干扰。程序是指令、数据及其组织形式的描述,进程是应用程序运行的实体。

进程的管理

由于操作系统的资源比较多,进程需要进行。

  1. 进程的描述 通过结构体/类(主流系统是用C/C++实现的,广泛用到结构体struct),对于linux系统,使用进程控制块即PCB这样的结构体来描述进程信息,一个进程是一组PCB。
  2. 进程的组织 创建一个新的进程(双击EXE文件,运行可执行程序),就相当于创建了一个PCB结构体,使用数据结构,把多个这样的结构体串起来,形成链表。然后通过链表的方式,对这些结构体进行增删改查,实现对进程的加入、销毁、变更和查看管理。

进程的标识信息

  1. PID进程的标识符 同一时刻一台机器上有多个进程,每个进程只能有一个唯一的标识符即  PID,不会重复,系统内部的很多操作都是通过PID识别标识进程。
  2. 内存指针(一组)指示进程运行的指令和数据区域,系统运行应用程序时,需要占用系统的内存资源,读取的指令和数据都是加载到内存中,通过内存指针找到相应的存储地址。
  3. 文件描述符表(顺序表/数组)打开硬盘的文件都会出现在进程管理相应的文件描述符表中,进程的开启需要占用一定的硬盘资源。

进程的调度信息

  1. 进程的状态

 在谈到进程时必须要先搞清楚“分时复用”、并发和并行。

分时复用(Time Division Multiplexing以时间作为信号/数据分割传输的参量,将整个传输时间分割为互不重叠的时间间隔,又称为时隙将这些时隙分配给每一个信号/数据源使用,每个时隙只能被一路信号/数据占用,使各路信号/数据在时间轴上互不重叠,通道上的每一时刻只有一路信号存在,从而使不同的信号/数据在不同的时间内传送,通过在时间上交叉轮换发送每一路信号/数据的一部分来实现一条通道传送多路信号/数据。并发(Concurrent)早期的计算机只有一片CPU芯片,并且CPU上只有一个核心,因此CPU只能采用“分时复用”方式执行每一条进程指令单任务系统),但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,称之为“并发”。

并行(parallel)是指计算机发展出现了多个处理器/多核心后,两个或者多个事件在同一时刻发生多任务系统),把每一个任务分配每一个处理器/核心独立完成。在同一时间点,任务一定是同时运行即多个进程同时执行,称之为“并行”。

并行:指两个或多个事件在同一时刻发生(同时发生 同时处理 执行者不是一个)。

并发:指两个或多个事件在同一个时间段内发生(交替的发生 执行者是一个)。

进程的状态分为“就绪状态”和“阻塞状态”。

  1. 进程的优先级
  2. 进程的上下文
  3. 进程的记账信息

进程的调度是由系统内核完成实现的,线程的创建涉及内存资源管理和进程间通信

线程(Thread)

线程:是进程中的一个执行单元(线程是依赖于进程的),线程也被称为轻量级进程负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中是可以有多个线程的,这个应用程序也可以称之为多线程程序。线程是系统调度执行的基本单位。一个线程是一个PCB。

  

进程和线程之间主要的区别有

1)资源占用方式不同:进程是操作系统分配资源的最小单位,一个进程可以包含多个线程,每个进程会独占一定的系统资源,如内存、I/O 等。线程则共享所属进程的资源,除了 CPU 寄存器和栈等少数几个私有资源外,线程之间共享其它所有的资源。

2)线程更加轻量级:线程比进程更加轻量级,创建和销毁线程的开销远小于创建和销毁进程的开销。

3)通信方式不同:由于线程之间共享资源,所以它们之间的通信比较容易,可以通过共享内存、消息队列等方式实现。而进程之间的通信需要用到 IPC(Inter-Process Communication)机制,如管道、套接字、共享内存等。

4)安全性不同:由于线程共享了相同的内存空间,线程之间的安全问题比较难以处理,一个线程访问了共享资源可能会影响到其它线程的执行。而进程之间则相对独立,互不干扰,安全性较高。

总之,进程是操作系统分配资源的基本单位,线程是进程中的一个执行单元,两者之间有区别也有联系,各自有不同的应用场景。在具体使用时需要根据实际情况来选择使用哪种方式来完成任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值