进程
概念
进程=程序+执行。当把一个程序从磁盘中加载到内容中,cpu去运算和处理这个进程(运行起来的程序就是进程)。
从三个维度来看进程的模型
为什么会引入进程模型?
最开始的操作系统是单道编程(一个程序处理完,再处理下一个程序)
缺点:1响应时间慢(客户体验差),2cpu利用率非常低
例如:假设一个进程,20%需要做cpu运算,80%在做IO(发送IO事件时,cpu时闲置的)=>cpu利用率是20%
单道编程模型:cup利用率=1-0.8=20%
多道编程模型下:
同时执行两个进程的话:1-0.8*0.8=36%
同时执行三个进程的话:1-0.8*0.8*0.8=48.8%
总结:引入进程模型,目的就是为了满足多道编程,而多道编程的目的就是为了提高cpu的利用率。随着进程数量的增加,cpu的利用率逐步提高。
进程产生和消亡的事件
进程的状态
所以细分进程的状态:执行态|就绪态|阻塞态(计算机在做进行调度时,是不会调度和查看阻塞态的进程的)
进程的状态转变
线程模型
概念
一个进程必须有一个线程,也可以有多个线程。
比如:拿word写笔记,这个word进程会监听打字;此外,每隔10分钟(默认值)自动保存一次。
总结:引入线程模型,目的就是为了让进程可以同时做多件事(线程是进程的分身)。此外,引入线程模型后,cpu的最小执行单位就变成了线程。
最后总结:进程相当于资源组织单位,线程是cpu最小执行单位。
调度算法!!!
- FCFS(First come first server )先来先服务调度算法,处理先来的线程,线程处理完后再处理下一个来的线程。
- 时间片轮转调度算法。这个算法的出现,解决了FCFS算法的问题,有效缩短了响应时间,提高了cpu利用率。但是这个算法可能存在的缺陷是:短任务处于饥饿状态。
3.短任务优先调度算法:优先去完成短任务。这个算法的局限性:可能会导致长任务时常处于饥饿状态。
4.优先级调度算法:为线程分别分配优先级,优先级高的线程优先被处理。局限性就是优先级低的线程长期处于饥饿状态。
5.混合调度算法:这个算法把之前算法的优点进行结合,然后做线程调度