java面试Linux环境下编程,Java开发校招面试考点汇总第七篇:操作系统和Linux

1、进程和线程以及它们的区别

2、作业和作业调度算法

3、死锁与饥饿

4、互斥与同步

5、临界资源、临界区

6、五位哲学家吃面问题:

7、 死锁产生的条件

8、 处理死锁的方法:

9、管程

10、连续分配

11、非连续分配

12、覆盖与对换

13、虚拟存储器

14、页面置换算法

15、程序的装入、静态链接、动态链接

16、请谈一谈,系统如何提高并发性?

17、Linux

1、进程和线程以及它们的区别

进程的目的是让多个程序并发执行,线程的作用是减少程序并发执行的开销。

在没有线程时,进程是资源分配和系统调度的基本单位,有了线程后进程只是资源分配的基本单位,线程是系统调度的基本单位。

一个程序至少有一个进程,一个进程至少有一个线程,线程依赖于进程而存在;

进程在执行过程中拥有独立的内存单元,而多个线程共享进程的内存。

进程的三个状态:运行、就绪、等待

进程的五个状态:运行、就绪、等待、挂起就绪、挂起等待。挂起状态是将进程从内存中拿出到磁盘中。

线程的三个状态:运行、就绪、等待。线程因为不是资源的拥有单位,所以挂起没有意义。

2、作业和作业调度算法

1、作业和进程的区别

作业是任务本身,进程时执行任务的操作。

2、先来先服务算法

非剥夺式、简单、易于实现

3、最短作业优先算法

非剥夺式、缺点是难以估计作业的实际运行时间

4、最短剩余时间优先算法

剥夺式、是对最短作业优先的改进

5、高响应比优先算法

响应比=作业周转时间/作业运行时间 = 1+ 作业等待时间/作业运行时间

6、优先级调度

可以是剥夺式也可以是非剥夺式

7、时间片轮转调度

在进程/线程的切换上开销较大

3、死锁与饥饿

资源竞争会引起两种问题:死锁和饥饿

饥饿是总有其他进程优先于某一进程,则这个进程一直得不到资源。

4、互斥与同步

进程互斥是指若干进程由于争夺独占型资源而产生竞争制约关系。

进程同步是指为了完成共同任务的并发进程要按照先后顺序运行。

互斥是特殊的同步,即逐个使用独占性资源。

5、临界资源、临界区

一次只能被一个进程使用的资源叫临界资源。

并发进程中对临界资源进行操作的程序段叫临界区

**临界区的调度原则:**互斥使用、有空让进、忙则等待、有限等待、择一而入、算法可行

6、 五位哲学家吃面问题:

避免死锁的方法:

1、 最多允许4位哲学家同时吃面

2、 奇数位的哲学家先拿左边的筷子,偶数位的哲学家先拿右边的筷子

3、 每位哲学家只有拿到两个筷子才吃面,否则就放下筷子

7、 死锁产生的条件

1、 互斥条件:进程互斥的使用临界资源

2、 占有和请求

3、 不剥夺条件

4、 循环等待条件

8、 处理死锁的方法:

1、 预防死锁:破坏死锁产生的四个必要条件(一般不破坏互斥条件)

2、 避免死锁:银行家算法,尝试将资源分配给进程,看剩余资源是否会死锁。

3、 检测和解除死锁:检测出死锁,再解除掉。

9、管程

将各进程的临界区集中起来管理,建立一个秘书程序管理,每次只允许一个进程来访,这个秘书程序就是管程。

10、连续分配

连续分配指程序装入的内存空间是连续的。

连续分配分为:

1、单一连续分配 一个作业进入内存,直到操作完毕才释放内存

2、固定分区分配 将内存空间划分为若干个固定大小的连续存储区,每个存储区的大小可以一样,也可以不一样。容易产生内存碎片。每个区域只装入一道作业。

3、动态分区分配

动态分区分配的分配方法有:首次适应法、最佳适应法、最坏适应法。

缺点是经过一段时间后,会产生大量容量较小的内存,形成内存碎片。

4、 动态重定位分区分配

将内存碎片移动在一起,集中成一个较大的空闲分区,移动的过程就叫紧凑。

紧凑的时机有:立即紧凑、需要时紧凑

11、非连续分配

分页管理方式

分段管理方式

段页式管理方式

具体内容:

分页管理方式:将内存划分成等长的若干区域,每个区域称为一个物理页面(也称为块)。再将用户程序按照物理页面的大小进行划分,称为逻辑页面,每个物理页面存放一个逻辑页面。块间不连续,但快内连续。

页表存放的是物理块号和程序逻辑页号之间的映射。

快表:用来存放最近访问过的部分页表的项

分段管理方式:将用户的作业按逻辑结构划分为若干相互独立的段,每个段占据一段连续的内存空间,各段之间可以不连续。

段页式管理方式:按照分段式管理方式,将用户的作业按逻辑结构划分为若干相互独立的段,再按照分页管理方式将各段划分成固定页面大小。

12、覆盖与对换

覆盖:就是将程序的不同分支放在同一区域。

java面试Linux环境下编程,Java开发校招面试考点汇总第七篇:操作系统和Linux_第1张图片

对换:是指将暂时不用的某个进程及数据从内存放到外存

13、虚拟存储器

虚拟存储器即使具有请求调入功能和置换功能,把内存和外存结合起来使用,能从逻辑上对内存容量加以扩充的一种存储器系统。

程序有时间局限性和空间局限性,即刚被访问过的数据很可能再被访问,刚被访问的存储单元附近的存储单元也很可能再被访问。

基于局限性原理,一个作业在运行之前,只需要将当前作业运行需要使用的部分装入内存即可。这样就可以在较小的内存中运行较大的程序。

虚拟存储器的实现分为:分页式虚拟存储管理、分段式虚拟存储管理。即将部分页或者部分段先放入内存,其他程序需要的页或者段通过“对换”载入内存中。

14、页面置换算法

先进先出置换、

最佳置换算法(将来永不使用的或者将来最晚使用的页面进行置换,但是该算法无法实现)

最近最久未使用

clock置换。

**抖动:**即刚置换出去的页面又要被置换进来。

15、程序的装入、静态链接、动态链接

程序的装入分为:

编译:将源程序编译成目标程序

链接:将目标程序以及他们所需的库函数链接在一起,形成一个装入模块

装入:将装入模块装入内存

16、请谈一谈,系统如何提高并发性?

1、提高CPU并发计算能力

(1)多进程&多线程

(2)减少进程切换,使用线程,考虑进程绑定CPU

(3)减少使用不必要的锁,考虑无锁编程

2、改进I/O模型

异步I/O

17、Linux

https://download.csdn.net/download/u014138443/11192430

你可能感兴趣的:(java面试Linux环境下编程,Java开发校招面试考点汇总第七篇:操作系统和Linux)