Java、数据结构、操作系统、Linux等笔试总结(day01)

1、字符串中任意个连续的字符组成的子序列成为该串的子串。空串和本身都算作本字符串的子串。下列选项A错在没有加双引号

题1

2、extern声明多文件共享变量的方法:1)在一个源文件中定义,在其他需要使用的源文件中用extern声明。(仅一处定义,多处extern)2)在一个源文件中定义,在其对应的都文件中extern声明,在其他需要使用该共享变量的源文件中包含该头文件即可。(更加标准的做法)下题考察的是第一种做法

题2

3、C++对象生成时的构造顺序,先构造继承过来的父类,然后同级顺序构造。虚继承解决继承二义性问题。如下分别为不加virtual和加virtual的继承关系示例。

不加virtual的继承关系
加virtual的继承关系
题3

4、进程之间的特性:

动态性:进程的实质是程序在多道程序系统中的一次执行过程,进程是动态产生,动态消亡的。

并发性:任何进程都可以同其他进程一起并发执行。

独立性:进程是一个能独立运行的基本单位,同时也是系统分配资源和调度的独立单位。

异步性:由于进程间的相互制约,使进程具有执行的间断性,即进程各自按独立的、不可预知的速度向前推进。

5、系统调用是用户软件和硬件系统的中间部分,所以不是最靠近硬件。最靠近硬件的应该是驱动程序。

6、常见的批处理作业调度算法

1)先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的有点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往短作业的用户不满意,因为短作业的等待处理时间可能比实际运行时间长的多。

2)短作业优先调度算法(SPF):就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不知道它实际的运行时间长短,因此需要在用于提交作业同时提交作业运行时间的估计值。

3)最高响应比优先算法(HRN):FCFS可能造成短作业用户不满,SPF可能是长作业用户不满,于是提出HRN,选择响应比最高的作业运行。响应比=(等待时间+运行时间)/运行时间

4)基于优先数调度算法(HPF):每一个作业规定一个表示该作业优先级别的整数,当需要将新的作业由输入井调入内存处理时,优先选择优先数最高的作业。

5)均衡调度算法:即多级队列调度算法(混合以上四种调度算法)

基本概念:

作业周转时间(Ti)=完成时间(Tei)-提交时间(Tsi)

作业平均周转时间(T)=周转时间/作业个数

作业带权周转时间(Wi)=周转时间/运行时间

响应比=(等待时间+运行时间)/运行时间

常见的进程调度算法

1)先进先出算法(FIFO):按照进程进入就绪队列的先后次序来选择。即每当进入进程调度,总是把就绪队列的队首进程投入运行。

2)时间片轮转算法(RR):分时系统的一种调度算法。轮转的基本思想是,将CPU的处理时间划分成一个个的时间片,就绪队列中的进程轮流运行一个时间片。当时间片结束时,就强迫进程让出CPU,该进程进入就绪队列,等待下一次调度,同时,进程调度又去选择就绪队列中的一个进程,分配给它一个时间片,以投入运行。

3、最高优先级算法(HPF):进程调度每次将处理机分配给具有最高优先级的就绪进程。最高优先级算法可与不同的CPU方式结合形成可抢占式最高优先级算法和不可抢占级最高优先级算法。

4、多级队列反馈法:集中调度算法的结合形式多级队列方式。

空闲分区分配算法:

1、首先适应算法:当接到内存申请时,查找分区说明表,找到第一个满足申请长度的空闲区,将其分割并分配。此算法很简单,可以快速做出分配决定。

2、最佳适应算法:当接到内存申请时,查找分区说明表,找到第一个能满足申请长度的最小空闲区,将其进行分割并分配。此算法最节约空间,因为它尽量不分割到大的空闲区,其缺点是可能会形成很多很小的空闲分区,称为碎片。

3、最坏适应算法:当接到内存申请时,查找分区说明表,找到能满足申请的最大空闲区。该算法的优点是避免形成碎片,而缺点是分割了答案的空闲区后,再遇到较大的程序申请内存时,无法满足的可能性较大。

虚拟页式存储管理中的页面置换算法

1、理想页面置换算法(OPT):这是一种理想的算法,在实际中不可能实现。该算法的思路是:发生缺页时,选择以后永不使用或在最长时间内不再被访问的内存页面予以淘汰。

2、先进先出页面置换算法(FIFO):选择最先进去内存的页面予以淘汰。

3、最近最久未使用算法(LRU):选择在最近一段时间内最久没有使用过的也,把它淘汰。

4、最少使用算法(LFU):选择到当前时间为止被访问次数最少的页转换。

磁盘调度算法

1、先来先服务(FCFS)

2、最短寻道时间优先(SSTF):让离当前磁道最近的请求访问者启动磁盘驱动器,即是让查找时间最短的那个作业先执行,而不考虑请求访问者到来的先后次序,这样就克服了先来先服务调度算法中磁臂移动过大的问题。

3、扫描算法(SCAN)或电梯调度算法:总是从磁臂当前位置开始,沿磁臂的移动方向去选择离当前磁臂最近的那个柱面的访问者。如果沿磁臂的访问无法请求访问时,就改变磁臂的移动方向。在这种调度方法下磁臂的移动类似于电梯的调度,所以它也称为电梯调度算法。

4、循环扫描算法(CSCAN):循环扫描调度算法是在扫描算法的基础上改进的。磁臂改为单向移动,由外向里。当前位置开始沿磁臂的移动方向去选择离当前磁臂最近的那个柱面的访问者。如果沿磁臂的方向无请求访问时,再回到最外,访问柱面号最小的作业请求。

你可能感兴趣的:(Java、数据结构、操作系统、Linux等笔试总结(day01))