Java教程

【架构师面试-Java编程基本功-8】-Linux内核与文件系统

本文主要是介绍【架构师面试-Java编程基本功-8】-Linux内核与文件系统,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

1:什么是 Linux 内核

Linux 系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。

①系统内存管理

②应用程序管理

③硬件设备管理

④文件系统管理

2:Linux 的基本组件是什么

就像任何其他典型的操作系统一样,Linux 拥有所有这些组件:内核,shell 和 GUI,系统实用程序和应用程序。Linux 比其他操作系统更具优势的是每个方面都附带其他功能,所有代码都可以免费下载。

3:Linux 的体系结构

从大的方面讲,Linux 体系结构可以分为两块:

用户空间(User Space) 

用户空间又包括用户的应用程序(UserApplications)、C 库(C Library) 。

内核空间(Kernel Space)

内核空间又包括系统调用接口(System CallInterface)、内核(Kernel)、平台架构相关的代码

(Architecture-Dependent Kernel Code) 。

4:为什么 Linux 体系结构要分为用户空间和内核空间的原因

①现代 CPU 实现了不同的工作模式,不同模式下 CPU 可以执行的指令和访问的寄存器不同。

②Linux 从 CPU 的角度出发,为了保护内核的安全,把系统分成了两部分。

用户空间和内核空间是程序执行的两种不同的状态,我们可以通过两种方式完成用户空间到内核空间的转移:

系统调用;

硬件中断。

5:Linux 使用的进程间通信方式?

了解即可,不需要太深入。

①管道(pipe)、流管道(s_pipe)、有名管道(FIFO)。

②信号(signal) 。

③消息队列。

④共享内存。

⑤信号量。

⑥套接字(socket) 。

6:简单 Linux 文件系统?

在 Linux 操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。

也就是说在 Linux 系统中有一个重要的概念**:一切都是文件**。其实这是 Unix 哲学的一个体现,而 Linux 是重写 Unix 而来,所以这个概念也就传承了下来。在 Unix 系统中,把一切资源都看作是文件,包括硬件设备。UNIX 系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。

7:Linux 支持 5 种文件类型

8:Linux 的目录结构是怎样的

这个问题,一般不会问。更多是实际使用时,需要知道。

Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:

9:什么是 inode

一般来说,面试不会问 inode 。但是 inode 是一个重要概念,是理解Unix/Linux 文件系统和硬盘储存的基础。

理解 inode,要从文件储存说起。

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存 512 字节(相当于 0.5KB)。

操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个 sector 组成一个 block。

文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做 inode,中文译名为"索引节点"。

每一个文件都有对应的 inode,里面包含了与该文件有关的一些信息。

10:简述 Linux 文件系统通过 i 节点把文件的逻辑结构和物理结构转换的工作过程?

如果看的一脸懵逼,也没关系。一般来说,面试官不太会问这个题目。

Linux 通过 inode 节点表将文件的逻辑结构和物理结构进行转换。

inode 节点是一个 64 字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。在 inode 节点表中最重要的内容是磁盘地址表。在磁盘地址表中有 13 个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。

Linux 文件系统通过把 inode 节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的inode 节点号,通过该 inode 节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。 

这篇关于【架构师面试-Java编程基本功-8】-Linux内核与文件系统的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!