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
当申请内存空间时,搜索内存空闲链表,将适配的空闲内存空间分配给所需进程
分配空闲块最常见的算法:首次适配,下一次适配,最佳适配。