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.
能够加载和执行用户程序并为其提供标准化(与硬件无关)的输入/输出接口。
注:本科所讲知识点都基于冯诺依曼结构
内核&外壳
内核:操作系统的核心部分,负责计算机资源和硬件控制
主要功能
- 进程管理:创建、调度和终止进程。
- 内存管理:分配和回收内存,管理虚拟内存。
- 设备管理:控制和管理硬件设备,如硬盘、打印机等。
- 文件系统管理:提供文件的存储、检索和管理功能。
分类
- 单内核:所有服务在一个内核空间中运行。
- 微内核:将大部分服务放在用户空间,内核只提供基本功能。
- 混合内核:结合单内核和微内核的特性。
外壳:户与操作系统内核之间的接口,通常是一个命令行界面或图形用户界面
主要功能
- 命令解释:接收用户输入的命令并将其传递给内核执行。
- 脚本编写:支持编写脚本以自动化任务。
- 用户界面:提供与用户交互的界面,可以是文本模式(如Bash)或图形模式(如GNOME、KDE)。
类型:
- 命令行外壳:如Bash、Zsh、Fish等。
- 图形外壳:如Windows Explorer、macOS Finder等。
计算机启动流程
- 电源开启:
用户按下电源按钮,电源供应器开始工作,向计算机各组件供电。
- 自检 (POST):
BIOS(基本输入输出系统)开始执行自检程序(Power-On Self Test),检查硬件组件(如内存、CPU、显卡等)是否正常。
- 加载引导程序:
BIOS 找到并加载引导扇区。对于传统的 BIOS 系统,引导程序通常位于硬盘的第一个扇区(0x7C00)。 BIOS 会将引导扇区的内容加载到内存中,并将控制权转交给引导程序。
- 引导加载程序执行:
引导程序开始执行,通常会加载操作系统内核。引导程序可以是简单的引导加载器(如 GRUB)或更复杂的引导管理器。
- 操作系统加载:
引导加载程序从磁盘中加载操作系统内核到内存中,并进行初始化设置。 操作系统会初始化硬件驱动程序、文件系统以及其他必要的系统服务。
- 用户界面:
操作系统完成启动后,用户界面(如登录屏幕或桌面环境)会被加载并显示,用户可以开始与计算机进行交互。
- 后台服务启动:
操作系统启动后,会加载各种后台服务和应用程序,准备好为用户提供服务。
本课程目标
实现一个x86架构的单内核操作系统
- 内存管理
- 文件系统
- 任务调度
- 系统调用
- 网络协议栈
开发环境搭建
所需工具(Windows):
开发环境
- IDE: VSCode
- C/C++
- x86 and x86_64 Assembly
- GDB Debug
开发工具
- x86_64-elf-tools-windows
- Cygwin64
- GDB
- Make
- NASM
模拟器
- QEMU
- Bochs