操作系统第三周

操作系统老师PPT就此结束,因为老师讲的太好,PPT也做的很好,内容很多,作者很难去增添太多东西写到博客中。所以之后的笔记基本都是王道操作系统的内容或者作者自身的问题解决。


操作系统的启动过程

操作系统的启动过程是一个复杂的多步骤过程。在操作系统启动时,内核是首先被加载的,而进程调度是内核的一个部分。内核加载后,首先进行内核初始化,然后在内核开始进程调度

以下是简化的启动过程的描述,分别以Windows和Linux为例:

Linux

  • 启动引导程序 Boot Loader: 当计算机开机后,首先执行的是BIOS或UEFI,它会找到一个启动设备(例如硬盘)并从中加载引导加载程序(这个引导加载程序能够帮助启动内核的加载),例如GRUB。

  • 内核初始化: GRUB会加载Linux内核。这时,内核处于初始状态。内核被加载后,开始初始化各种硬件设备、内核数据结构等。

  • 进程调度器初始化: 内核初始化的过程中会初始化进程调度器以支持多任务处理。初始化后,会启动第一个用户空间进程,称为init(或在某些系统上为systemd)。这是PID为1的进程,它将负责启动其他所有进程。

  • 系统服务和应用启动: 在init进程开始之后,进程调度也开始了。这时,CPU开始按照某种策略(例如循环时间片)来调度并运行进程。

Windows

  • 启动引导程序: Windows Boot Manager (WBM) 或早期的 NTLDR 被执行,负责加载 Windows 内核。
  • 内核初始化: ntoskrnl.exe (Windows NT 内核) 被加载到内存并开始执行,初始化设备、驱动和系统数据结构。
  • 进程调度器初始化: 与linux相同,内核初始化的过程中,会初始化进程调度器
  • Session Manager (smss.exe): 内核初始化后,第一个用户模式进程 smss.exe 被启动,它负责进一步初始化系统会话。
  • Winlogon 和服务控制管理器: winlogon.exe 负责用户登录,而服务控制管理器 (services.exe) 负责启动其他系统服务。
  • 用户登录和桌面加载: 用户登录后,explorer.exe (桌面和任务栏) 和其他用户程序开始运行。

从上面的描述中可以看到,进程调度器的初始化都是在内核初始化的一部分,它们很接近,但不是严格的“同时”。进程调度器必须在系统开始运行用户模式进程之前初始化完成。

进程与进程调度的启动起点

其中,作者将进程调度器核用户模式(空间)进程标注,其目的是想要说明:

        启动进程调度的起点是初始化进程调度器。进程调度器是支持和管理多进程并行运行的基础,而不是启动进程的直接起点。

        进程调度器负责管理和调度可运行的进程/线程,确保它们能够公平、有效地在CPU上运行。初始化进程调度器意味着为其准备必要的数据结构(如就绪队列)、设置调度策略参数(如时间片的长度)等。只有当进程调度器被初始化并准备好后,操作系统才能开始创建和执行用户模式和系统进程。

启动进程的真正起点是当内核成功初始化后,并选择启动其第一个用户空间进程。

你可能感兴趣的:(操作系统,单片机,嵌入式硬件,系统架构)