Alarm-Clock 实验过程|学习笔记

简介: 快速学习 Alarm-Clock 实验过程

开发者学堂课程【高校精品课-西安电子科技大学-操作系统课程设计Alarm-Clock 实验过程】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/74/detail/15857


Alarm-Clock 实验过程

 

实操演示

操作系统课程设计实现 alarm-clock 实验。

在阿里云的平台的实验环境在 home 目录下,进入实验环境,打开 src 文件夹之后,可以看到 pintos 系统下包含了以下的文件夹和文件。本节课需要着重关注的是 threads 和 devices 这两个文件夹。所需要修改的内容都在这两个文件夹中。

root@izuf698je0a4rvsgpz2d2xZ:/home# pwd

/home

root@izuf698je0a4rvsgpz2d2xZ:/home# ls

Xd

root@izuf698je0a4rvsgpz2d2xZ:/home# cd xd

root@izuf698je0a4rvsgpz2d2xZ:/home/xd# ls

Os

root@izuf698je0a4rvsgpz2d2xZ:/hame/xd# cd os/

root@izuf698je0a4rvsgpz2d2xZ: /hone/xd/os# ls

bochs-2.6.7 bochs-2.6.7.tar.gz pintos  pintos.tar.gz

root@izuf698je0a4rvsgpz2d2xZ:home/xd/os# cd pintos

root@izuf698je0a4rvsgpz2d2xZ:/home/xd/os/pintos ls

src

root@lzuf698je0a4rvsgpzzd2xZ:/home/xd/os/pintos cd sre/

root@lzuf698je0a4rvsgpzzd2xZ:/home/xd/os/pintos/src# ls

Devices  lib  makefile  makefile.userprog  threads  vm

Examples  license  makefile.build  misc  userprog

Filesys  make.config  makefile.kernel  tests  untils

root@lzuf698je0a4rvsgpzzd2xZ: /home/xd/os/pintos/src# cd

首先进入 threads 可以看文件夹下的一些文件,包括上节提到的threads.c、threads.h。这里先打开 threads.h 查看

root@lzuf698je0a4rvsgpzzd2xZ:/home/xd/os/pintos/src/threads# geany thread.h

这里使用的编辑器为 journey,如果有其他的编辑器也是可以的。打开之后,可以通过左侧边栏,找到 thread 结构体。

 image.png

然后在大约九十五行的位置,加入定义线程阻塞的时间,然后在后面写上注释(int block_ticks;/*block_time*/)。在结构体修改后,来修改 timer_sleep 文件,timer_sleep 函数位于 devices 目录下的timer.c中找到 timer_sleep 函数,对其原始的代码进行重新的定义。对 timer_sleep 函数重新定义之后,检查一遍代码,如果没有错误就退出界面。

{

If ticks > 0){

Enum intr lever old level

Struct thread *t;

T = threads current();

T ->block ticks = ticks

Old level = intr disable

Threads block();

Intr set level (old level)

}

接下来回到 thread.h 文件夹中来定义阻塞检测。

root@lzuf698je0a4rvsgpzzd2xZ:/home/xd/os/pintos/src/threads# geany thread.h

第一步需要编辑定义 block check 的函数,定义在线程的图文件当中,这里可以拉到最下方。

Void block check(struct thread *t,void *aux UNUSED);

定义完后进行检查,然后保存退出。

在图文件中声明了 block check 之后,然后还要去 thread.c 中对 block check 的函数进行新的定义。可以在文件的末尾来对其进行定义。

Void block check(struct thread *t ,void *aux UNUSED)

