进程
定义:进程是程序在一个数据集合上的运行过程,是系统进行资源分配和调度的基本单位(是一个抽象概念)
进程的实体由:程序、数据集和进程控制块(PCB)三部分组成
数据集则是程序在执行过程中所需要使用的资源;
进程控制块用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
需知:每个cpu都有其一套可执行的专门指令集,如SPARC和Pentium,其实每个硬件之上都要有一个控制程序,cpu的指令集就是cpu的控制程序。
内核态于与用户态指的是计算机的两种工作状态
即cpu的两种工作状态
(现在的操作系统都是分时操作系统,分时的根源来自于硬件层面操作系统内核占用的内存与应用程序占用的内存彼此之间隔离)
cpu通过psw(程序状态寄存器)中的一个2进制位来控制cpu本身的工作状态,即内核态与用户态。
内核态:操作系统内核只能运作于cpu的内核态,这种状态意味着可以执行cpu所有的指令,可以执行cpu所有的指令,这也意味着对计算机硬件资源有着完全的控制权限,并且可以控制cpu工作状态由内核态转成用户态。
用户态:应用程序只能运作于cpu的用户态,这种状态意味着只能执行cpu所有的指令的一小部分(或者称为所有指令的一个子集),这一小部分指令对计算机的硬件资源没有访问权限(比如I/O),并且不能控制由用户态转成内核态
线程
定义:
线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元。由线程ID、程序计数器、寄存器集合和堆栈组成
目的:线程的引入是为了解决进程并发带来的高开销问题,并突破一个进程只能干一件事的缺陷,提高系统并发性能。
与进程的比较:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1、 一个程序至少有一个进程,一个进程至少有一个线程(进程可以理解为线程的容器) 2、 进程在执行过程中拥有独立的内存单元,而同个进程的多个线程共享内存 3、 每个独立的线程有一个程序运行的入口、顺序执行序列和程序出口;但线程不能独立执行,必须依赖在应用程序中,由应用程序提供多个线程执行控制。 4、 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配、调度的独立单位 线程是进程的一个实体,是CPU调度和分派的基本单位,比进程更小的独立运行单位。线程不拥有自己系统资源,只有一点在运行中必不可少的资源(程序计数器、一组寄存器和栈),但他可与同属一个进程的线程共享该进程的所有资源。 一个线程可以创建和撤销另一个线程;同一个进程中的多个线程可以并发执行