编辑
2023-05-06
随笔
00
请注意,本文编写于 380 天前,最后修改于 337 天前,其中某些信息可能已经过时。

都说Linux下一切皆文件。那么问题来了,Linux又是如何启动的?启动过程是怎么样的?

内存空间有什么变化?什么是用户态,什么是内核态?切换会发生什么变化?又有哪些常见的操作会切换内核态和用户态?关机又会发生什么?为什么会死机?CPU占用率飙升的原因是什么?死机又要按什么键强制重启?

  1. Linux是如何启动的? 一般来说,Linux启动过程可以分为以下几个阶段:

    • BIOS (基本输入输出系统):电脑加电后,BIOS 是第一个运行的程序。它初始化硬件并且找到启动设备(如硬盘、USB等),然后加载并执行主引导记录(MBR)。
    • Bootloader (引导加载器):Bootloader 位于主引导记录。它的任务是加载并初始化内核。常见的 Bootloader 有 GRUB 和 LILO。
    • Kernel (内核):内核首先会进行自我解压,然后加载系统的硬件驱动、初始化设备、设置内存管理等,最后启动 init 进程。
    • Init System (初始化系统):Init 是系统中的第一个进程(PID 为 1)。它负责启动其他所有的进程。常见的 Init 系统有 SysV, Upstart, systemd 等。
  2. 内存空间有什么变化? 在系统启动过程中,内存会从 BIOS、Bootloader、Kernel 到 User Space 进行转换。BIOS、Bootloader、Kernel 都运行在特权模式,也就是内核态。当系统启动完毕,大部分用户程序会运行在用户空间,也就是用户态。

  3. 什么是用户态,什么是内核态? 用户态和内核态是操作系统的两种运行模式。用户态有限制的权限,通常用户程序在这个模式下运行。而内核态有全部的硬件权限,操作系统内核在这个模式下运行。

  4. 切换会发生什么变化? 当从用户态切换到内核态时,会发生上下文切换。这通常发生在系统调用、硬件中断等情况。上下文切换会保存用户态的状态,并加载内核态的状态。

  5. 有哪些常见的操作会切换内核态和用户态? 系统调用、硬件中断、异常处理等都会导致用户态和内核态的切换。

  6. 关机又会发生什么? 在 Linux 系统关机时,系统会发送一个信号通知所有运行的进程终止。然后,系统会同步所有的文件系统,确保数据的完整性。最后,系统会关闭所有的硬件设备并停止内核。

  7. 为什么会死机? 死机可能有多种原因,如硬件故障、驱动问题、内存不足、CPU 超负荷等。根据具体的情况,可能需要采取不同的解决方法。

  8. CPU占用率飙升的原因是什么? CPU 占用率飙升通常是因为有一个或多个进程占用大量的 CPU 资源。你可以使用 tophtop 等工具查看哪个进程在占用 CPU。

  9. 死机又要按什么键强制重启?(Ubuntu)

    1. 鼠标能移动,但点按无反应:

      使用 alt+tab 快捷键切换当前应用程序的窗口,看看是否可以解决问题。

    2. 键盘可用,应用(含桌面)卡死:

      使用下面罗列的命令解决(pkill大法好),或需结合 ctr+alt+F1-6 切换字符界面使用(当图形界面卡死时)。

    3. 卡在锁屏页面:

      表现是鼠标卡慢(动一下鼠标过一会才看到屏幕上指针移动),键盘可用,但没法输密码。这种情况往往是由于内存不足,使用 ctr+alt+F1-6 切换字符界面再切换回来即可。之后加大虚拟内存即可。

    4. 键盘不可用。使用 busier 组合键安全重启:

      busier 组合键:<Ctrl+Alt> + <Sysrq/PrtSc> + (busier 倒写) 按法:先按住 <Ctrl+Alt> 不放,依次按下 <Sysrq/PrtSc>REISUB,后面这 7 个键每次按下松开后等待 1 秒再按下一个。

本文作者:phae

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!