首页 > 系统相关 >程序、进程、线程

程序、进程、线程

时间:2022-12-06 20:48:19浏览次数:45  
标签:操作系统 程序 并发 线程 切换 进程 CPU

一、概述

程序: 存放在磁盘中的可执行文件,对于计算机来说它就是一系列的指令集合,是一个静态概念

进程: 程序的一次执行过程,是一个动态的概念,进程由进程控制块、程序段、数据段组成,它是操作系统进行资源分配的最小单位

程序控制块(PCB: Process Control Block)

  • 进程描述信息: (进程标识符 pid、用户标识符 uid)
  • 进程控制和管理信息: (CPU、磁盘、网络流量使用情况、进程运行状态)
  • 资源分配清单: (正在使用的内存区域、正在使用的 IO 设备、正在使用的文件)
  • 处理机相关信息: (程序状态字(PSW)、PC 等各种寄存器的值(用于进程切换))

程序段: 程序代码(一系列的指令序列)

数据段: 进程运行过程中产生和使用的各种数据

线程: 线程可以理解为轻量级进程,它是操作系统进行运算调度的最小单位

 

二、有了进程之后为什么还要再引入线程

  • 线程是进行调度和运算的最小单位,引入了线程之后,不仅是进程与进程之间可以并发,同属与一个进程内的线程也可以发生并发,从而提高了系统的并发度
  • 线程并发、创建、销毁、切换的开销相比于进程来说更低
  • 进程间通信必须请求操作系统服务(CPU 需要从用户态切换到核心态),系统开销大,同进程下的所有线程共享该进程的资源,线程之间通信无需操作系统进行干预,开销更小

 

三、什么是线程的上下文切换

对于单核 CPU 而言,在某一个时刻只能运行一个线程,当 CPU 结束运行一个线程,转而去执行另外一个线程,这个过程就被称为线程上下文切换

以下是 Java 中常见的发生 CPU 上下文切换的场景

  • CPU 时间片用完
  • 垃圾回收器进行垃圾回收
  • 有更高优先级的线程加入
  • 线程主动调用 sleep、yield、wait、join、park、synchronized、lock 等方法

 

标签:操作系统,程序,并发,线程,切换,进程,CPU
From: https://www.cnblogs.com/xiaomaomao/p/16960436.html

相关文章