问题 1:操作系统的概念和常见类型的操作系统
操作系统是一种通用目的的软件系统,位于硬件之上、应用程序之下,起到中介和桥梁的作用。如果以三层结构来划分,操作系统属于中间层,负责屏蔽硬件差异、提供标准接口,从而简化应用程序的开发难度。
操作系统的核心职责是向上提供系统调用接口,方便应用程序访问硬件资源,向下下统一管理和调度硬件资源,如CPU、内存、存储、网络等。
操作系统一般由内核和用户空间两部分组成,内核负责直接与硬件交互,完成底层的资源管理。用户空间实现对外功能和接口。
操作系统的两大类型:
1、Linux 系列:如 Ubuntu、CentOS、RedHat 等,开源免费。
2、Windows 系列:如 Windows Server,Windows 11等,需要商业授权。
问题 2:Linux 和 GUN 两者的关系
GNU 是一个组织,目标就是提供大量兼容 unix 的自由买南非软件,例如 GCC 编译器就是 GNU 组织开发的。GNU
Linux 是 Torvalds 大学期间开的的一个内核,后面在 GNU 组织的 GPL 授权下发布,经过大家的共同努力成为一个完善的内核,解决了 Unix 一家独大的问题。
GNU 和 Linux 之间是相互成就,Linux 提供了免费开源的内核,GNU 提供了免费的软件。完整的Linux操作系统 = Linux 内核 + GUN 免费软件。
Linux 发行版就是厂家利用 Linux 内核 + GUN 免费软件,然后再加入其他的一些规则从而形成的发行版操作系统。
问题 3: Linux 的哲学思想
1、一切皆文件:系统中的所有资源都表现为文件的形式,例如硬盘编写为一个块设备文件。
2、配置存文本:应用程序的配置通过一个文本文件进行存储,这样可以方便修改。
问题 4:BIOS 和 UEFI 之间的关系
BIOS 是 Basic Input/Output System(基本输入输出系统)的缩写,是集成在电脑主板上的内置程序代码。
UEFI 是由EFI(Extensible Firmware Interface:可扩展固件接口)发展而来,EFI 是 intel 为了解决 BIOS 存在的缺陷(如界面简陋)开发的一种技术,旨在取代 BIOS。
后面大家都觉得 EFI 比较好用,所以在很多大公司、大厂商的推送下,EFI 发展成为 UEFI((Unified Extensible Firmware Interface:统一的可扩展固件接口)
UEFI 和 BIOS 的主要区别:
1、BIOS只能引导传统的MBR分区,UEFI支持MBR、GPT等分区。
2、BIOS 只有文字界面,只能用键盘操作,而 UEFI 提供图形界面,可以用鼠标进行操作。
3、UEFI支持的硬件设备和接口更多,例如USB 3.0、NVMe
4、UEFI提供了Secure Boot(安全启动)功能,不过这个功能一般都是关闭了的,不然没法使用 U 盘装系统。
问题 5:Linux 操作系统的启动流程
1、 首先通电后进入硬件自检阶段,自检是通过主板中集成的 BIOS/ UEFI 程序实现,自检没问题就进入下一步,如果硬件有问题,就会输出对应的报警或整个屏幕黑屏不显示。
2、自检通过后,BIOS/ UEFI 会根据设置的启动项(BIOS/UEFI 中设置)从对应的介质中加载 boot loader(引导加载程序),Linux 中使用的 boot loader 一般是 grub2,
3、通过 boot loader 加载内核程序,内核程序加载完成后,会启动第一个用户级进程,也就是PID为1的进程。这个进程启动后,后续所有的用户进程都将是这个进程的子进程,现在的 Linux 发行版操作系统基本上都使用 systemd 来做为 PID 为 1的进程了。
启动流程的常见作用:
1、 重置用户密码:忘记用户密码,通过修改启动参数重置密码的方式就是让内核不加载 systemd 做为 PID 为 1 的进程,而是指定一个 bash 进程,这样就跳过了后续的权限验证等情况,从而通过 bash 执行对应的命令修改密码。
2、修复系统损坏:出现异常断电后, 可能会导致文件系统元数据损坏,内核加载失败而进入 initramfs
临时根文件系统界面( 这是一个内核提供的最小运行环境 ),这个就是异常断电导致硬盘的元数据收到损坏了。bootloader 没法正常加载内核程序,一般通过 fsck 或 xfs_repair
对应的修复命令进行修复即可。
问题 6:进程的概念,进程和线程的区别
进程是一个过程,是 CPU 将存储在辅助存储(硬盘)中的文件加载到主存(RAM)中后,通过解析程序文件,然后根据程序文件中的指令来完成特定的操作,这个复杂的过程就叫做进程。
一个进程包含若干个线程,可以这样理解。进程就是一个类,线程就是类中的若干个函数,每个函数有不同的工作任务。
Linux 中的进程名表现为用于启动进程的可执行文件的名称。
问题 7:进程的几种常见状态
进程的状态可以通过 htop、top、ps 等命令查看,常见的进程状态有以下几种:
状态代号 | 状态名称 | 含义说明 |
---|---|---|
R | 运行(Running) | 进程正在运行或在运行队列中等待 CPU 时间片 |
S | 可中断休眠 | 进程暂时无任务,正在等待某个事件(如IO),一旦事件到达可被唤醒执行 |
D | 不可中断休眠 | 正在等待 I/O(如磁盘、网络),不能被打断,可能导致系统短暂卡顿 |
T | 停止(Stopped) | 进程被暂停执行,通常是接收到 SIGSTOP 、SIGTSTP 等信号 |
Z | 僵尸(Zombie) | 子进程已退出,但其退出信息未被父进程读取,仍在进程表中挂起 |
X | 死亡(Dead) | 进程已经终止(极少见,一般用于调试或异常) |
问题 8:Linux中的 swap 分区概念
Swap 分区就是当物理内存不够用时,Linux 会用硬盘空间来“临时充当内存”。它是 Linux 中一种虚拟内存机制,本质上是一块磁盘上的空间,用来临时存放内存中暂时不用的数据,以释放物理内存给当前活跃的进程使用。
因为 Swap 分区非常慢,给服务器预留足够的物理内存后,一般生产环境里面都是关闭Swap分区。
问题 9:Linux 中设置某个进程开机自启动的方法
常用方法 | 作用描述 |
---|---|
systemd | 通过 systemd 的 service 这类 Unit 可以实现 |
/etc/rc.local | 将要执行的命令或脚本放到 /etc/rc.local 这个文件中,使用 systemd 做为 init 1 进程的 Linux 操作系统,为了兼容以前使用 system V 做为 init 1 的操作系统,开机的时候也会加载/etc/rc.local 这个目录。 |
cron | 使用 cron 定时任务也可以实现操作系统开机后,执行某个操作。(将分时天月周部分用 @reboot 代替) |
问题 10:系统无法启动的排查流程和处理方法
1、POST 自检阶段: 如果开机黑屏、没有输出,连 BIOS 都进不去,那通常是硬件问题,例如内存松动、显卡接触不良等。常见处理方式是重新插拔内存或更换故障硬件。
2、Boot Loader 阶段:如果屏幕提示 grub>
或 grub rescue>
,说明 GRUB 引导损坏或引导配置丢失。这时我会使用安装盘进入救援模式,重新安装 GRUB 引导程序。
3、内核加载阶段: 如果进入了 initramfs
或出现 kernel panic
错误,说明内核加载失败,常见原因是文件系统损坏或找不到根文件系统。这时我会使用 fsck
或 xfs_repair
对挂载分区进行修复。
4.、init 加载阶段: 如果系统卡在开机启动界面不动,通常是某个自启动服务异常导致 systemd 阻塞。这种情况我会在 GRUB 中修改内核参数进入 rescue.target
或 emergency.target
模式,禁用故障服务进行排查。