没有合适的资源?快使用搜索试试~ 我知道了~
首页操作系统同步,进程管理,存储管理章节实验的实现
操作系统同步,进程管理,存储管理章节实验的实现
需积分: 10 13 下载量 154 浏览量
更新于2023-03-16
评论
收藏 1.04MB DOC 举报
该文档中包含操作系统三个实验的具体步骤和代码: 实验一 掌握进程同步与同步机制,了解Linux内核并发性和各种同步机制。 (1)设计并实现新的同步原语。 实验二 掌握Linux2.4和2.6的进程调度机制。 将Linux2.6调度算法修改成随机调度算法。 实验三 了解x86的分段机制,知道什么是物理存储管理和进程虚拟存储管理。 统计系统和单个进程的缺页次数。
资源详情
资源评论
资源推荐
目 录
1 实验目的.............................................................................................. 2
2 实验环境.............................................................................................. 2
3 实验内容.............................................................................................. 2
3.1 实验一................................................................................................. 2
3.2 实验二................................................................................................. 2
3.3 实验三................................................................................................. 2
4 设计与实现........................................................................................... 3
4.1 实验一................................................................................................. 3
4.2 实验二................................................................................................. 9
4.3 实验三............................................................................................... 12
8 心得体会............................................................................................ 20
I
1 实验目的
·深入理解程序并发执行的本质,进程间的互斥和同步概念;
·学会向内核添加新的同步机制;
·深入理解进程调度的基本原理;
·根据要求能对Linux2.6算法进行修改;
·了解Linux物理主存管理机制;
·了解Linux物理虚拟管理机制;
2 实验环境
本次课程设计采用的操作系统环境是windows10、Ubuntu双系统,Ubuntu系
统版本号为12.04,内核版本号为linux 3.2.58;采用的编程环境为CodeBlocks
IDE和QtCreator。
3 实验内容
3.1 实验一
掌握进程同步与同步机制,了解Linux内核并发性和各种同步机制。
(1)设计并实现新的同步原语。
3.2 实验二
掌握Linux2.4和2.6的进程调度机制。
将Linux2.6调度算法修改成随机调度算法。
3.3 实验三
了解x86的分段机制,知道什么是物理存储管理和进程虚拟存储管理。
2
统计系统和单个进程的缺页次数。
4 设计与实现
4.1 实验一
4.1.1 实验要求
设计一组新的内核同步原语,具有如下的功能:能够使多个进程阻塞在某一特定
的事件上,直到另一个进程完成这一事件释放相关资源,给内核发送特定的消息,然
后由内核唤醒这些被阻塞的进程。
4.1.2 具体实现
(1) 进程同步和互斥的概念
我们把异步环境下的一组并发进程因直接制约而互相发送消息、进行互相合
作、互相等待,使得各进程按一定的速度执行的过程称为进程间的同步。具
有同步关系的一组并发进程称为合作进程,合作进程间互相发送的信号称为
消息或事件。 如果我们对一个消息或事件赋以唯一的消息名,则我们可用过
程 wait (消息名) 表示进程等待合作进程发来的消息,而用过程 signal
(消息名) 表示向合作进程发送消息。
两个或两个以上的进程,不能同时进入关于同一组共享变量的临界区域,否
则可能发生与时间有关的错误,这种现象被称作进程互斥· 也就是说,一个
进程正在访问临界资源,另一个要访问该资源的进程必须等待。
(2)设计新的同步原语步骤
1 我们将要设计一组新的内核同步原语,它们具有如下的功能:能够使多个
进程阻塞在某一特定的事件上,直到另一个进程完成这一事件释放相关资源,
给内核发送特定的消息,然后由内核唤醒这些被阻塞的进程。如果没有进程阻
塞在这个事件上,则消息被忽略。下面是我们需要编写的 4 个系统调用: int
evntopen(int); 这个函数的功能是生成一个事件,返回他的事件 ID;如果参
数为 0,表示是一个新的事件,否则则是一个存在的事件。 int
evntclose(int); 消灭一个事件。 int evntwait(int eventNum); 进程被阻
塞,直到某个特定事件的完成才被唤醒。 void evntsig(int eventNum); 唤
醒所有等待这个事件的进程,如果等待队列为空,则忽略。
3
2 首先我们想一下,一个事件必有一个事件号,一系列的进程等待这个事件的
发生,那么肯定会要使用一个等待队列,所有睡眠于该事件的进程就放到这个
等待队列去。然后,我们考虑一下该如何在内核中存放我们的事件呢。一个简
单的解决办法,把它们连成一个链表。好,这样一来,我们就可以决定该建立
一个怎样的结构了。
typedef struct __myevent{ int eventNum;
wait_queue_head_t *p; struct __myevent *next;
}myevent_t;
3 同时,我们将建立两个全局的变量 lpmyevent_head 和 lpmyevent_end,他们的
定义如下:
myevent_t * lpmyevent_head = null;
myevent_t * lpmyevent_end = null;
正如他们的名字一样,lpmyevent_head 指向链表的头,lpmyevent_end 指向链
表的尾。 现在,让我们定义那四个系统调用吧! 首先设计 evntopen()。可以想象一
下,当我们 open 一个事件的时候,必然有两种情况:第一种、事件已经存在,这
是最理想的了,我们只需返回 eventNum 以表示事件;第二种、事件链表中没有该
事件,简化的处理方法就是直接返回-1,表示不存在该事件。
int evntopen(int eventNum)
{
myevent_t *new;
myevent_t *prev;
if(eventNum) /*如果 eventNum 不为 0*/
if(!scheventNum(eventNum,&prev)) /*检测 eventNum 是否在链表中,不在返回-1 */
return -1;
else
return eventNum; /*else 返回 eventNum*/
else /*如果 eventNum 为 0 ,建立新的事件*/
{ /*初始化新事件*/
new = (myevent_t *)kmalloc(sizeof(myevent_t, GFP_KERNEL));
new->p = (wait_queue_head_t *)kmalloc(sizeof(wait_queue_head_t)); new-
>next = null;
new->p->task_list.next = &new->p->task_list;
new->p->task_list.prev = &new->p->task_list;
if(!lpmyevent_head) /*如果事件链表为空*/
{
new->eventNum = 2; /*注意,我们把最小的事件编号设为 2*/ lpmyevent_head =
4
剩余19页未读,继续阅读
自在观观自在
- 粉丝: 4
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- 2023年中国辣条食品行业创新及消费需求洞察报告.pptx
- 2023年半导体行业20强品牌.pptx
- 2023年全球电力行业评论.pptx
- 2023年全球网络安全现状-劳动力资源和网络运营的全球发展新态势.pptx
- 毕业设计-基于单片机的液体密度检测系统设计.doc
- 家用清扫机器人设计.doc
- 基于VB+数据库SQL的教师信息管理系统设计与实现 计算机专业设计范文模板参考资料.pdf
- 官塘驿林场林防火(资源监管)“空天地人”四位一体监测系统方案.doc
- 基于专利语义表征的技术预见方法及其应用.docx
- 浅谈电子商务的现状及发展趋势学习总结.doc
- 基于单片机的智能仓库温湿度控制系统 (2).pdf
- 基于SSM框架知识产权管理系统 (2).pdf
- 9年终工作总结新年计划PPT模板.pptx
- Hytera海能达CH04L01 说明书.pdf
- 数据中心运维操作标准及流程.pdf
- 报告模板 -成本分析与报告培训之三.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0