2022瓜大计算机学院计算机操作系统实验报告一 ---- 创建GeekOS内核线程,实验报告包含完整的操作流程和相关代码,内容详尽 示例: 1.编写操作系统引导扇区代码,并在虚拟机中运行。 2.创建一个线程,实现从键盘接收一个按键,并在屏幕上显示。 3.创建两个线程,分别打印输出不同的字符串信息。观察并分析结果。 4.自行设计个性化的内核线程,给出运行结果。 设计两个线程,一个线程打印大的爱心,一个线程打印小的爱心。在屏幕上进行输出不断交替出现的现象,更进一步地感受GeekOS多任务调度。注意需要添加2个线程,每个线程的优先度是一致的,从而使得每种输出都是均衡的,这样就可以看到大小圆心交替出现的现象: 实验分析 1. 系统的第一个线程是什么?初始化它的时候为何不调用Setup_Kernel_Thread? 第一个线程是s_freelist中新创建的空闲页链表中的,初始化它的时候Setup_Kernel_Thread的目的是将线程的上下文压入栈中,因为第一个线程无下文,不需要调用,所以直接将线程压入栈中。 2. 内核线程结构体中定义了三组指针,它们的作用是什么? 第一组joinQue
2022-11-21 18:03:47 699KB 西工大 计算机操作系统实验 最新
1
西工大计算机学院计算机操作系统2022最新报告,报告中详细介绍了编写代码的步骤和相关的代码和最后的实验的截图, 供各位同学参考 下面给出部分的实验内容: 要实现系统用户态模式下加载运行可执行程序,需要在Project2的基础上,修改user.c、elf.c、userseg.c、kthread.c、sysall.c、main.c makefile的修改部分内容:删除-Werror,因为它会把所有的warning当作报错进行处理,然后需要添加-fno-stack-protector (1)修改“src/GeekOS/user.c”文件中的函数Spawn(),它的功能是生成一个新的用户级进程: (2)修改“src/GeekOS/user.c”文件中的函数Switch_To_User_Context(),调度程序在执行一个新的进程前调用该函数以切换用户地址空间 (3)修改“src/GeekOS/elf.c”文件中的函数Parse_ELF_Executable()该函数的实现要求和project1相同,所以可以将project1中的elf.c直接使用 (4)“src/GeekOS/use
1
一、实验目的 1、理解进程并发执行的实质。 2、分析进程竞争资源的现象,学习解决进程互斥的方法。 3、掌握进程时间片轮转调度算法和优先权调度算法。 二、实验设备 每人一台计算机,硬件要求:CPU PII以上,64M内存,100M硬盘空间即可;软件要求:Linux操作系统。 三、实验内容 1、用lockf()来给每一个进程加锁,以实现进程之间的互斥。 2、编制两种进程调度算法:时间片轮转调度算法和优先权调度算法。 四、实验步骤 1、打开centos7,进入终端命令行模式。 2、使用vi编辑器,vi *.c。(*是要编辑的文件名)。 3、在实验一,进程互斥中,vi zhanghaohao1.c。 在实验二,进程调度中,vi zhanghaohao2.c。 4、输入a/i/o,切换为输入模式,输入代码。 5、按ESC退出输入模式,按shift+:wq,保存退出。 6、输入gcc ./zhanghaohao1.c与gcc ./zhanghaohao2.c编译。 五、程序代码 1、用lockf()来给每一个进程加锁,以实现进程之间的互斥 互斥代码: 六、实验结果
2022-11-21 18:03:03 271KB linux 操作系统 实验报告 源码
1
西工大计算机操作系统实验-创建GeekOS内核线程.doc
2022-11-21 14:02:27 653KB 实验资源
1
实验1Linux基本环境 实验2进程管理 实验3进程通信(1) 实验4进程通信(2) 实验5进程调度 实验6银行家算法 实验7页面置换算法 实验8文件系统
2022-11-19 17:03:05 6.68MB 操作系统
1
1. 编写实验使用的示例程序 2. 理解X86计算机的寻址机制,理解全局描述符表GDT,局部描述符表等数据结构的内容。 3. 查看GDTR,LDTR,DS等寄存器,了解寄存器的数据格式。 4. 根据寄存器和相关的数据结构,计算变量j的线性地址。 5. 使用creg查看寄存器信息 6. 根据线性地址和页内偏移,基于页式地址转换,计算物理地址。
2022-11-17 20:36:43 1.07MB 操作系统 Bochs 地址映射
1
电子科技大学计算机操作系统实验指导书以实现的代码和实验报告 所用语言C++ 该文档包含电子科技大学计算机学院操作系统课程的实验,分别为模拟资源管理和内存地址转化实验
2022-11-17 20:21:31 1.14MB 详细资料 参考资料
1
包含了三个操作系统的实验,分别是作业调度、进程调度、银行家算法;都给出了具体的运行代码和注解,可以直接使用。
2022-11-17 08:19:55 10KB 操作系统实验
1
操作系统实验报告 1、进程调度 2、作业调度 3、作业调度4、文件系统 一、 实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解。 二、实验内容和要求 编写并调试一个模拟的进程调度程序,采用“简单时间片轮转法”调度算法对五个进程进行调度。 每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、到达时间、需要运行时间、已运行时间、进程状态等等。 进程的到达时间及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。 进程的运行时间以时间片为单位进行计算。 每个进程的状态可以是就绪 W(Wait)、运行R(Run)两种状态之一。 就绪进程获得 CPU后都只能运行一个时间片。用运行时间加1来表示。 如果运行一个时间片后,进程的已占用 CPU时间已达到所需要的运行时间,则撤消该进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进程还需要继续运行,此时应分配时间片给就绪队列中排在该进程之后的进程,并将它插入就绪队列队尾。 每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的 PCB,以便进行检查。 重复以上过程,直到所要进程都完成为止。 三、实验主要仪器设备和材料 硬件环境:IBM-PC或兼容机 软件环境:C语言编程环境 四、实验原理及设计方案 1、进程调度算法:采用多级反馈队列调度算法。其基本思想是:当一个新进程进入内在后,首先将它放入第一个队列的末尾,按FCFS原则排队等待高度。当轮到该进程执行时,如能在该时间片内完成,便可准备撤离系统;如果它在一个时间片结束时尚为完成,调度程序便将该进程转入第二队列的末尾,再同样地按FCFS原则等待调度执行,以此类推。 2、实验步骤: (1)按先来先服务算法将进程排成就绪队列。 (2)检查所有队列是否为空,若空则退出,否则将队首进程调入执行。 (3)检查该运行进程是否运行完毕,若运行完毕,则撤消进程,否则,将该进程插入到下一个逻辑队列的队尾。 (4)是否再插入新的进程,若是则把它放到第一逻辑队列的列尾。 (5)重复步骤(2)、(3)、(4),直到就绪队列为空。 .................
1
设计一个有N个进程的进程调度程序。 1、进程调度算法:采用动态最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)。 2、每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:  进程名----进程标示数ID;  优先数----Priority,优先数越大优先权越高;  到达时间----进程的到达时间为进程输入的时间;  进程还需要运行时间----AllTime,进程运行完毕AllTime =0;  已用CPU时间----CPUTime;  进程的阻塞时间StartBlock----表示当进程在运行StartBlock个时间片后,进程将进入阻塞状态;  进程的阻塞时间StartTime----表示当进程阻塞StartTime个时间片后,进程将进入就绪状态;  进程状态----State;  队列指针----Next,用来将PCB排成队列。 3、调度原则  进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间;  进程的运行时间以时间片为单位进行计算;  进程在就绪队列中带一个时间片,优先数
2022-11-16 18:03:06 316KB 操作系统
1