{

If(t->status == THREAD_BLOCKED && t->block ticks>0)

{

t->block ticks --;

If(t->block ticks ==0  )

{

Thread unblock(t);

}

检查过后保存退出,需要对定义的 block check 函数进行调用,需要在 timer.c 文件中修改,在大约一百八十五行的位置。

Ticks++;

Enum intr level old level;

这是定义的这行代码,其含义是记录原来的终段状态。 

Old level =intr disable();

这段代码含义为 thread 函数要求关中段。

Thread foreacj(block check ,NULL)

Intr set level (old level);

检查目录后保存退出,在经过这几个步骤的修改后,来到 threads 目录下,对实验成果进行检测。

image.png

具体检测命令是 Make check,然后可以在终端看到一共有七项配置通过,本次实验结束。

相关文章
|
6月前
|
监控 容灾 测试技术
第三方API的稳定性如何保障?
第三方API的稳定性对电商至关重要,直接影响业务连续性和用户体验。为确保稳定,可采取以下措施:选择可靠提供商、评估技术架构高可用性、实现限流重试机制、实时监控预警、充分测试、优化网络连接、使用API网关、保持与提供商沟通、制定应急预案及定期评估改进。这些方法能有效提升API稳定性,保障业务高效运行和用户满意度。
216 0
|
人工智能 Linux 开发工具
Zynq MPSoC折腾 —— 开篇
Zynq MPSoC折腾 —— 开篇
|
存储 机器学习/深度学习 人工智能
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
数据结构学习笔记——图的存储结构(邻接矩阵和邻接表)
|
安全 数据挖掘 API
解锁数据宝藏:Microsoft Graph API的统一数据革命
解锁数据宝藏:Microsoft Graph API的统一数据革命
304 1
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【9月更文挑战第5天】性能测试是确保应用在高负载下稳定运行的关键。本文介绍Apache JMeter和Locust两款常用性能测试工具,帮助识别并解决性能瓶颈。JMeter适用于测试静态和动态资源,而Locust则通过Python脚本模拟HTTP请求。文章详细讲解了安装、配置及使用方法,并提供了实战案例,帮助你掌握性能测试技巧,提升应用性能。通过分析测试结果、模拟并发、检查资源使用情况及代码优化,确保应用在高并发环境下表现优异。
317 5
|
机器学习/深度学习 算法 大数据
云上智能风控:重塑金融风险管理的新篇章
随着金融科技的快速发展,监管机构对金融机构的监管要求也在不断提高。云上智能风控系统需要符合相关监管政策和法规的要求
|
机器学习/深度学习 存储 自然语言处理
RNN与LSTM:循环神经网络的深入理解
【6月更文挑战第14天】本文深入探讨RNN和LSTM,两种关键的深度学习模型在处理序列数据时的作用。RNN利用记忆单元捕捉时间依赖性,但面临梯度消失和爆炸问题。为解决此问题,LSTM引入门控机制,有效捕获长期依赖,适用于长序列处理。RNN与LSTM相互关联,LSTM可视为RNN的优化版本。两者在NLP、语音识别等领域有广泛影响,未来潜力无限。
|
存储 NoSQL 定位技术
如何在Redis中快速推算两地之间的距离?——Geo篇
Redis 3.2 引入Geo类型,支持地理位置数据存储和计算,如距离和范围查询。使用`GEOADD`将城市经纬度添加至`zset`中,通过`GEOPOS`获取坐标,`GEODIST`计算距离,`GEORADIUS`查找指定范围内的城市。Redis的Geo功能适用于快速的地理位置服务,如附近搜索和配送范围分析。利用`ZSET`操作可增删位置数据,简化地理空间应用开发。
383 0
|
算法 JavaScript Java
html+css+js实现打砖块小游戏
html+css+js实现打砖块小游戏
374 0
|
存储 数据采集 运维
日志服务(SLS)测评
在本次测评中,我将对日志服务SLS产品进行全面评估,主要从以下四个方面展开。首先,我将进行功能测试,基于之前参加的两次训练实验,对其功能进行评估。其次,我将与其他数据分析&可观测性产品进行比较,以了解SLS的优势和差异。然后,我将进行成本与收益分析,探讨SLS作为一站式的可观测数据存储分析平台所带来的成本节约和收益提升。最后,我将对SLS进行简要总结,并提出一些期待,希望能够为用户提供有用的参考信息。
995 58