手写操作系统 - 1.前言

152 阅读3分钟

B站视频链接 - 【201.手写操作系统】

What is an Operating System?

An operating system is a software controlling the operation of a computer system and its resources. Among other things, there's one very important criteria common to all operating systems:

操作系统是控制计算机系统及其资源运行的软件。除其他事项外,所有操作系统都具有一个非常重要的共同标准:

Capable of loading and executing user programs providing standardized (hardware-independent) input / output interface for them.

能够加载和执行用户程序并为其提供标准化(与硬件无关)的输入/输出接口。

注:本科所讲知识点都基于冯诺依曼结构

内核&外壳

内核:操作系统的核心部分,负责计算机资源和硬件控制

主要功能
  1. 进程管理:创建、调度和终止进程。
  2. 内存管理:分配和回收内存,管理虚拟内存。
  3. 设备管理:控制和管理硬件设备,如硬盘、打印机等。
  4. 文件系统管理:提供文件的存储、检索和管理功能。
分类
  1. 单内核:所有服务在一个内核空间中运行。
  2. 微内核:将大部分服务放在用户空间,内核只提供基本功能。
  3. 混合内核:结合单内核和微内核的特性。

外壳:户与操作系统内核之间的接口,通常是一个命令行界面或图形用户界面

主要功能
  1. 命令解释:接收用户输入的命令并将其传递给内核执行。
  2. 脚本编写:支持编写脚本以自动化任务。
  3. 用户界面:提供与用户交互的界面,可以是文本模式(如Bash)或图形模式(如GNOME、KDE)。
类型:
  1. 命令行外壳:如Bash、Zsh、Fish等。
  2. 图形外壳:如Windows Explorer、macOS Finder等。

计算机启动流程

  1. 电源开启:

用户按下电源按钮,电源供应器开始工作,向计算机各组件供电。

  1. 自检 (POST):

BIOS(基本输入输出系统)开始执行自检程序(Power-On Self Test),检查硬件组件(如内存、CPU、显卡等)是否正常。

  1. 加载引导程序:

BIOS 找到并加载引导扇区。对于传统的 BIOS 系统,引导程序通常位于硬盘的第一个扇区(0x7C00)。 BIOS 会将引导扇区的内容加载到内存中,并将控制权转交给引导程序。

  1. 引导加载程序执行:

引导程序开始执行,通常会加载操作系统内核。引导程序可以是简单的引导加载器(如 GRUB)或更复杂的引导管理器。

  1. 操作系统加载:

引导加载程序从磁盘中加载操作系统内核到内存中,并进行初始化设置。 操作系统会初始化硬件驱动程序、文件系统以及其他必要的系统服务。

  1. 用户界面:

操作系统完成启动后,用户界面(如登录屏幕或桌面环境)会被加载并显示,用户可以开始与计算机进行交互。

  1. 后台服务启动:

操作系统启动后,会加载各种后台服务和应用程序,准备好为用户提供服务。

本课程目标

实现一个x86架构的单内核操作系统

  1. 内存管理
  2. 文件系统
  3. 任务调度
  4. 系统调用
  5. 网络协议栈

开发环境搭建

所需工具(Windows):

开发环境

  1. IDE: VSCode
    1. C/C++
    2. x86 and x86_64 Assembly
    3. GDB Debug

开发工具

  1. x86_64-elf-tools-windows
  2. Cygwin64
    1. GDB
    2. Make
  3. NASM

模拟器

  1. QEMU
  2. Bochs