程序、进程、线程的区别是什么?


程序:就是硬盘上的可执行文件,并且只占用磁盘上的空间,是一个静态的概念。 
进程:被执行之后的程序叫做进程,不占用磁盘空间,需要消耗系统的内存、cpu资源,每个运行的进程都有自己的虚拟地址空间,是一个动态的概念。
线程:是轻量级的进程(light weight process),操作系统会以进程为单位,分配系统资源,进程是操作系统资源分配的最小单位,线程是操作系统调度执行的最小单位。
进程和线程的区别:
  1、进程有自己独立的地址空间,多个线程共用同一个地址空间。
    线程更加节省系统资源,效率不仅可以保持的,而且更高。
    在一个地址空间,多个线程独享:每个线程都有属于自己的栈区,寄存器(内核中管理的)

    在一个地址空间,多个线程共享:代码段,堆区,全局数据区,打开的文件(文件描述符表)都是线程共享的。

  2、进程是操作系统中最小的资源分配单位,线程是程序的最小执行单位。

    每个进程对应一个虚拟地址空间,一个进程只能抢一个cpu时间片。

    一个地址空间可以划分出多个线程,在有效的资源基础上,能够抢更多的cpu时间片。

    cpu的调度和切换:进程/线程分是复用cpu时间片,在切换之前会将上一个任务的状态进行保存,下次切换回这个任务的时候,加载这个状态继续运行,任务保存到再次加载的这个过程就是一次上下文切换。

posted @ 2023-08-09 00:01  潘阳399  阅读(182)  评论(0编辑  收藏  举报