首页 Os
文章
取消

Os

操作系统常见面试题

1.⭐线程和进程的区别

1
2
3
4
5
6
7
				进程											线程
概念		系统资源分配的基本单位							CPU任务调度和分配的基本单位					
资源		拥有资源						  			 不拥有资源(线程可以访问隶属进程的资源)
开销		开销大(分配资源和设备、保存旧cpu现场和新cpu环境)   只需要保存少量的寄存器内容		 开销小
※通信		进程间通信需要借助IPC<引申进程间的通信>		     线程间通信 通过直接读写同一个进程下的数据

协程:轻量级的线程 异步 一个线程和进程都可以有多个协程 用户自己控制 拥有自己的寄存器和上下文

2.⭐进程间的通信方式

1
2
3
4
5
6
7
8
9
10
7种:
1.父子进程通信管道pipe:半双工 只允许有亲缘关系的进程使用
2.命名管道FIFO:半双工 允许没有亲缘关系的进程使用
3.消息队列:
4.共享内存:能被其它进程访问的一段内存 是ipc中最快的
5.信号量:通常最为锁机制 控制多个进程对共享资源的访问
6.socket:可以不同主机之间使用
7.信号:用于通知和接收进程某个事件已经发生

IPC:包括消息队列、信号量和共享内存

3.⭐进程调度算法

1
2
3
4
5
6
7
8
9
进程调度任务过程:
	首先保存当前进程的cpu现场
	然后调度算法选取进程
	把cpu分给调度到的进程
	
1.先来先服务和短作业优先调度算法
2.高优先权优先调度算法
3.高响应比优先调度算法
4.基于时间片的轮转调度算法

4.⭐死锁和处理方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
⭐概念:进程双方都在等待对方的资源释放 自己才能继续执行的情况
原因:
	1.竞争不可抢占资源:不可抢占资源 资源给系统分配到进程后 不能自动释放 需要使用完之后 才能释放
	2.竞争可消耗资源:可消耗资源 由进程动态创建和消耗的
	3.进程运行过程中 对资源的分配和释放不当
⭐条件:
	1.互斥条件:资源只能倍一个线程独有 别的进程使用需要等待其释放
	2.请求保持:自己有一个资源 但是还要别人碗里的 但别人的被占领的 此时请求进程被阻塞 但又不释放自己手里的
	3.循环等待:发生死锁时候 必然形成一个资源循环链
	4.※不可抢占:进程在使用完成之前不可以被其他线程抢占
⭐处理方法
	1.预防死锁:
		1.破坏请求保持条件:
			允许一个进程只获得允许初期所需资源后 开始运行 
			进程过程中在逐步释放已分配给自己的 且已经用完的资源 在请求新的资源
		2.破坏 循环等待条件:
           	 对所有资源类型进行线性的排序
     避免死锁:银行家算法
     检查死锁:资源分配图和※死锁定理
     解除死锁:
     	1.抢占资源:从一个或多个进程中抢占足够多的进程取分配给死锁
       ※2.终止进程:终止系统中的一个或者多个 死锁进程 直到打破循环

5.⭐虚拟内存

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
虚拟存储器:
	程序在运行之前不要全部装入内存 只要把那些少数页面装入内存 其余部分留在盘上 
	如果它要访问的页段已经调入内存 那就继续执行下去 
	如果没有调入内存 就称为缺页  那就发出缺页中断 此时os将利用请求调页功能将他们调入内存 使进程执行下去
	如果内存满了还需要利用页的置换功能 将内存中暂时不用的页段调用到盘上 腾出空间 将访问的页段调入内存 
页面置换算法:
	1.最佳置换算法:淘汰未来一段时间不会使用的页面
	2.先进先出置换算法:
	⭐3.最近最久未使用的置换算法LRU:使用次数
	4.clock置换算法:所有页面构成循环队列检查当前位置访问位
		是0:选择该页面换出		
		是1:指针往下走 寻找下一个页面
	5.最近最少未使用的置换算法LFU:访问频率	
快表:
	出现原因:页表存在内存中 每次读取数据都到访问两次内存 第一次是访问内存中的页表 得到物理块号 再将物理块和偏移量拼接 形成物理地址 第二次访问内存的时候才能得到所需数据 为了提高地址变换速度 出现了快表 
	快表 存放当前访问过的页表项 一次访问快表即可得到物理块号 直接形成物理地址
		
虚存的作用:
	内存完整性 安全 数据共享 swap
	
分页和分段的区别
				  分页 			   分段
				系统行为			用户行为
				信息的物理单位		 信息的逻辑单位
				大小固定			大小动态改变
				一维地址空间		  二维地址空间
⭐简述物理地址和逻辑地址				
	物理地址:程序在内存上的真正地址
    逻辑地址:程序编译之后 产生的一个逻辑地址

6.⭐IO管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
1.网络请求处理过程
	客户端 发送网络请求 到网卡
	网卡 再复制数据到 内核缓冲区 
	内核缓冲区 再复制 到web服务器进程 
	服务器 再处理请求构建响应
	服务器 再把数据复制到 内核缓冲区 
	内核缓冲区 把数据复制给 网卡 
	网卡 把数据返回 
	

2.IO模型
	1.阻塞式IO:应用程序被阻塞 直到数据从内核缓冲区复制到应用进程缓冲区才结束
	2.非阻塞式IO:应用进程可以继续执行 但是需要不断的使用系统调用来获知IO是否完成
	3.※IO复用:单个进程拥有处理多个IO的能力
	4.信号驱动IO:内核在数据到达时向进程发送信号
	5.异步IO:内核完成所有操作之后向应用进程发送信号
	
	※IO多路复用:
		多个IO操作都能在同一个进程并发按顺序完成 复用指的是复用同一个进程
		
		select:轮询方式处理 基于数组实现 大小为1024 监听1024个描述符 三种事件对应读写异常
		poll:  轮询方式处理 基于链表实现 大小没限制 监听多个事件 
		epoll:采用回调方式检测就绪实现 不需要遍历 时间复杂度为O(1)
本文由作者按照 CC BY 4.0 进行授权