第一次写CSDN博客,本人是渣渣,有错误希望大家帮忙指出,谢谢!
1.进程、线程(CPU调度)
进程线程区别:进程是资源分配的最小单位,线程是cpu进行调度的最小单位;进程有自己独立的地址空间,进程中的多个线程共享进程的地址空间;进程中的多个线程可以实现并发。
进程的3个状态:阻塞,就绪,运行(之间转换)。
并发并行的区别:并发指一个cpu可以处理多个任务,这些任务看起来是一起运行的,但是是伪并行,是在纳秒级别的切换下运行的。正是因为一个cpu处理多个任务所以引起cpu的调度问题。
cpu调度:先来先服务,最短作业优先,最短剩余时间优先,优先级调度,时间片轮转(分为时间片,如果在时间片内一个作业未完成调度到队列后面)。
进程间通信:管道,信号,消息队列,共享内存,socket,信号量等。
2.存储管理(主存调度)
地址空间的概念:一个进程用于寻址内存的一套地址的集合。
两种解决内存超载的方法:交换,虚拟内存。
内存中空闲内存的管理方式:位图法,链表法。
虚拟内存(why?解决空间浪费碎片化,解决了程序大小受限不能全部装入主存):每个程序有自己的地址空间,这些空间被分成多个页,每页有连续的地址范围,页被映射到物理内存,当程序的一部分在物理内存的地址空间时,由MMU映射,不在时将页装入重新执行(不在内存中的页在硬盘里,即缺页中断,需要置换)。
发生缺页中断时,需要把不在主存中(在硬盘里)的页面置换到内存里,需要执行的置换算法:最近未使用,最近最少使用,先进先出,第二次机会,时钟页面等。
分段与分页的区别:
3.文件管理
4.输入输出(设备管理)
5.死锁
举一个例子,A拿左筷子,B拿右筷子,两个相互争执要吃饭。
四个条件:①A有资源1,别人没有;②A去申请资源2;③A申请资源2的时候不释放资源1;④有环。
死锁检测:检测有没有环,或者用专业的检测工具。
死锁预防:银行家算法等等,注意加锁的顺序,不要有嵌套(即给资源1加锁了还要申请2加锁)。