Java面试操作系统篇
来源:互联网 发布:零售批发软件 编辑:程序博客网 时间:2024/05/29 17:38
1.进程间的通信方式
# 信号量( semophore ):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
# 消息队列( message queue ): 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。
# 共享内存( shared memory ):共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。
# 套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
2.关于系统调用的一些知识
统调用把应用程序的请求传输给系统内核执行
利用系统调用能够得到操作系统提供的多种服务
是操作系统提供给编程人员的接口
系统调用给用户屏蔽了设备访问的细节
系统调用保护了一些只能在内核模式执行的操作指令
调用程序是运行在用户态,而被调用的程序是运行在系统态
3.在动态分区分配方案中,系统回收主存,合并空闲空间时需修改空闲区表,以下哪种情况空闲区会减1?
- 只要回收主存,空闲区数就会减一
- 空闲区数和主存回收无关
- 无上邻空闲区,也无下邻空闲区
- 有上邻空闲区,但无下邻空闲区
- 有下邻空闲区,但无上邻空闲区
- 有上邻空闲区,也有下邻空闲区在分区分配方案中,回收一个分区时有几种不同的邻接情况,在各种情况下应如何处理? 答:有四种:上邻,下邻,上下相邻,上下不相邻。(1)回收分区的上邻分区是空闲的,需要将两个相邻的空闲区合并成一个更大的空闲区,然后修改空闲区表。(2)回收分区的下邻分区是空闲的,需要将两个相邻的空闲区合并成一个更大的空闲区,然后修改空闲区表。(3)回收分区的上、下邻分区都是空闲的(空闲区个数为2),需要将三个空闲区合并成一个更大的空闲区(空闲区个数为1 ),然后修改空闲区表、(4)回收分区的上、下邻分区都不是空闲的,则直接将空闲区记录在空闲区表中。
分析:
4.常见的调度算法:
2.短作业优先调度算法 (SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道它实际的运行时间的长短,因此需要用户在提交作业时同时提交作业运行时间的估计值。
3.最高响应比优先算法(HRN):FCFS可能造成短作业用户不满,SPF可能使得长作业用户不满,于是提出HRN,选择响应比最高的作业运行。响应比=1+作业等待时间/作业处理时间。
4. 基于优先数调度算法(HPF):每一个作业规定一个表示该作业优先级别的整数,当需要将新的作业由输入井调入内存处理时,优先选择优先数最高的作业。
5.锁的问题
在使用锁保证现场安全时可能会出现 活跃度 失败的情况主要包括 饥饿、丢失信号、和活锁、死锁 等。【多线程除了死锁之外遇到最多的就是活跃度问题了】
饥饿 :指线程需要访问的资源 被永久拒绝 ,以至于不能再继续进行。解决饥饿问题需要平衡线程对资源的竞争,如线程的优先级、任务的权重、执行的周期等。
活锁 :指线程虽然没有被阻塞,但由于某种条件不满足,一直尝试重试却始终失败。解决活锁问题需要对 重试机制 引入一些随机性。例如如果检测到冲突,那么就暂停随机的一定时间进行重试,这会大大减少碰撞的可能性。
7.下列关于文件索引结构的叙述中,哪些是正确的?
- 系统为每个文件建立一张索引表
- 采用索引结构会引入存储开销
- 从文件控制块中可以找到索引表或索引表的地址
- 采用索引结构,逻辑上连续的文件存放在连续的物理块中
在很多情况下,有的文件很大,文件索引表也就较大。如果索引表的大小超过了一个物理块,可以采用间接索引(多重索引),也就是在索引表所指的物理块中存放的不是文件信息,而是装有这些信息的物理块地址。这样,如果一个物理块可装下n个物理块地址,则经过一级间接索引,可寻址的文件长度将变为n×n块。如果文件长度还大于n×n块,还可以进行类似的扩充,即二级间接索引。
不过,大多数文件不需要进行多重索引,也就是说,这些文件所占用的物理块的所有块号可以放在一个物理块内。如果对这些文件也采用多重索引,则显然会降低文件的存取速度。因此,在实际系统中,总是把索引表的头几项设计成直接寻址方式,也就是这几项所指的物理块中存放的是文件信息;而索引表的后几项设计成多重索引,也就是间接寻址方式。在文件较短时,就可利用直接寻址方式找到物理块号而节省存取时间。
索引结构既适用于顺序存取,也适用于随机存取,并且访问速度快,文件长度可以动态变化。索引结构的缺点是由于使用了索引表而增加了存储空间的开销。另外,在存取文件时需要至少访问存储器两次以上,其中,一次是访问索引表,另一次是根据索引表提供的物理块号访问文件信息。由于文件在存储设备的访问速度较慢,因此,如果把索引表放在存储设备上,势必大大降低文件的存取速度。一种改进的方法是,当对某个文件进行操作之前,系统预先把索引表放入内存,这样,文件的存取就可直接在内存通过索引表确定物理地址块号,而访问存储设备的动作只需要一次。当文件被打开时,为提高访问速度将索引表读入内存,故又需要占用额外的内存空间。
8.虚拟存储
虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。目前,大多数操作系统都使用了虚拟内存,如Windows家族的"虚拟内存";Linux的"交换空间"等。
虚存容量不是无限的,最大容量受内存和外存可利用的总容量限制 , 虚存搜索实际容量受计算机总线地址结构限制。
- 块高速缓存
- 磁盘驱动调度
- 目录项分解法
- 异步I/O技术(错)
设临界资源为m.共享进程为n个,个进程最多可申请x个资源
11.某系统有 n 台互斥使用的同类设备,3 个并发进程需要 3,4,5 台设备,可确保系统不发生死锁的设备数 n 最小为()
假设3个进程分别为A,B,C,那么需要的最大的情况为:2,3,4此时再多一个资源就可以打破死锁的环境,所以为2+3+4+1=10
- Java面试操作系统篇
- Java校招面试-操作系统
- 面试准备--操作系统篇
- Java面试刷题错误笔记:(三):操作系统篇
- 面试总结之操作系统篇
- java面试宝典读书笔记(六)-操作系统
- 操作系统面试
- 操作系统面试
- 操作系统面试
- 面试-操作系统
- 面试--->操作系统
- 操作系统面试题目
- 操作系统面试大纲
- 操作系统面试t
- 操作系统面试大纲
- 操作系统面试必备
- 操作系统 面试全集[转]
- 面试必备-操作系统知识
- 我的第一个Web应用
- 华为OJ——百钱买百鸡问题
- 未来24小时逐小时天气预报爬虫(数据来自中国天气网)/Java
- PHP对文件的操作方法
- elasticsearch学习1:安装
- Java面试操作系统篇
- 华为OJ——计算日期到天数转换
- WinRAR安装、破解与去除弹窗广告(亲测有效)
- Angular2学习笔记——Observable
- 飞行器姿态角
- 操作系统之面试常考
- javascript之Object.assign()痛点
- Java反射的一些总结
- Java面试(数据库部分)