目录
一:进程
1.进程的概念
进程是程序的一次执行过程,是操作系统分配资源的基本单位。进程在电脑上就是一个个运行的软件,比如QQ、微型等。
2.进程控制抽象块(PCB)
每个进程控制块如图 所示,它包含许多与当前进程相关的信息:
- 进程状态:状态可以包括新的、就绪、运行、等待、停止等。
- 程序计数器:计数器表示进程将要执行的下个指令的地址。
- CPU 寄存器:根据计算机体系结构的不同,寄存器的类型和数量也会不同。它们包括累加器、索引寄存器、堆栈指针、通用寄存器和其他条件码信息寄存器。在发生中断时,这些状态信息与程序计数器一起需要保存,以便进程以后能正确地继续执行。
- CPU 调度信息:这类信息包括进程优先级、调度队列的指针和其他调度参数。
- 内存管理信息:根据操作系统使用的内存系统,这类信息可以包括基地址和界限寄存器的值、页表或段表。
- 记账信息:这类信息包括 CPU 时间、实际使用时间、时间期限、记账数据、作业或进程数量等。
- I/O 状态信息:这类信息包括分配给进程的 I/O 设备列表、打开文件列表等。
3.CPU的进程调度
(1)进程的优先级:进程的优先级是指根据任务的重要性或紧急性给进程排序,重要的需要及时处理的优先级高,CPU就优先处理,相反的则CPU后处理。
(2)进程的状态:进程可以有很多状态,但大致分为两类:就绪状态和阻塞状态,就绪状态是指进程是准备就绪的,随时都可以上CPU;阻塞状态是指进程等待某个任务完成或资源分配到位以后才能让CPU执行。
(3)进程的记账信息:操作系统在为进程安排时间的时候,避免有些进程时间安排的太少或根本就没有分配时间,所以记录每个进程的执行时间。
(4)进程的上下文: 进程在调度的时候,被调出进程的寄存器状态会被保存在PCB中
4.进程的内存分配
操作系统对系统资源的分配,采用的是空间模式,不同的进程使用内存中不同的区域,互相之间互不干扰。
5.进程之间的通讯
主要有管道、共享内存、文件、网络等
二:线程
1.线程的概念
线程:一个线程就是一个执行流,一个进程中包含多个线程,每个线程并发执行分别完成不同的任务,它是操作系统调度的最小单位。
2.为什么要有线程
因为现在的电脑处理多个任务就需要并发执行,为了解决并发执行就需要并发编程,虽然进程也能实现并发编程,但是创建进程和释放进程需要分配资源,比较消耗时间,创建进程以后,多个线程共享一份系统资源,所以只需要进程加载一次系统资源,线程共同利用这一份资源即可,系统不必在为每个线程再分配系统资源,从而大大降低了资源的开销。
总结上面就是线程的资源开销比进程小。
3.进程和线程之间的关系
1.一个进程包含多个线程,如果把进程比作工厂,那么线程就是工厂中的流水线
2.每个进程有独立的虚拟空间,也有自己独立的文件描述表;同一个进程的多个线程之间,则共用这一份虚拟地址空间和文件描述表
3.进程是操作系统中资源分配的基本单位,线程是操作系统中执行调度的最小基本单位
4.多个进程同时执行的时候,如果一个进程挂了,一般不会影响到别的进程,同一个进程内的多个线程之间,如果一个线程挂了,很可能把整个进程都带走。
看一段程序来加上进程和线程的理解:
class MyThread extends Thread{
@Override
public void run() {
while(true){
System.out.println("再见");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Thread01 {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
while(true){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("你好");
}
}
}
上面的整个程序就是进程,进程里面包含了多个线程,在上面就包含了main线程和thread线程。关于多线程会在将来的文章中详细将。
拓展——操作系统
一.操作系统的概念 :操作系统是一组做计算机软硬件管理的计算机系统软件,功能是为上层用户、应用程序提供简单易用的服务。
二:操作系统的功能和目标
- 操作系统的核心功能:对下要管理各种硬件设备,对上要给各种软件提供稳定的运行环境
- 作为系统资源的管理者需要提供处理机管理、存储器管理、文件管理、设备管理等;
- 作为用户与计算机之间的接口需要提供命令接口、层序接口、图形用户接口(GUI);
- 作为最近接硬件的层次是一种硬件的扩充机器;
三:操作系统的特征
- 并发性:指两个或多个事件同一时间间隔发生,这些时间宏观上是同时发生的,但是微观上是交替发生的(区别并行:并行是指多个时间同一时刻同时发生);
- 共享性:共享即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用;这里的资源共享有两种共享方式:互斥共享(系统资源同一时间只允许一个进程访问该资源)、同时共享(允许一个时间段内有多个进程"同时"对他们进行访问);
- 虚拟性:虚拟是指把一个物理上的实体变为若干个逻辑上的对应物。物理实体是是实际存在的,逻辑上的对应物是用户感受到的;
- 异步性 :是指多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以不可预测的速度向前推进,这就是异步性
四:操作系统的分层图