目录
1.什么是进程?
进程
在操作系统内部,进程又是操作系统进行资源分配的 基本单位 。
进程控制块抽象(PCB)
为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块(PCB Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录性数据结构。它是进程管理和控制的最重要的数据结构,每一个进程均有一个PCB,在创建进程时,建立PCB,伴随进程运行的全过程,直到进程撤消而撤消。
在操作系统中每一个进程被描述成一个PCB。
// 以下代码是 Java 代码的伪码形式,重在说明,无法直接运行
class PCB {
// 进程的唯一标识 —— pid;
// 进程关联的程序信息,例如哪个程序,加载到内存中的区域等
// 分配给该资源使用的各个资源
// 进度调度信息(留待下面讲解)
}
- PID:进程的编号
- 内存指针:应用程序申请到的内存首地址
- 优先级:优先级高的进程理论上会更快的被调度到CPU上执行
- 进程的状态:运行,就绪,阻塞
- 上下文件信息,记账信息:记录了进程当前执行到哪里
2.什么是线程
线程
当进程启动时:
1.申请内存
2.申请文件资源
3.将PCB加入到链表中
当进程结束时:
1.释放资源
2.释放内存
3.从链表中删除PCB
这些申请和释放资源的操作是非常耗时的,为了解决资源消耗的问题,提出一个轻量级概念------线程。创建线程只关注要处理的任务,使用的是进程创建时申请到的所有资源。
线程:线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
使用多线程的原因
1.充分利用CPU资源
2.利用轻量级进程的特性减少系统性能的开销
a.线程创建的效率比进程高
b.线程销毁的效率比进程高
c.线程调度的效率比进程高
线程和进程的区别
1.每个进程至少有一个线程存在,即主线程
2.进程是申请系统资源的最小单位
3.线程是CPU调度的最小单位
4.进程之间互不影响,线程之间可以影响
多线程可能存在的问题
举例说明:这里有100只鸡,需求是让滑稽老铁吃完
使用多进程的方式,那么需要再弄一张桌子,两边各50只鸡
使用多线程来处理,增加滑稽数量
继续增加滑稽数量,效率增加
那么是否可以无限增加呢?
资源争抢问题出现,此时就会出现线程不安全的问题
什么是并发?什么是并行?
并发:在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。
并行:在操作系统中是指,一组程序按独立异步的速度执行,无论从微观还是宏观,程序都是一起执行的。对比地,并发是指:在同一个时间段内,两个或多个程序执行,有时间上的重叠(宏观上是同时,微观上仍是顺序执行。
通俗来讲: