西北工业大学计算机学院计算机操作系统实验报告一:创建GeekOS
资源描述
本资源文件为西北工业大学计算机学院2022年计算机操作系统实验报告一,主题为“创建GeekOS内核线程”。实验报告详细记录了实验的操作流程、相关代码以及实验结果分析,内容涵盖以下几个方面:
- 编写操作系统引导扇区代码:在虚拟机中成功运行引导扇区代码。
- 创建线程:实现从键盘接收按键并在屏幕上显示的功能。
- 多线程实验:创建两个线程,分别打印输出不同的字符串信息,并观察分析结果。
- 个性化内核线程设计:设计两个线程,一个线程打印大的爱心,一个线程打印小的爱心,观察屏幕上交替出现的现象,进一步感受GeekOS的多任务调度。
实验内容详解
1. 编写操作系统引导扇区代码
在实验中,我们首先编写了操作系统的引导扇区代码,并在虚拟机中成功运行。这一步骤为后续的线程创建和多任务调度打下了基础。
2. 创建线程
通过编写代码,我们成功创建了一个线程,该线程能够从键盘接收一个按键,并在屏幕上显示出来。这一实验展示了线程的基本创建和运行过程。
3. 多线程实验
在多线程实验中,我们创建了两个线程,分别打印输出不同的字符串信息。通过观察和分析实验结果,我们深入理解了多线程并发执行的机制。
4. 个性化内核线程设计
为了进一步探索GeekOS的多任务调度,我们设计了两个线程,一个线程打印大的爱心,一个线程打印小的爱心。通过设置相同的优先级,我们观察到屏幕上交替出现大小爱心的现象,从而更直观地感受到多任务调度的效果。
实验分析
1. 系统的第一个线程
在实验中,我们分析了系统的第一个线程。第一个线程是s_freelist中新创建的空闲页链表中的线程,初始化时不需要调用Setup_Kernel_Thread,因为第一个线程没有上下文,直接将其压入栈中即可。
2. 内核线程结构体中的指针
内核线程结构体中定义了三组指针,它们的作用分别是:
- 第一组joinQue:用于线程的等待队列,管理线程的等待和唤醒操作。
- 第二组waitQue:用于线程的等待队列,管理线程的等待和唤醒操作。
- 第三组next:用于线程的链表管理,维护线程的顺序和关系。
总结
本实验报告详细记录了创建GeekOS内核线程的整个过程,涵盖了从引导扇区代码编写到多线程并发执行的各个环节。通过实验,我们不仅掌握了线程的创建和调度机制,还深入理解了操作系统内核的基本原理。希望这份实验报告能够为后续的学习和研究提供参考和帮助。