1. 进程
1.1 进程概念
进程=程序+执行,当把一个程序从磁盘中加载到内容中,cpu去运算和处理这个进程(运行起来的程序就是进程);
1.2 进程模型的三个维度
1.3 进程模型的发展
原始的操作系统为单道编程:一个程序执行完,再执行下一个;
缺陷明显: ①响应时间慢【用户体验差】;
②cpu利用率比较低【假设一个进程包含20%cpu计算和80%的io,io时cpu是闲置的,cpu利用率为20%】;
1.4 进程产生和退出
进程产生三种情况:
- 操作系统会产生服务进程;
- 父进程创建子进程;
- 用户请求创建一个进程;
进程退出三种情况:
- 进程的所有运算都处理完之后,自行退出;
- 进程在运行过程中产生错误或异常而强行退出;
- 一个进程被其他进程所杀死而退出;
1.5 进程状态
注:cpu调度时是不会查看和调度阻塞态进程,即使给cpu资源该进程,cpu也处理不了该进程;
2. 线程
2.1 线程概念
- 一个进程必须至少有一个线程;
- 引入线程模型:是为了让进程同时处理多个程序;
- 此时进程相当于资源组织单位,线程是cpu最小执行单位;
2.2 线程调度算法
- 1、FCFS(First come first server)先来先服务调度算法:先来的线程处理完后再处理下一个来的线程;
弊端:后来的线程响应时间非常长,cpu利用低; - 2、时间片轮转调度算法:有效缩短了响应时间,提高了cpu利用率;
缺陷:较多的短任务处于饥饿状态; - 3、短任务优先调度算法:优先去完成短任务;
缺陷:可会导致长任务时常处于饥饿状态; - 4、优先级调度算法:为线程分别分配优先级,优先级高的线程优先被处理;
缺陷:优先级低的线程长期处于饥饿状态; - 5、混合调度算法:这个算法把之前算法的优点进行结合,然后做线程调度;