腾讯面试题之操作系统

发布于:2022-10-13 ⋅ 阅读:(554) ⋅ 点赞:(0)

 1.进程和线程的区别?

进程是运行中的程序,线程是进程内部的一个执行序列

进程是资源分配的单元,线程是执行的单元

进程间切换代价大,线程间切换代价小

延伸:为什么进程切换代价大?因为进程切换要切换段表

进程拥有的资源多,线程拥有的资源少

多个线程共享进程的资源

2.进程间有哪些通讯方式

1.管道(pipe):管道是一种半双工的通讯方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘方式通常指父子进程关系。

2.消息队列通信:消息列表是由消息的链表,存放在内核中并由消息队列标识符标识。消息列表克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。

3.信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源,其他进程也访问该资源。因此,主要作为进程间以及同一种进程不弄线程之间的同步手段。

4.信号:信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

5.共享内存通信:共享内存就是映射一块能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存最快的是IPC方式。

6.socket:套接口也是一种进程间的通讯方式。与其他通讯方式不同的是它可用于不同机器间的进程通讯。

3.linux进程调度中有哪些常见算法以及策略?

1.先来先服务和短作业(进程)优先调度算法

2.高优先权优先调度算法:非抢占式优先权算法、抢占式优先权调度算法。

延伸:进程的状态有哪几种:运行、就绪、阻塞

4.操作系统如何申请以及管理内存的?

使用虚拟内存,基本思想是内存被分为大小相等的多个块,称为页(Page),每个页都是一段连续的地址。每个进程拥有独立的逻辑地址空间,对于进程来说,逻辑上貌似有很多内存空间,其中一部分对应物理内存上的一块(称为页框,通常页框和页的大小相等),另一部分对应在硬盘上。当操作系统查询某一进程时,会先在物理内存上查找,若物理内存上没有,则在硬盘上查找。

5.页面置换算法有

最佳置换算法、最近最久未使用算法、先进先出置换算法

6.线程间的通信方式

共享变量、共享内存、共享数据库、消息队列      

7.同步和异步的区别

同步又分为阻塞和非阻塞。

(1)阻塞:进程给cpu传达一个任务后,一直等待cpu处理完成,然后才执行后面的操作

(2)非阻塞:进程给cpu传达任务后,继续处理别的的操作,隔段时间再来问一下之前的操作是否完成。

异步:进程给cpu传达一个任务后,继续处理别的的操作,直到被通知任务已完成,再继续执行后续的操作。

主要区别:同步是主动询问任务是否完成,异步是被通知任务已完成。

8.简述操作系统的缺页中断

虚拟内存实际上可以比物理内存大。当访问虚拟内存时,会访问内存管理单元去匹配对应的物理地址,而如果访问的页并不存在于物理内存中,会产生缺页中断。则需从磁盘中取出缺的页放入物理内存,如果物理内存已满,还会根据页面置换算法将磁盘中的页换出。

9.操作系统中的malloc

当申请内存空间时,搜索内存空闲链表,将适配的空闲内存空间分配给所需进程

分配空闲块最常见的算法:首次适配,下一次适配,最佳适配。