操作系统题库(二)

4.什么是 Linux 内核?

作答:

Linux内核是操作系统最基础的程序。其中包括设备CPU、GPU、摄像头、USB等驱动,包括文件管理程序、进程调度程序等最基本的底层功能程序。并提供一系列的底层接口,供应用层开发程序,例如视频播放器、浏览器等。

参考答案:

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

  1. 系统内存管理
  2. 应用程序管理
  3. 硬件设备管理
  4. 文件系统管理

5. Linux 开机启动过程?

作答:

Linux开机过程实际上是内核程序的启动,启动内存管理程序、进程调度程序。然后进度调度程序会去启动一些预设的自启的第三方应用,通常启动脚本配置在/etc/init.d目录下。

参考答案:

1、主机加电自检,加载 BIOS 硬件信息。

  • 2、读取 MBR 的引导文件(GRUB、LILO)。
  • 3、引导 Linux 内核。
  • 4、运行第一个进程 init (进程号永远为 1 )。
  • 5、进入相应的运行级别。
  • 6、运行终端,输入用户名和密码。

6. Linux系统缺省的运行级别?

作答:

参考答案:

  1. 关机。
  2. 单机用户模式。
  3. 字符界面的多用户模式(不支持网络)。
  4. 字符界面的多用户模式。
  5. 未分配使用。
  6. 图形界面的多用户模式。
  7. 重启。

7. Linux 使用的进程间通信方式?

作答:

参考答案:

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

  2. 信号(signal) 。

  3. 消息队列。

  4. 共享内存。

  5. 信号量。

  6. 套接字(socket) 。

8. Linux 有哪些系统日志文件?

作答:

参考答案:

参见 《Linux 系统日志及日志分析》 文章,比较重要的是 /var/log/messages 日志文件。

该日志文件是许多进程日志文件的汇总,从该文件可以看出任何入侵企图或成功的入侵。

另外,如果胖友的系统里有 ELK 日志集中收集,它也会被收集进去。

9.Linux 虚拟内存是什么?

作答:

虚拟内存这里指的是swap吧,Linux Swap是将内存的一部分用于缓存文件,用于提升文件读写的性能,在进程需要分配内存的时候,又会将这部分脏页写入磁盘,将这部分内存用于应用程序。

要知道通常内存和磁盘的读写性能都是有明显的差距,使用内存做文件缓存,能够提升IO读写。

参考答案:

Linux为每个进程维护了一个单独的虚拟地址空间。虚拟地址空间分为内核空间与用户空间,用户空间包括代码、数据、堆、共享库以及栈,内核空间包括内核中的代码和数据结构,内核空间的某些区域被映射到所有进程共享的物理页面。Linux也将一组连续的虚拟页面(大小等于内存总量)映射到相应的一组连续的物理页面,这种做法为内核提供了一种便利的方法来访问物理内存中任何特定的位置。

Linux将虚拟内存组织成一些区域(也称为段)的集合,区域的概念允许虚拟地址空间有间隙。一个区域就是已经存在着的已分配的虚拟内存的连续片(chunk)。例如,代码段、数据段、堆、共享库段,以及用户栈都属于不同的区域,每个存在的虚拟页都保存在某个区域中,而不属于任何区域的虚拟页是不存在的,也不能被进程所引用。

内核为系统中的每个进程维护一个单独的任务结构(task_struct)。任务结构中的元素包含或者指向内核运行该进程所需的所有信息(PID、指向用户栈的指针、可执行目标文件的名字、程序计数器等)。

  • mm_struct:描述了虚拟内存的当前状态。pgd指向一级页表的基址(当内核运行这个进程时,pgd会被存放在CR3控制寄存器,也就是页表基址寄存器中),mmap指向一个vm_area_structs的链表,其中每个vm_area_structs都描述了当前虚拟地址空间的一个区域。
  • vm_starts:指向这个区域的起始处。
  • vm_end:指向这个区域的结束处。
  • vm_prot:描述这个区域内包含的所有页的读写许可权限。
  • vm_flags:描述这个区域内的页面是与其他进程共享的,还是这个进程私有的以及一些其他信息。
  • vm_next:指向链表的下一个区域结构。

10.简单 Linux 文件系统?

作答:

参考答案:

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

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

Linux 支持 5 种文件类型,如下图所示:文件类型

11.Linux 的目录结构是怎样的?

作答:

参考答案:

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

常见目录说明:

  • /bin: 存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里;
  • /etc: 存放系统管理和配置文件;
  • /home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
  • /usr : 用于存放系统应用程序;
  • /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
  • /proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
  • /root: 超级用户(系统管理员)的主目录(特权阶级o);
  • /sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
  • /dev: 用于存放设备文件;
  • /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
  • /boot: 存放用于系统引导时使用的各种文件;
  • /lib : 存放着和系统运行相关的库文件 ;
  • /tmp: 用于存放各种临时文件,是公用的临时文件存储点;
  • /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
  • /lost+found: 这个目录平时是空的,系统非正常关机而留下”无家可归”的文件(windows下叫什么.chk)就在这里。

12. 什么是 inode ?

作答:

参考答案:

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

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

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

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

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

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

作答:

参考答案:

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

  • inode 节点是一个 64 字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。在 inode 节点表中最重要的内容是磁盘地址表。在磁盘地址表中有 13 个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。
  • Linux 文件系统通过把 inode 节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的 inode 节点号,通过该 inode 节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。

14.什么是硬链接和软链接?

作答:

软连接是指将一个链接文件的路径指向一个原始文件的所在路径,链接文件类似windows的快捷方式,并未在内存中真正存在,当访问链接文件时,会指向真实文件所在路径。

参考答案:

  • 硬链接

    • 由于 Linux 下的文件是通过索引节点(inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配 inode 。每添加一个一个硬链接,文件的链接数就加 1 。
  • 不足:1)不可以在不同文件系统的文件间建立链接;2)只有超级用户才可以为目录创建硬链接。
  • 软链接

    • 软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
  • 不足:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

总结区别如下:

  • 硬链接不可以跨分区,软件链可以跨分区。
  • 硬链接指向一个 inode 节点,而软链接则是创建一个新的 inode 节点。
  • 删除硬链接文件,不会删除原文件,删除软链接文件,会把原文件删除。

15.RAID 是什么?

作答:

参考答案:

RAID 全称为独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想就是把多个相对便宜的硬盘组合起来,成为一个硬盘阵列组,使性能达到甚至超过一个价格昂贵、 容量巨大的硬盘。RAID 通常被用在服务器电脑上,使用完全相同的硬盘组成一个逻辑扇区,因此操作系统只会把它当做一个硬盘。

RAID 分为不同的等级,各个不同的等级均在数据可靠性及读写性能上做了不同的权衡。在实际应用中,可以依据自己的实际需求选择不同的 RAID 方案。