操作系统上机要求.docx

上传人:b****1 文档编号:10467052 上传时间:2023-05-26 格式:DOCX 页数:15 大小:180.69KB
下载 相关 举报
操作系统上机要求.docx_第1页
第1页 / 共15页
操作系统上机要求.docx_第2页
第2页 / 共15页
操作系统上机要求.docx_第3页
第3页 / 共15页
操作系统上机要求.docx_第4页
第4页 / 共15页
操作系统上机要求.docx_第5页
第5页 / 共15页
操作系统上机要求.docx_第6页
第6页 / 共15页
操作系统上机要求.docx_第7页
第7页 / 共15页
操作系统上机要求.docx_第8页
第8页 / 共15页
操作系统上机要求.docx_第9页
第9页 / 共15页
操作系统上机要求.docx_第10页
第10页 / 共15页
操作系统上机要求.docx_第11页
第11页 / 共15页
操作系统上机要求.docx_第12页
第12页 / 共15页
操作系统上机要求.docx_第13页
第13页 / 共15页
操作系统上机要求.docx_第14页
第14页 / 共15页
操作系统上机要求.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

操作系统上机要求.docx

《操作系统上机要求.docx》由会员分享,可在线阅读,更多相关《操作系统上机要求.docx(15页珍藏版)》请在冰点文库上搜索。

操作系统上机要求.docx

操作系统上机要求

本次课程实习的要求:

1.总学时为36学时,要求每位同学确保在此时间内完成实验。

2.实习结束时,由老师上机验收,并上交实习报告。

验收成绩占75%,实习报告成绩占25%。

3.实习报告内容(电子文档):

(1)实习题目。

(2)实习内容及设计思想:

设计思路、主要数据结构、主要代码结构及代码段分析。

(3)上机实验所用平台及相关软件。

(4)调试过程:

测试数据设计、测试结果分析。

(5)总结:

实习中遇到的问题及解决方法、实习中产生的错误及原因分析、实习体会及收获。

本实验提示代码均采用Linux环境。

实习一进程创建

一、实习内容

利用fork()系统调用创建进程。

二、实习目的

了解进程的创建过程,进一步理解进程的概念,明确进程和程序的区别。

三、实习题目

编制一段程序,使用系统调用fork()创建两个子进程,这样在此程序运行时,在系统中就有一个父进程和两个子进程在活动。

每一个进程在屏幕上显示一个字符,其中父进程显示字符A,子进程分别显示字符B和字符C。

试观察、记录并分析屏幕上进程调度的情况。

[提示]:

(1)可用fork()系统调用来创建一个新进程。

系统调用格式:

pid=fork()

fork()返回值意义如下:

=0:

在子进程中,表示当前进程是子进程。

>0:

在父进程中,返回值为子进程的id值(唯一标识号)。

-1:

创建失败。

如果fork()调用成功,它向父进程返回子进程的pid,并向子进程返回0,即fork()被调用了一次,但返回了两次。

此时OS在内存中建立一个新进程,所建的新进程是调用fork()父进程的副本,称为子进程。

子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。

父进程与子进程并发执行。

(2)编译和执行的方法:

gcc源文件名-o执行文件名

最后,在shell提示符下输入:

./执行文件名

就可执行该文件。

(3)使用fork()系统调的实例。

#include

intmyvar=0;

intmain()

{

intpid;

pid=fork();//系统调用,创建进程

if(pid<0){//创建不成功,出错

printf(“forkfailed.”);

exit

(1);//系统调用

}

elseif(pid==0){//子进程执行

printf(“childprocessexecuting…\n”);

myvar=1;

}

else{//父进程执行

wait();//系统调用,等待子进程完成

printf(“childcomplete.”);

myvar++;

printf(“father,myvar=%d”,myvar);

}exit(0);

}

实习二进程同步

一、实习内容

模拟实现用同步机构避免发生进程执行时可能出现的与时间有关的错误。

二、实习目的

进程是程序在一个数据集合上运行的过程,进程是并发执行的,也即系统中的多个进程轮流地占用处理器运行。

