题目:线程和进程的区别
一、概念介绍
- 进程的基本概念
进程就是一个运行起来的程序,一般见到xx.exe就是一个进程。我们都知道一个操作系统上只有一个CPU,但是CPU通过不断的切换运行的进程,给我们一种任务并行执行的错觉。
- 线程的基本概念
线程是进程中执行运算的最小单位,是进程中的一个实体。是被系统独立调度和分派的基本单位。每个线程都拥有自己独立的程序计数器、虚拟机栈、本地方法栈,并且共享同属于一个进程的所有资源,包括堆和方法区等等。
线程的出现是为了降低上下文切换的消耗,提高系统的并发性,并突破一个进程只能干一件事的缺陷,使进程内并发称为可能。
二、进程与线程的关系
以多进程形式,允许多个任务同时运行;
以多线程形式,允许单个任务分成不同的部分运行
提供协调机制,一方面放置进程之间和线程之间产生冲突,另一方面允许进程之间和线程之间共享资源。
进程是操作系统资源分配的基本单位
线程是任务调度和执行的基本单位
三、一些概念
互斥锁
比如公司里使用打印机,我们在使用打印机打印东西的时候(还没有打印完),别人刚好也在使用打印机,如果这个时候不做任何处理,打印出来的东西肯定是错乱的。
进程中的资源是共享的,但是资源不能被无数线程使用,加上锁之后能够防止多个线程同时读写某一块内存区域。即同一时刻只能有一个线程持有该锁。互斥锁有两种状态即上锁和解锁。
信号量
信号量广泛用于进程或线程间的同步或互斥。用来保证多个线程不会互相冲突的使用同一块内存区域。信号量是操作系统提供给用户使用的一种机制,帮助用户进程协调使用资源,用户编程的时候可以直接调用,不必自己设计。计算机对信号量只能执行 wait和signal这两种原子操作,即申请和释放信号量时无法被打断。