1、定义。进程就是运行中的程序,资源分配的基本单位;
线程是进程中执行的任务,独立调度的基本单位。
2、包含关系。一个进程可以有多个线程。
3、系统开销,线程的代价和开销比较小
4、内存。线程没有独立的地址空间共享进程的资源和内存。
5、运行。线程不能独立运行,必须依存在进程中。
进程的状态
1、创建状态2、就绪状态3、运行状态4、阻塞状态5、终止状态
进程调度算法特点及使用场景
其中:
1、时间片算法:时间片短,开销大;时间片长,实时性差。
2、多级反馈队列算法:开辟多个就绪队列,每个队列时间片大小不同,如1、2、4、8….,当进程在第一个队列没有执行完,则会被移动至第二个队列。每个队列的优先级也不同,最上面的队列优先级最高,只有上一个队列为空,才会调度当前队列的进程。
协程的作用
一种比线程更轻量级的存在,一个线程可以拥有多个线程。
协程不是操作系统内核管理的,性能大幅提升。
协程上下文切换时不用陷入内核态,切换效率高。
常见进程同步问题
生产者—消费者问题
哲学家进餐问题:哲学家拿起两边的筷子进餐。
哲学家进餐问题死锁解决办法之设置条件:
1、必须拿起两边的筷子才能进餐
2、只有两边的邻居不进餐的时候才进餐
读者-写者问题:允许多个进程同时对数据进行读操作,不允许进行读和写或者写和写的操作