我们把若干个进程都能进行访问和修改的那些变量称为公共变量。

由于进程是并发地执行的,所以,如果对进程访问公共变量不加限制,那么就会产生“与时间有关”的错误,即进程执行后所得到的结果与访问公共变量的时间有关。

为了防止这类错误,系统必须要用同步机构来控制进程对公共变量的访问。

一般说,同步机构是由若干条原语——同步原语——所组成。

本实验要求学生模拟PV操作同步机构的实现,模拟进程的并发执行,了解进程并发执行时同步机构的作用。

三、实习题目

模拟P、V操作实现同步机构,且用P、V操作解决生产者——消费者问题。

[提示]:

(1)P、V操作同步机构,由P操作原语和V操作原语组成,它们的定义如下:

P操作原语P(s):

将信号量s减去1,若结果小于0,则执行原语的进程被置成等待信号量s的状态。

V操作原语V(s):

将信号量s加1,若结果不大于0,则释放一个等待信号量s的进程。

这两条原语是如下的两个过程:

procedurep(vars:

semaphore);

begins:

=s-1;

ifs<0thenW(s)

end{p}

procedurev(vars:

semaphore);

egins:

=s+1;

ifs0thenR(s)

end{v}

其中W(s)表示将调用过程的进程置为等待信号量s的状态;R(s)表示释放一个等待信号量s的进程。

在系统初始化时应把semaphore定义为某个类型,为简单起见,在模拟实验中可把上述的semaphore直接改成integer。

(2)生产者——消费者问题。

假定有一个生产者和一个消费者,生产者每次生产一件产品,并把生产的产品存入共享缓冲器以供消费者取走使用。

消费者每次从缓冲器内取出一件产品去消费。

禁止生产者将产品放入已满的缓冲器内,禁止消费者从空缓冲器内以产品。

假定缓冲器内可同时存放10件产品。

那么,用PV操作来实现生产者和消费者之间的同步,生产者和消费者两个进程的程序如下:

B:

array[0..9]ofproducts;

s1,s2;semaphore;

s1:

=10,s2:

=0;

IN,out:

integer;

IN:

=0;out:

=0;

cobegin

procedureproducer;

c:

products;

begin

L1:

Produce(c);

P(s1);

B[IN]:

=C;

IN:

=(IN+1)mod10;

V(s2);

gotoL1

end;

procedureconsumer;

x:

products;

begin

L2:

p(s2);

x:

=B[out];

out:

=(out+1)mod10;

v(s1);

consume(x);

gotoL2

end;

coend.

其中的semaphore和products是预先定义的两个类型,在模拟实现中semaphore用integer代替,products可用integer或char等代替。

(3)进程控制块PCB。

为了记录进程执行时的情况,以及进程让出处理器后的状态,断点等信息,每个进程都有一个进程控制块PCB。

在模拟实验中,假设进程控制块的结构如图2-1。

其中进程的状态有:

运行态、就绪态、等待态和完成态。

当进程处于等待态时,在进程控制块PCB中要说明进程等待原因(在模拟实验中进程等待原因是为等待信号量s1或s2);当进程处于等待态或就绪态时,PCB中保留了断点信息,一旦进程再度占有处理器则就从断点位置继续运行;当进程处于完成状态,表示进程执行结束。

进程名

状态

等待原因

断点

图2-1进程控制块结构

(4)处理器的模拟。

计算机硬件提供了一组机器指令,处理器的主要职责是解释执行机器指令。

为了模拟生产者和消费者进程的并发执行,我们必须模拟一组指令和处理职能。

模拟的一组指令见图2-2,其中每条指令的功能由一个过程来实现。

用变量PC来模拟“指令计数器”,假设模拟的指令长度为1,每执行一条模拟指令后,PC加1,提出下一条指令地址。

使用模拟的指令,可把生产者和消费者进程的程序表示为图2-3的形式。

定义两个一维数组PA[0..4]和SA[0..4],每一个PA[i]存放生产者程序中的一条模拟指令执行的入口地址;每个SA[i]存放消费者程序中的一条模拟指令执行的入口地址。

