西北工业大学计算机学院计算机操作系统实验报告一创建GeekOS

2024-06-14

西北工业大学计算机学院计算机操作系统实验报告一:创建GeekOS

资源描述

本资源文件为西北工业大学计算机学院2022年计算机操作系统实验报告一,主题为“创建GeekOS内核线程”。实验报告详细记录了实验的操作流程、相关代码以及实验结果分析,内容涵盖以下几个方面:

  1. 编写操作系统引导扇区代码:在虚拟机中成功运行引导扇区代码。
  2. 创建线程:实现从键盘接收按键并在屏幕上显示的功能。
  3. 多线程实验:创建两个线程,分别打印输出不同的字符串信息,并观察分析结果。
  4. 个性化内核线程设计:设计两个线程,一个线程打印大的爱心,一个线程打印小的爱心,观察屏幕上交替出现的现象,进一步感受GeekOS的多任务调度。

实验内容详解

1. 编写操作系统引导扇区代码

在实验中,我们首先编写了操作系统的引导扇区代码,并在虚拟机中成功运行。这一步骤为后续的线程创建和多任务调度打下了基础。

2. 创建线程

通过编写代码,我们成功创建了一个线程,该线程能够从键盘接收一个按键,并在屏幕上显示出来。这一实验展示了线程的基本创建和运行过程。

3. 多线程实验

在多线程实验中,我们创建了两个线程,分别打印输出不同的字符串信息。通过观察和分析实验结果,我们深入理解了多线程并发执行的机制。

4. 个性化内核线程设计

为了进一步探索GeekOS的多任务调度,我们设计了两个线程,一个线程打印大的爱心,一个线程打印小的爱心。通过设置相同的优先级,我们观察到屏幕上交替出现大小爱心的现象,从而更直观地感受到多任务调度的效果。

实验分析

1. 系统的第一个线程

在实验中,我们分析了系统的第一个线程。第一个线程是s_freelist中新创建的空闲页链表中的线程,初始化时不需要调用Setup_Kernel_Thread,因为第一个线程没有上下文,直接将其压入栈中即可。

2. 内核线程结构体中的指针

内核线程结构体中定义了三组指针,它们的作用分别是:

  • 第一组joinQue:用于线程的等待队列,管理线程的等待和唤醒操作。
  • 第二组waitQue:用于线程的等待队列,管理线程的等待和唤醒操作。
  • 第三组next:用于线程的链表管理,维护线程的顺序和关系。

总结

本实验报告详细记录了创建GeekOS内核线程的整个过程,涵盖了从引导扇区代码编写到多线程并发执行的各个环节。通过实验,我们不仅掌握了线程的创建和调度机制,还深入理解了操作系统内核的基本原理。希望这份实验报告能够为后续的学习和研究提供参考和帮助。

下载链接

西北工业大学计算机学院计算机操作系统实验报告一创建GeekOS