1.进程和线程的基本概念

181 阅读3分钟

1.1进程的基本概念

  1. 进程是应用程序在内存中分配的空间,是一个正在运行的程序
  2. 各个进程之间相互独立,互不影响

1.1.1程序的概念

程序是由某种语言编写的,能完成特定任务和功能代码集合,是代码和指令的有序集合。是一段静态代码

1.2线程的基本概念

虽然有了进程的概念,让操作系统在同一时间上可以同时做多个任务。但是人们还是不满足一个进程只能够执行一个任务,所以就有了线程的概念。

线程是进程的一个执行任务,执行单元。这样,一个进程就拥有了多个线程,一个线程就是一个执行任务。

进程让操作系统的并发性成为可能,线程让进程内的并发性成为可能

1.3 为什么使用多进程就可以完成并发?还要使用多线程?

①线程之间是内存隔离的,所以线程之间想要共享数据是十分复杂和困难。而线程是共享他们所属进程所分配的内存空间的,所以线程之间进行资源共享要简单得多。

②进程是重量级的,而线程是轻量级的。维护一个进程所需要的花销要比维护一个线程的花销要大得多。

1.4 进程和线程之间的区别

进程是应用程序在内存上所分配的内存空间,是一个独立的运行环境,而线程是进程上的一个执行单元。它们之间的本质区别就是是否有独占的内存地址空间和一些系统资源

①进程之间互不影响,它们之间存在地址隔离,这就导致了进程之间共享数据和资源十分复杂和困难。但与此同时,进程之间的数据同步十分容易实现。而线程之间共用它们所属进程的内存空间,这使得它们共享资源十分方便,但实现数据同步问题却十分复杂。

②进程独占内存地址空间,当一个进程发生错误时,不会影响操作系统中其他进程的执行。但是如果一个线程发生了错误,可能导致其他线程也进入不可运行的状态。

③进程是重量级的,创建和销毁进程都会造成较大的开销。而线程的创建和销毁线程的开销要小得多。

④进程是操作系统进行资源分配的最小单元。线程是操作系统中进行调度的最小单元,即cpu分配时间的单元。

1.5 上下文切换

1.5.1 什么是上下文切换?

从一个进程(线程)切换到另一个进程(线程)就是一次上下文切换。上下文指的是cpu寄存器以及程序计数器中在某一时刻的内容。

CPU为每个线程分配了CPU时间片来实现线程调度,当一个线程的cpu时间片使用完了之后,就会切换到另一个线程。任务切换之前,会将当前线程的工作状态保存起来,以便于下次加载。从保存状态到再次加载的过程,也可以称为一次上下文切换。

上下文切换是有一定损耗的,所以线程的数量不是越多越好。我们要尽可能地减少上下文切换的次数,这样就可以提高多线程的性能。