于是模拟处理器执行一条指令的过程为:

取出PC之值,按PA[PC]或SA[PC]得模拟指令执行的入口地址,将PC之值加1,转向由入口地址确定的相应的过程执行。

(5)程序设计

本实验中的程序由三部分组成:

初始化程序、处理器调度程序、模拟处理器指令执行程序。

各部分程序的功能及相互间的关系由图2-4至图2-7指出。

模拟的指令

功能

p(s)

执行P操作原语

v(s)

执行V操作原语

put

B[IN]:

=product;IN:

=(IN+1)mod10

GET

x:

=B[out];out:

=(out+1)mod10

produce

输入一个字符放入C中

consume

打印或显示x中的字符

GOTOL

PC:

=L

NOP

空操作

图2-2模拟的处理器指令

序号

生产者程序

消费者程序

0

produce

p(s2)

1

p(s1)

GET

2

PUT

v(s1)

3

v(s2)

consume

4

goto0

goto0

图2-3生产者和消费者程序

·初始化程序:

模拟实验的程序从初始化程序入口启动,初始化工作包括对信号量s1、s2赋初值,对生产者、消费者进程的PCB初始化。

初始化后转向处理调度程序,其流程如图2-4。

图2-4初始化流程

·处理器调度程序:

在计算机系统中,进程并发执行时,任一进程占用处理器执行完一条指令后就有可能被打断而让出处理器由其它进程运行。

故在模拟系统中也类似处理,每当执行一条模拟的指令后,保护当前进程的现场,让它成为非运行态,由处理器调度程序按随机数再选择一个就绪进程占用处理器运行。

处理器调度程序流程见图12-5。

图12-5模拟处理器调度

图2-6模拟处理器指令执行

·模拟处理器指令执行程序:

按“指令计数器”PC之值执行指定的指令,且PC加1指向下一条指令。

模拟处理器指令执行程序的流程图见图2-6和图2-7。

(a)模拟P(s)(b)模拟V(s)

图2-7模拟PV操作的执行

 另外,为了使得模拟程序有一个结束条件,在图2-6中附加了“生产者运行结束”的条件判断,模拟时可以采用人工选择的方法实现。

2-7给出了P(s)和V(s)模拟指令执行过程的流程。

其它模拟指令的执行过程已在图2-2中指出。

实习三处理器调度

一、实习内容

选择一个调度算法,实现处理器调度。

二、实习目的

在采用多道程序设计的系统中,往往若干个进程同时处于就绪状态。

当就绪进程个数大于处理器数时,就必须依照某种策略来决定哪些进程优先占有处理器。

本实习模拟在单处理器情况下的处理器调度,加深了解处理器调度的工作。

三、实习题目

设计一个按优先数调度算法实现处理器调度的程序。

[提示]:

(1)假定系统有5个进程,每个进程用一个PCB来代表。

PCB的格式为:

进程名、指针、要求运行时间、优先数、状态。

进程名——P1~P5。

指针——按优先数的大小把5个进程连成队列,用指针指出下一个进程PCB的首地址。

要求运行时间——假设进程需要运行的单位时间数。

优先数——赋予进程的优先数,调度时总是选取优先数大的进程先执行。

状态——假设两种状态,就绪,用R表示,和结束,用E表示。

初始状态都为就绪状态。

(2)每次运行之前,为每个进程任意确定它的“优先数”和“要求运行时间”。

(3)处理器总是选队首进程运行。

采用动态改变优先数的办法,进程每运行1次,优先数减1,要求运行时间减1。

(4)进程运行一次后,若要求运行时间不等于0,则将它加入队列,否则,将状态改为“结束”,退出队列。

(5)若就绪队列为空,结束,否则,重复(3)。

实习四主存空间的分配和回收

一、实习内容

主存储器空间的分配和回收。

二、实习目的

通过本实习帮助理解在不同的存储管理方式下应怎样进行存储空间的分配和回收。

三、实习题目

在可变分区管理方式下采用首次适应算法实现主存分配和回收。

[提示]:

(1)可变分区方式是按作业需要的主存空间大小来分割分区的。

当要装入一个作业时,根据作业需要的主存容量查看是否有足够的空闲空间,若有,则按需分配,否则,作业无法装入。

假定内存大小为128K,初始状态见右图。

空闲区说明表格式为:

起始地址——指出空闲区的起始地址;长度——一个连续空闲区的长度;状态——有两种状态,一种是“未分配”状态,另一种是“空表目”状态。

(2)采用首次适应算法分配。

运行时,输入一系列分配请求和回收请求。

实习五磁盘存储空间的分配和回收

一、实习内容

模拟磁盘空闲空间的表示方法,以及模拟实现磁盘空间的分配和回收。

二、实习目的

磁盘初始化时把磁盘存储空间分成许多块(扇区),这些空间可以被多个用户共享。

用户作业在执行期间常常要在磁盘上建立文件或把已经建立在磁盘上的文件删去,这就涉及到磁盘存储空间的分配和回收。

一个文件存放到磁盘上,可以组织成顺序文件(连续文件)、链接文件(串联文件)、索引文件等,因此,磁盘存储空间的分配有两种方式,一种是分配连续的存储空间,另一种是可以分配不连续的存储空间。

怎样有效地管理磁盘存储空间是操作系统应解决的一个重要问题,通过本实习使学生掌握磁盘存储空间的分配和回收算法。

三、实习题目

模拟UNIX系统的空闲块成组链接法,实现磁盘存储空间的管理。

[提示]:

(1)假定磁盘存储空间已被划分成长度为n的等长块,共有M块可供使用。

UNIX系统中采用空闲块成组链接的方法来管理磁盘存储空间,将磁盘中的每N个空闲块(N

0

空闲块数k

1

空闲块号1

2

空闲块号2

K

空闲块号k

当第一项内容为“0”时,则第二项起指出的空闲块是最后一组。

(2)现模拟UNIX系统的空闲块成组链接,假定共有8块可供使用,每3块为一组,则空闲块成组链接的初始状态为:

开始时,空闲块号是顺序排列的,但经若干次的分配和归还操作后,空闲块的链接就未必按序排列了。

用二维数组A:

array[0…M-1]ofarray[0…n-1]来模拟管理磁盘空间,用A[i]表示第I块,第0块A[0]作为专用块。

(3)成组链接的分组情况记录在磁盘物理块中,为了查找链接情况,必须把它们读入主存,故当磁盘初始化后,系统先将专用块内容复制到主存中。

定义一个数组MA存放专用块内容,即MA:

=A[0]。

申请一块磁盘空间时,查MA,从中找出空闲块号,当一组的空闲块只剩第一块时,则应把该块中指出的下一组的空闲块数和块号复制到专用块中,然后把该块分配给申请者。

当一组的空闲块分配完后则把专用块内容(下一组链接情况)复制到主存,再为申请者分配。

分配算法如下图。

采用成组链接的分配算法

(4)归还一块时给出归还的块号,叵当前组不满规定块数时,将归还块登记入该组;若当前组已满,则另建一新组,这时归还块作为新一组的第一块,应把主存中登记的一组链接情况MA复制到归还块中,然后在MA重新登记一个新组。

归还一块的算法如下图。

采用成组链接的回收算法

(5)设计分配和归还磁盘空间的程序,能显示或打印分配的磁盘空间的块号,在完成一次分配或归还后能显示或打印各空闲块组的情况(各组的空闲块数和块号)。

本实习省去了块号与物理地址之间的转换工作,而在实际的系统中必须进行块号与物理地址的转换工作。

(6)运行你所设计的程序,假定空闲块链接的初始状态如提示

(2),现先分配4块,再依次归还第2块和第6块。

把执行后分配到的块号依次显示或打印出来,且显示或打印空闲块组的情况。

在上次执行的基础上继续分配3块,然后归还第1块,再申请5块,显示或打印依次分配到的块号及空闲块组情况。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2