文档库 最新最全的文档下载
当前位置:文档库 › 操作系统指导书

操作系统指导书

操作系统指导书
操作系统指导书

操作系统实验(指导书)

实验一进程创建与控制

一、实验目的

1、为了更好的配合《操作系统》有关进程管理章节的教学

2、加深和巩固学生对于进程概念的理解,明确进程和程序的区别。

二、实验内容

1、编写程序可以模拟实现对进程的创建,对进程控制块进行初始化并输出相应变量的

值。

2、编写程序,通过该程序可以体现出进程从创建到撤销的各个状态。

三、实验要求

实验课时2学时。要求完成其中至少一个程序。

四、运行结果

五、参考程序

#include "stdio.h"

#define running 1 /*用running 表示进程处于运行态*/

#define aready 2 /*用aready表示进程处于就绪态*/

#define blocking 3 /*用blocking表示进程处于等待态*/

#define sometime 5 /*用sometime 表示时间片大小*/

#define n 10 /* 假定系统允许进程个数为10 */

struct

{

int name; /*进程标识符*/

int status; /*进程状态*/

int ax, bx, cx,dx; /*进程现场信息,通用寄存器内容*/

int pc; /*进程现场信息,程序计数器内容*/

int psw; /*进程现场信息,程序状态字寄存器内容*/

int next; /*下一个进程控制块的位置*/

}pcbarea[n]; /*定义模拟进程控制块区域的数组*/

int PSW,AX,BX,CX,DX,PC,TIME; /*模拟寄存器*/

int run; /*定义指向正在运行进程的进程控制块的指针*/

struct{int head;int tail;}ready; /*定义指向就绪队列的头指针head和尾指针tail*/

int block; /*定义指向等待队列的指针*/

int pfree; /*定义指向空闲进程控制块队列的指针*/

sheduling( )/*进程调度函数*/

{int i;if (ready.head==-1) /*空闲进程控制块队列为空,退出*/

{printf("无就绪进程\n");

return;}

i=ready.head; /*就绪队列头指针赋给i*/

ready.head=pcbarea[ready.head].next;/*就绪队列头指针后移*/

if(ready.head==-1)ready.tail=-1;/*就绪队列为空,修正尾指针ready.tail*/

pcbarea[i].status=running;/*修改进程控制块状态*/

TIME=sometime; /*设置相对时钟寄存器*//*恢复该进程现场信息:*/

run=i;

AX=pcbarea[run].ax;BX=pcbarea[run].bx;

CX=pcbarea[run].cx;DX=pcbarea[run].dx;PC=pcbarea[run].pc;PSW=pcbarea[run].psw;/*修改指向运行进程的指针*/

}

/*进程调度函数结束*/

create( int x)/*创建进程*/

{int i;

if(pfree ==-1) /*空闲进程控制块队列为空*/

{printf("无空闲进程控制块,进程创建失败\n");

return;}

i=pfree;/*取空闲进程控制块队列的第一个*/

pfree=pcbarea[pfree].next;/*pfree后移*//*填写该进程控制块内容:*/

pcbarea[i].name=x;pcbarea[i].status=aready;pcbarea[i].ax=x;pcbarea[i].bx=x;

pcbarea[i].cx=x;pcbarea[i].dx=x;

pcbarea[i].pc=x;pcbarea[i].psw=x;

if(ready.head!=-1){/*就绪队列不空时,挂入就绪队列方式*/

pcbarea[ready.tail].next=i;ready.tail=i;

pcbarea[ready.tail].next=-1;}

else{/*就绪队列空时,挂入就绪队列方式:*/

ready.head=i;

ready.tail=i;

pcbarea[ready.tail].next=-1;}} /*进程创建函数结束*/

main( ){/*系统初始化*/

int num, i, j;

run=ready.head=ready.tail=block=-1;

pfree=0;

for(j=0;j

pcbarea[j].next=j+1;

pcbarea[n-1].next=-1;

printf("输入进程编号(避免编号的冲突,以负数输入结束,最多可以创建10个进程):\n");

scanf("%d",&num);

while(num>0){create(num);

scanf("%d",&num);}

while(ready.head>=0)

{sheduling( );

if(run!=-1){printf("进程名进程状态寄存器内容:ax bx cx dx pc psw:\n");

printf("%4d%10d%3d%3d%3d%3d%3d%3d\n",pcbarea[run].name,pcbarea[run].status,pcbar ea[run].ax,pcbarea[run].bx,pcbarea[run].cx,pcbarea[run].dx,pcbarea[run].pc, pcbarea[run].psw); }}}/*main( )结束*/

实验二进程调度算法的实现

一、实验目的

1、为了更好的配合《操作系统》有关进程调度章节的教学。

2、加深和巩固学生对于进程调度的了解和掌握。

3、使学生通过本实验能够初步的了解和掌握进程调度的整个过程及常用算法。

4、提高学生的上机和编程过程中处理具体问题的能力

二、实验内容

1、学习进程调度的基本方法。

2、学习时间片轮转调度算法、先来先服务算法、最短作业优先算法。

3、计算出不同时间片是多进程调度的完成时间、周转时间。

给定进程A,B,C,D,E,每个进程的运转时间4,3,4,2,4,每个进程的到达时间1,2,3,4,5;

(1)进行时间片轮转调度算法的模拟;

(2)时间片q=1,轮转调度算法的模拟并计算周转时间、平均周转时间、带权周转时间。

(3)时间片q=4,轮转调度算法的模拟并计算周转时间、平均周转时间、带权周转时间。

4、按照一定的算法选取进程;

(1)5个进程各自运行所需要的时间及存储空间,即A,B,C,D,E,每个进程的运转时间4,3,5,2,4,每个进程的到达时间0,1,2,3,4;

(2)进行进程调度算法的模拟;

(3)按的原则进行调度;根据运行情况计算周转时间、平均周转时间、带权周转时间。

(4)按的原则进行调度;根据运行情况计算周转时间、平均周转时间、带权周转时间。

5、画出调度图或表。

三、实验要求

实验课时2学时。要求画出进程调度图或表,并比较算法的性能,算法至少编写完成

先来先服务。

四、运行结果

1.先来先服务算法

2.短作业优先

五、参考程序

先来先服务算法程序:

//结束输入使用# # # ,没有进行异常处理

#include

class pcb

{

public:

char name;

int cometime;

int runtime;

} ;

void main()

{

pcb p[10];

int workstart[10];

int workend[10];

int i=0;

char n;

int c;

int r;

int j;

cout<<"请输入进程"<

cin>>n>>c>>r;

while(n!='#')

{

p[i].name=n;p[i].cometime=c;p[i].runtime=r;

if(i==0)

{

workstart[i]=p[i].cometime;

workend[i]=p[i].runtime+p[i].cometime;

}

else

{

if(p[i].cometime>=workend[i-1])

{

workstart[i]=p[i].cometime ;

workend[i]=p[i].runtime+p[i].cometime;

}

else

{

workstart[i]=workend[i-1];

workend[i]=workend[i-1]+p[i].runtime ;

}

}

i++;

cout<<"请输入进程"<

cin>>n>>c>>r;

}

cout<<"先来先服务的调度顺序为:"<

for(j=0;j

cout<<"进程名:"<

}

实验三存储器管理

一、实验目的

1、为了更好的配合《操作系统》有关存储器管理章节的教学。

2、加深和巩固学生对动态分区存储管理方式的了解和掌握。

3、提高学生的上机和编程过程中处理具体问题的能力。

二、实验内容

设计一个模拟存储器管理程序,该程序可完成对存储空间的管理,具有动态分配内存,回收内存,以及拼接存储空间的功能。

已知:内存空间共有10000个存储单元,实现动态分区分配。在实现可变分区分配存储管理方式时,要解决以下问题。

1、分区分配中所用到的数据结构。

空闲分区表,空闲分区链。

2、分区分配算法。

首次适应算法,循环首次适应算法,最佳适应算法。

3、分区的分配与回收操作。

分配的流程。P142

回收的流程。

4、回收后空闲空间的拼接。

三、实验要求

实验课时2学时。要求至少选用一种分配算法,完成分区的分配与回收,并在实验报告上画出测试数据的分配与回收情况图。回收后空闲空间的拼接可视课时的多少选作。要求输出内存使用情况和空闲情况。

内存情况输出的格式为:

num address status size

num 内存分区号

address 该分区的首地址

status 如果已分配为1,空闲为0

size 分区长度

也可以做出窗口界面,演示分配回收的过程。

四、运行界面

五、参考程序首次适应算法:源程序:

#include #define null 0

#define begin 0

操作系统实验指导书

#define v 10000

#define k 100

#define x 100

struct tt

{struct tt *front,*next;

long addr;

long cd;

int s;

};

struct tt a[x],*f,*c,*n,*head,*q;

long result,temp,longc,u_size;

int i,f0,choice,j,f1;

fenpei()

{ c=head;

result=-1;

while ( (c!=null) && (result==-1) )

{ longc=c->cd;

if ((longcs==1) )

c=c->next;

else{ longc=longc-u_size;

if (longc<=k)

{ c->s=1;

result=c->addr;

}

else

{ f=c;

q=head;

while (q->cd!=0)

q++;

if (n!=null)

n->front=c;

c->front=f;

c->next=f->next;

c->addr=f->addr+u_size;

c->cd=f->cd-u_size;

c->s=0;

f->cd=u_size;

f->s=1;

f->next=c;

result=f->addr;

}

}

}

}

huishou()

{ c=head;

f0=0;

while ( (c!=null) && (f0==0) )

{ if ((c->addr==temp)&&(c->addr!=0))

{f0++; }

else c=c->next;

}

if (c!=null)

{ f=c->front;

if (f->s==0)

{ n=c->next;

if (n!=null)

f->next=c->next;

c->cd=0;

c=f;

}

n=c->next;

if ((n!=null) && (n->s==0))

{ f=n->next;

if (f!=null)

f->front=c;

c->cd=c->cd+n->cd;

c->next=n->next;

n->cd=0;

}

c->s=0;

printf("huishou success\n");

printf("\n");

}

if (f0==0)

printf("address error\n");

printf("\n");

}

pinjie()

{ c=head;

f1=0;

while (f1==0)

{

while (c->s==1)

c=c->next;

操作系统实验指导书

n=c->next;

if (n==null)

f1++;

while ((n!=null)&&(n->s==1))

n=n->next;

if (n!=null)

{ f->next=c->next;

c->next->front=f;

f=f->next;

while (f!=n)

{ f->addr-=c->cd;

f=f->next;}

n->addr-=c->cd;

n->cd+=c->cd;

c->cd=0;

c=n;

}

else f1++;

}

}

main()

{

for(i=0; i

a[i].cd=0;

head=a;

head->front=head;

head->next=null;

操作系统实验指导书

head->cd=v;

head->s=0;

printf("if first use,please choice 0\n");

printf("and the first will be used to system,can't huishou\n");

printf("\n");

for(j=0;j<100;j++)

{ printf("please input your choice\n");

printf(" 0:fenpei\n");

printf(" 1:huishou\n ");

printf(" 2:pinjie\n");

printf(" 3:exit\n");

scanf("%d",&choice);

if(choice==3)

break;

if (choice==0)

{ printf("plesae input size\n");

scanf("%d",&u_size);

fenpei();

if (result==-1)

{printf("fail\n");

printf("\n");}

else

{ printf("success, %d\n",result);

printf("\n");}

}

else { if(choice==1)

{printf("please input address\n");

scanf("%d",&temp);

huishou();}

pinjie();

}

c=head;

i=1;

printf("num, addr, status, size\n");

while (c!=null)

{ printf("%d, %d, ",i,c->addr);

printf("%d, %d\n",c->s,c->cd);

c=c->next;

i++;

} }

printf("\n");

printf("\n");

}

实验四文件管理

一、实验目的

1、为了更好的配合《操作系统》有关各章节的教学

2、加深和巩固学生对于操作系统的了解和掌握

3、提高学生的上机和编程过程中处理具体问题的能力

二、实验内容

使用位示图实现文件存储空间管理:分配盘块、回收盘块、盘块一致性检查。初始化位示图后,按需要分配盘块、回收盘块并完成盘块一致性检查。分别调用盘块分配函数,盘块回收函数,盘块一致性检查函数并打印显示分配情况。盘块一致性检查可选作。

三、运行结果

四、源程序指导

#include

#include

#include

#define max 6

#define N max*max

struct block

{

int blocknumber;

int indexblock[100];

}block[100];

struct file

{

操作系统实验指导书

char name[10];

int length;

}file[100];

int bitvector[max][max];

int fat[N+1];

int m=0;

void allocate(struct file f) //文件分配

{

file[m]=f;

int k=0,l=0;

for(int i=0;i

{

for(int j=0;j

{

if(bitvector[i][j]==0&&k

{

bitvector[i][j]=1;

block[m].indexblock[l]=i*max+j+1;

fat[i*max+j+1]=1;

l++;k++;

}

else if(bitvector[i][j]==0&&k==file[m].length)

{

bitvector[i][j]=1;

block[m].blocknumber=i*max+j+1;

fat[i*max+j+1]=1;

k++;

}

}

}

m++;

}

void free(struct file f) ;//空闲块的回收

void printcontents();//显示文件内

void main()

{

cout<<"1.对已分配盘块采用索引方式管理"<

<<"2.空闲盘块采用位示图管理"<

<<"3.实现分配,回收"<

for(int i=0;i<100;i++)

{

file[i].length=0;

}//所有文件初始化

操作系统实验指导书

for(i=0;i

{

fat[N]=0;

}

cout<<"初始化位示图..."<

for( i=0;i

{

for(int j=0;j

bitvector[i][j]=0;

}

printbitvector();

int temp;

while(1)

{

cout<<"1.创建文件"<

<

cin>>temp;

struct file f;

if(temp==1)

{

cout<<"请输入文件名:"<

cin>>https://www.wendangku.net/doc/0c8414355.html,;

cout<<"请输入文件长度:"<

cin>>f.length;

int n=0;

for(int i=0;i

{

for(int j=0;j

{

if(bitvector[i][j]==0)

n++;

}

}//当前空闲盘块数

if(n>=f.length+1)

allocate(f);

else

cout<<"磁盘空间不足,分配失败"<

}

else if(temp==2)

{

cout<<"请输入文件名:"<

cin>>https://www.wendangku.net/doc/0c8414355.html,;

free(f);

操作系统实验指导书

}

else if(temp==3)

{

printbitvector();

}

else if(temp==4)

{

printcontents();

}

else

exit(0);

}

}

实验五设备的分配与回收

一、实验目的

1、为了更好的配合《操作系统》有关设备管理章节的教学。

2、加深和巩固学生对设备管理方式的了解和掌握。

3、提高学生的上机和编程过程中处理具体问题的能力。

二、实验内容

已知:进程i的四个属性,状态(0等待,1正在进行,2程序结束。)所用设备(0,1,2,3),总时间(1,2...),剩余时间(1,2...)。请求使用的控制器cr有两个,通道ch有两个,状态0为空闲,1为忙。初始状态都为0。

按设备分配与回收算法,进行管理,并打印当前进程属性列表。

三、运行结果

四、源程序指导

#include

static int q[100][6]; /*q[i][4]进程i的四个属性,状态(0等待,1正在进行,2程序结束。)

所用设备(0,1,2,3),总时间(1,2...),剩余时间(1,2...),

用的控制器cr和通道ch*/

static int a[4]; /*a[0],a[1],a[2],a[3]指示设备0,1,2,3的状态,

0为空闲,1为忙。初始状态都为0*/

操作系统课程设计

课程设计报告 2015~2016学年第一学期 操作系统综合实践课程设计 实习类别课程设计 学生姓名李旋 专业软件工程 学号130521105 指导教师崔广才、祝勇 学院计算机科学技术学院 二〇一六年一月

- 1 -

- 2 -

一、概述 一个目录文件是由目录项组成的。每个目录项包含16B,一个辅存磁盘块(512B)包含32个目录项。在目录项中,第1、2字节为相应文件的外存i节点号,是该文件的内部标识;后14B为文件名,是该文件的外部标识。所以,文件目录项记录了文件内、外部标识的对照关系。根据文件名可以找到辅存i节点号,由此便得到该文件的所有者、存取权、文件数据的地址健在等信息。UNIX 的存储介质以512B为单位划分为块,从0开始直到最大容量并顺序加以编号就成了一个文件卷,也叫文件系统。UNIX中的文件系统磁盘存储区分配图如下: 本次课程设计是要实现一个简单的模拟Linux文件系统。我们在内存中开辟一个虚拟磁盘空间(20MB)作为文件存储器,并将该虚拟文件系统保存到磁盘上(以一个文件的形式),以便下次可以再将它恢复到内存的虚拟磁盘空间中。文件存储空间的管理可采用位示图方法。 二、设计的基本概念和原理 2.1 设计任务 多用户、多级目录结构文件系统的设计与实现。可以实现下列几条命令login 用户登录 logout 退出当前用户 dir 列文件目录 creat 创建文件 delete 删除文件 open 打开文件 close 关闭文件 - 3 -

read 读文件 write 写文件 mkdir 创建目录 ch 改变文件目录 rd 删除目录树 format 格式化文件系统 Exit 退出文件系统 2.2设计要求 1) 多用户:usr1,usr2,usr3,……,usr8 (1-8个用户) 2) 多级目录:可有多级子目录; 3) 具有login (用户登录)4) 系统初始化(建文件卷、提供登录模块) 5) 文件的创建:create (用命令行来实现)6) 文件的打开:open 7) 文件的读:read8) 文件的写:write 9) 文件关闭:close10) 删除文件:delete 11) 创建目录(建立子目录):mkdir12) 改变当前目录:cd 13) 列出文件目录:dir14) 退出:logout 新增加的功能: 15) 删除目录树:rd 16) 格式化文件系统:format 2.3算法的总体思想 - 4 -

《操作系统原理》信管专业实验指导书资料

《操作系统原理》实验指导书 班级:_______________ 学号:_______________ 姓名:_______________ 山东建筑大学管理工程学院 信息管理与信息系统教研室

目录 引言 (1) 实验题目一 (2) 实验题目二 (4) 实验题目三 (6) 实验题目四 (8) 实验题目五 (10) 实验题目六 (12)

引言 操作系统是信息管理与信息系统专业一门重要的专业理论课程,了解和掌握操作系统的基本概念、功能和实现原理,对认识整个计算机系统的工作原理十分重要。 操作系统实验是操作系统课程的一个重要组成部分,通过试验环节的锻炼使同学们不仅能够对以前的所学过的基础知识加以巩固,同时能够通过上机实验,对操作系统的抽象理论知识加以理解,最终达到融会贯通的目的,因此,实验环节是同学们理解、掌握操作系统基本理论的一个重要环节。 本实验指导书,根据教材中的重点内容设定了相应的实验题目,由于实验课程的学时有限,我们规定了必做题目和选做题目,其中必做题目必须在规定的上机学时中完成,必须有相应的预习报告和实验报告。选做题目是针对有能力或感兴趣的同学利用课余时间或上机学时的剩余时间完成。

实验题目一:模拟进程创建、终止、阻塞、唤醒原语 一、题目类型:必做题目。 二、实验目的:通过设计并调试创建、终止、阻塞、唤醒原语功能,有助于对操作系统中进 程控制功能的理解,掌握操作系统模块的设计方法和工作原理。 三、实验环境: 1、硬件:PC 机及其兼容机。 2、软件:Windows OS ,Turbo C 或C++、VC++、https://www.wendangku.net/doc/0c8414355.html, 、Java 等。 四、实验内容: 1、设计创建、终止、阻塞、唤醒原语功能函数。 2、设计主函数,采用菜单结构(参见后面给出的流程图)。 3、设计“显示队列”函数,目的能将就绪、阻塞队列中的进程信息显示在屏幕上,以供 随时查看各队列中进程的变化情况。 五、实验要求: 1、进程PCB 中应包含以下内容: 2、系统总体结构: 其中: 进程名用P1,P2标识。 优先级及运行时间:为实验题目二做准备。 状态为:就绪、运行、阻塞,三种基本状态。 指针:指向下一个PCB 。

操作系统课设计指导书

《操作系统》课程设计指导书 Course Work of Operating System 本指导书中包含5个题目,每个小组选择一个题目。小组人数最多为4人,也可以1个人为1组。 上机时间安排为:每周二7~8节在软件实验室。总学时为“两周”,分散到整个学期完成。在2004年12月31日(周五)之前上交课程设计报告并拷贝电子文档及源程序到615的机器上。 每个题目的实验提示是互相启发的。另外实验提示只是提示,你可以有自己的实现方法和理解,但必须在报告中清楚地说明。 你在实现复杂原理时可以也必须做简化假设。数据结构以你自设的数组或链表居多。 题目一页面置换算法的模拟实现和计算命中率 一、课程设计目的 通过请求页式管理方式中页面置换算法的模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理中的页面置换算法。 二、课程设计内容 模拟实现OPT、FIFO和LRU算法,并计算命中率。 命中率= 1- 缺页率。 三、实验要求及提示 1、首先用随机数生成函数产生“指令”序列(实际上是产生指令将访问的地址序列),然后将指令序列变换成相应的页地址流,再计算不同算法下的命中率。 2、通过随机数产生一个指令序列,共产生400条。其中50%的指令是顺序执行的(另外50%就是非顺序),且25%的指令分布在前半部地址空间,25%的指令分布在后半部地址空间。具体的产生方法是: 1)在[0,399]之间随机选取一起点m,记录到指令地址流数组中; 2)所谓“顺序执行一条指令”,即执行地址为m+1的指令,把m+1记录下来;

3)在前半部地址空间,即[0,m+1]中随机选一数,作为新指令地址m’; 4)顺序执行一条指令,其地址为m’+1; 5)在后半部地址空间[m’+2,399]中随机选一数,作为新指令地址; 6)重复步骤1~5,直到产生400个指令地址。 3、将指令地址流变换成页地址(页号)流,简化假设为: 1)页面大小为1K; 2)用户虚存容量为40K; 3)用户内存容量为4页到40页; 4)用户虚存中,每K存放10条指令,所以那400条指令访问地址所对应的页地址(页号)流为: 指令访问地址为[0,9]的指令为第0页;指令访问地址为[10,19]的指令为第1 页;……。按这种方式,把400条指令组织进“40页”。 4、循环运行,使用户内存容量从4到40。计算每个内存容量下不同页面置换算法的命中率。输出结果可以为: [4] OPT:FIFO:LRU: [5] OPT:FIFO:LRU: ………… [39] OPT:FIFO:LRU: [40] OPT:FIFO:LRU: 题目二UNIX成组链接策略的模拟实现 一、课程设计目的 通过模拟UNIX成组链接策略的实现,理解UNIX管理磁盘空闲空间的方法。 二、课程设计内容 实现UNIX管理磁盘空闲空间的方法——成组链接。具体策略参见教材第六章。 (UNIX的成组链接例:莱昂氏UNIX源代码.pdf文件的第162页alloc(dev)和第163页free(dev,bno)过程。另外文件系统数据结构定义在第134页struct filsys。)

操作系统课设

课程设计报告课程名称:计算机操作系统 专业班级: 学号: 姓名: 指导教师: 报告日期: 计算机科学与技术学院

目录

1 实验目的 ·掌握Linux操作系统的使用方法; ·了解Linux系统内核代码结构; ·掌握实例操作系统的实现方法; 2 实验环境 本次课程设计采用的操作系统环境是windows8、Ubuntu双系统,Ubuntu系统版本号为14.04,内核版本号为linux 3.13.0;采用的编程环境为CodeBlocks IDE和QtCreator。 3 实验内容 3.1 实验一 掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux下的编程环境。 (1)编写一个C程序,其内容为实现文件拷贝的功能。 (2)编写一个C程序,其内容为分窗口同时显示三个并发进程的运行结果。要求用到Linux下的图形库(GTK/Qt)。 3.2 实验二 掌握系统调用的实现过程,通过编译内核方法,增加一个新的系统调用,另编写一个应用程序,调用新增加的系统调用。实现的功能是:文件拷贝。 3.3 实验三 掌握增加设备驱动程序的方法。通过模块方法,增加一个新的设备驱动程序,其功能可以简单。(实现字符设备的驱动) 3.4 实验四(选做) 了解和掌握/proc文件系统的特点和使用方法 (1)了解/proc文件的特点和使用方法; (2)监控系统状态,显示系统中若干部件使用状态; (3)用图形界面实现系统监控状态; 3.5 实验五(选做) 设计并实现一个模拟的文件系统。

多用户的多级目录的文件系统设计。多用户、多级目录、login(用户登录)、系统初始化(建文件卷,提供登录模块)、文件的创建、文件的打开、文件的读写、文件关闭、删除文件、创建目录(建立子目录)、改变当前目录、列出文件目录、退出。 4 设计与实现 4.1 实验一 4.1.1 实验要求 掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux下的编程环境。 4.1.2 具体实现 本实验内容是用CodeBlocks IDE实现的,该软件整合了函数库和编译器,因此使用起来非常方便。 (1)编写一个C程序,其内容为实现文件拷贝的功能。 在windows操作系统上实现的文件拷贝功能一般使用fopen、fread、fwrite三个来自标准C函数库的函数执行对文件的打开、读、写操作,而本次实验要求使用Linux 系统的系统调用open、read、write实现上述三个操作。 用到的主要头文件如下: stdio.h——标准输入输出头文件 string.h——字符串处理相关头文件 unistd.h——Linux系统调用头文件,比如read、write fcntl.h——包含open系统调用 errno.h——包含一些调试错误时用到的变量 具体实现思路: 打开两个文件(分别是源文件和目标文件,可以是任意字符流形式存储的文件,包括文本文件、照片等),调用read函数读取源文件的内容,将read的返回值作为while循环的判断条件,当返回值大于0(即还未读取完毕源文件中的内容)时,调用write执行向目标文件写的操作,否则跳出循环,表示源文件已经被拷贝到目标文件,然后调用close关闭源文件和目标文件。 代码编写完成后,在CodeBlocks上编译运行即可。程序运行之前,桌面上只有“教程.docx”,运行之后,桌面上新建了“教程副本.docx”,并且“教程.docx”中的内容被复制到了“教程副本.docx”,程序运行结果如下所示:

操作系统实验指导书

实验前准备工作:Linux的安装 一. 实验目的 1.掌握Red Hat Linux操作系统的安装步骤。 2.掌握启动、关闭操作系统的方法。 二.实验准备 Red Hat Linux操作系统既可以单独安装在一个计算机系统中;也可以与其它操作系统如windows操作系统一起安装在一个计算机系统中,但注意在安装时要先装windows操作系统,再装Linux;或者利用主机的资源(如CPU、内存、硬盘),模拟出的一台新计算机。然后在虚拟机中安装windows、Linux等系统,使用虚拟机对主机的要求比较高,建议内存512MB以上。 1.硬盘分区 理解硬盘、分区的名称: ?IDE硬盘名称: /dev/hda, /dev/hdb …… ?SCSI硬盘名称:/dev/sda, /dev/sdb …… 分区名称:/dev/hda1, /dev/hda2 …… 一个硬盘最多分4个主分区和扩展分区,扩展分区最多只能建1个,扩展分区不能直接放数据,还必须建立逻辑分区才能使用。 安装Red Hat Linux至少需要两个硬盘分区:一个或多个―Linux native‖类型的分区,一个―Linux swap‖类型的分区。即使将Linux安装在一个专门的硬盘上,或者一台不安装其他操作系统的计算机上,仍然需要为其创建分区。在安装过程中,会提示用户为Red Hat Linux 创建分区,必须保证有足够的硬盘空间来创建分区。推荐以下分区配置: (1)一个根分区 (2)一个交换分区 (3)一个/usr分区 (4)一个/home分区。 2. 安装类型 Red Hat Linux提供了三种类型的安装: (1)客户机类型安装(workstation) (2)服务器类型安装(server system) (3)自定义类型的安装(custom system) 三.实验内容 请在虚拟机中安装Linux。 1. 安装虚拟机软件 常用的虚拟机软件有Vmware和VPC,如果主机性能较好,还能同时虚拟出多台虚拟机;一台虚拟机对应主机上的一个目录,删除该目录就删除了虚拟机;该目录拷到其它电脑

操作系统课程设计指导书复习课程

《计算机操作系统》课程设计指导书 一、课程设计的目的和意义 本课程设计是学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。 二、总体要求: 1、课程设计总时间为五天。 2、课程设计地点是实验楼616机房。 3、一个班分若干个组,每组2人,个别可以3人组(自由组合)课程设计题目由任课 老师指定; 4、人员分工:组长1人、组员1到2人。组长可由小组人员自行选出或自荐,组长的 职责是负责与老师交流,合理安排分配本组的各项任务,任务有:系统总体设计、编码、测试、写文档。 三、设计要求: 本课程设计以Linux操作系统为实验平台,进行源代码分析和修改或应用。通过该课程设计,使学生掌握Linux操作系统各部分结构、实现机理和各种典型算法;或使学生进行网络管理和系统管理,系统地了解操作系统的设计和实现思路,运用内核开发环境实现对内核的修改,培养学生的系统设计能力,并了解操作系统的发展动向和趋势。。 要求如下: 1、要充分认识课程设计对培养自己的重要性,认真做好设计前的各项准备工作。 2、既要虚心接受老师的指导,又要充分发挥主观能动性。结合课题,独立思考,努力钻研,勤于实践,勇于创新。 3、独立按时完成规定的工作任务,不得弄虚作假,不准抄袭他人内容,否则成绩以不及格计。 4、课程设计期间,无故缺席按旷课处理;缺席时间达四分之一以上者,其成绩按不及格处理。 5、在设计过程中,要严格要求自己,树立严肃、严密、严谨的科学态度,必须按时、按质、按量完成课程设计。 6、小组成员之间,分工明确,但要保持联系畅通,密切合作,培养良好的互相帮助和团队协作精神。 四、成绩评定 1、同学平时表现占总成绩30%,若迟到扣5分,无故旷课每次扣10 分,二次不 到者总成绩以0分计。 2、课程设计报告占总成绩70%,在规定时间内上交。 3、严禁抄袭,复制设计内容,查出后相关同学设计成绩以零分处理。 五、设计内容(除特别注明外,每组2人,先自由组合,并选定1个题目,再由老师作适当调整)

操作系统实验-实验指导书

3 《操作系统》实验指导书 实验学时:16 适用专业:计算机科学与技术,软件技术 操作系统上机实验 一、实验目的 主要目的是配合操作系统课程的学习,模拟实现操作系统的功能,有助于对操作系统的理解,同时加强学生对系统设计、程序编写、代码调试、软件开发过程基本技能的掌握。 上机作业应作到:覆盖讲授的所有原理内容,使得学生通过上机实践对原理有更深的理解;每一道上机作业,都要求学生必须完成一个完整的、可运行的小型软件,籍此提升基本的软件开发技能。 二、实验要求 (1)上机实验之前,学生应当为每次上机的内容作好充分准备。对每次上机需要完成的题目进行认真的分析,选择合适的算法,列出实验具体步骤,写出符合题目要求的程序清单,准备出调试程序使用的数据,以便提高上机实验的效率。 (2)按照实验目的和实验内容以及思考题的要求进行上机操作。录入程序,编译调试,反复修改,直到使用要求的算法,使程序正常运行,得出正确的输出结果为止。 (3)上机作业要求提交原始代码、设计文档和可运行程序。以完整的作业包的形式提交。实验报告应当包括:实验题目,程序清单,运行结果,所选取的算法及其优缺点以及通过上机取得了哪些经验。程序清单要求格式规范,注意加注释(包含关键

字、方法、变量等),在每个模块前加注释,注释不得少于20% 三、实验内容 上机实验包括:操作系统使用、SHELL编程、进程管理、进程调度、死锁处理、存储管理、文件系统几个部分。 实验1: SHELL编程 实验目的 熟悉linux常用命令,为以后的实验打下良好基础; 熟悉vi编辑器的使用; 了解Shell程序的语法规则,能编写简单的Shell程序。 实验内容 1、使用常用的Linux命令,主要包括如下命令: date, mail, write, man, ls, cat, mv, grep, tail, head, cp, wc, pwd, who等; 2、使用vi编辑器编辑文件,熟悉vi编辑器的各种操作模式和常用命令。 3、使用vi编辑器编写一段Shell程序,取名为mycal,实现与Linux中cal命令类 似的功能,当输入: $mycal [月份名] 年时,屏幕输出指定的年月的月历。例如: $mycal October 2009 屏幕输出2009年10月的月历。 注:参数可以是英文或者是数字。 实验2:观察Linux的行为 实验目的 了解Linux proc文件系统; 加深对Linux系统的理解; 增强Linux系统管理知识。 实验内容 在Linux中,proc文件系统提供了一套在用户态检查内核状态和系统特征的机制。proc文件系统将进程的地址空间、系统的硬件信息、系统相关机制(中断、I/O)等内容全部设置为虚拟的Linux文件,为访问系统内核数据的操作提供接口。 1、以root登录系统,并进入/proc目录,键入ls命令,查看/proc下的内容,同时 查看每个文件的读写权限。 2、根据/proc下的信息,回答:CPU的类型和型号、当前Linux版本、从启动到当 前时刻所经过的时间、当前内存状态。

操作系统课设

课 程 设 计 20 ——20 学年 第 学期 课程名称 操作系统 学 院 计算机科学与技术学院 专 业 班 级 姓 名 指导教师

课程设计任务书 题目: 系统调用 初始条件: 学习了高级语言程序设计、汇编语言、数据结构、计算机组成原理课程,掌握了一种计算机高级语言。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写 等具体要求) 学习在Linux中产生一个系统调用以及怎样通过往Linux内核中增加一个新函数从而在该内核空间中实现对用户空间的读写。这个函数的功能是返回当前 的系统时间。 实验条件要求:每人一台Linux主机且有超级用户权限。 时间安排: 指导教师签名: 20 年月日系主任(或责任教师)签名:年月日

目录 1.简介 (1) 1.1实验环境 (1) 1.2 Linux系统及内核 (1) 1.3 Linux系统调用 (2) 2.实验原理及详细步骤流程 (3) 2.1.实验原理和思路 (3) 2.2.详细步骤 (3) 2.2.1.环境搭建及前期准备 (3) 2.2.2.内核文件修改 (4) 2.2.3.编译并切换内核 (5) 2.2.4.测试新系统调用 (6) 3.过程分析及实验结果 (7) 2.1 过程分析 (7) 2.2.运行结果 (9) 4.调试记录 (9) 5.自我评价与总结 (10) 6.参考文献 (11) 评分表 (12)

一.简介 1.1.实验环境 1.2. Linux系统及内核 Linux是一种开源电脑操作系统内核。它是一个用C语言写成,符合POSIX标准的类Unix操作系统。Linux是一个一体化内核(monolithic kernel)系统。"内核"指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。 操作系统的主要功能是为应用程序的运行创建良好的环境,为了达到这个目的,Linux内核提供一系列具备预定功能的多内核函数,通过一组称为系统调用(system call)的接口呈现给用户。系统调用把应用程序的请求传给Linux内核,调用相应的的Linux内核函数完成所需的处理,将处理结果返回给应用程序,如果没有系统调用和内核函数,用户将不能编写大型应用程序。

操作系统课程设计任务指导书-Read

《操作系统课程设计任务指导书》 山东建筑大学 计算机科学与技术学院 二○○七年十二月

基本情况 课程名称:操作系统课程设计 相关课程:操作系统、数据结构 适合专业:信息与计算技术 设计周数:1周 学分: 2学分 开课学期:第 7 学期 开课单位:计算机科学与技术学院 一、课程设计的教学目的和任务 1、使学生进一步理解和掌握操作系统课程中所学到的各种基本算法。 2、使学生深入理解经典操作系统各组成部分的基本原理。 3、使学生掌握使用各种计算机资料和有关参考资料,提高学生进行程序设计的基本能力。 4、使学生能用系统的观点和软件开发一般规范进行软件开发,培养软件工作者所应具备 的科学的工作方法和作风。 二、课程设计的主要内容 1.分析。根据设计题目的要求,充分地分析和理解问题。 2.设计。根据题目所涉及的操作系统内容,认真设计解题算法。参照平时课内所学知识,按照软件工程方法,确定设计方案。 3.编码。把设计的结果进一步求精为程序设计语言程序。同时加入一些注解和断言,使程序中逻辑概念清楚。 4.调试与测试。根据题目内容,设计测试用例,使之能够充分证明课程设计完成的正确性。 5.总结分析。总结设计中所遇到的问题以及所得到的经验,分析程序中是否存在可以完善、提高的部分,做出总结。 6.编写课程设计报告。 三、课程设计的基本教学要求 1、巩固和加深对操作系统课程基本知识的理解,提高对所涉及的算法的掌握。 2、通过实际课程设计,掌握简单软件的分析方法和设计方法。 四、课程设计报告的规范 课程设计报告要求规范书写。应当包括如下部分: 1、操作系统课程设计任务书 2、问题定义与分析 3、概要设计及流程图 4、问题实现及代码 5、测试

Linux操作系统实验指导书

《Linux系统管理与维护》实验指导书 实验一初识Linux操作系统 一实验名称 初识Linux操作系统 二实验目的与要求 掌握Linux的启动、登录与注销。 三实验内容 1.以root用户和普通用户两种不同身份登录Linux,说出其登录后得差异。 2.图形模式下的注销、重启与关机。 3.学会在虚拟机上登录和注销Linux。 四操作步骤与结果分析 五问题与建议

实验二Linux的桌面应用 一实验名称 Linux的桌面应用 二实验目的与要求 熟悉Linux操作系统桌面环境 熟悉Linux文件系统及常用的操作 掌握Linux下使用外部存储设备、网络设备 掌握Linux下安装应用程序 三实验内容 1.查看GNOME提供的“应用程序”、“位置”或者“系统”菜单,运行其中的应用程 序和工具。 2.查看Linux文件目录结构,学会常用的文件目录操作,如复制、粘贴、移动、删 除、更名、创建文档、创建文件夹等。 3.练习在Linux下使用光盘和U盘。 4.学会网络配置,使计算机能够进行网络浏览等操作。 5.学会在Linux下安装新的应用软件。 四操作步骤与结果分析 五问题与建议

实验三Linux操作系统的安装 一实验名称 Linux操作系统的安装 二实验目的与要求 掌握安装Linux操作系统 三实验内容 1.通过学习《项目五Linux操作系统的安装及远程服务》的内容,学会如何安装Linux。 环境:windows 系统、vmware虚拟机、Redhat Linux镜像光盘。 通过安装向导将安装分为两步:1、基本安装,2、配置及具体安装。 在第一阶段重点如何分区,在第二阶段重点掌握如何设置密码及安装桌面环境。四操作步骤与结果分析 五问题与建议

《计算机操作系统》课程设计指导书

《计算机操作系统》课程设计指导书 河海大学文天学院 2013年10月

《计算机操作系统》课程设计说明 计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。计算机操作系统课程设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。要求学生在指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux 用户界面;掌握操作系统中进程管理概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想,了解设备管理的功能,了解文件系统的功能。同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。 为了收到良好的实验效果,编写了这本课程设计指导书。在指导书中,每一个课程设计任务按照该课程设计大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式引导学生有目的、有方向地完成课程设计任务,得出实验结果。任课教师在课程设计前对课程设计的任务进行一定的分析和讲解,要求学生按照课程设计任务的具体要求提前做准备工作,如:查找资料等,做到有准备地上机。进行课程设计时,指导教师应检查学生的预习情况,并对设计过程给予积极指导。课程设计完毕后,学生应根据课程设计情况,实验数据及结果,完成课程设计报告,由班长统一收齐后交指导教师审阅评定。

操作系统课程设计

操作系统课程设计 Prepared on 22 November 2020

湖南科技大学计算机科学与工程学院 操作系统课程设计报告 学号: ******** 姓名:* * 班级: *** 指导老师: *** 完成时间: ****.**.** 目录 实验一 Windows进程管理 实验二 Linux进程管理 实验三互斥与同步 实验四银行家算法的模拟与实现 实验五内存管理 实验六磁盘调度 实验七进程间通信 实验一 Windows进程管理 一、实验目的 1)学会使用 VC 编写基本的 Win32 Consol Application(控制台应用程序)。 2)通过创建进程、观察正在运行的进程和终止进程的程序设计和调试操作,进一步熟悉操作系统的进程概念,理解 Windows 进程的“一生”。

3)通过阅读和分析实验程序,学习创建进程、观察进程、终止进程以及父子进程同步的基本程序设计方法。 二、实验内容和步骤 (1)编写基本的 Win32 Consol Application 步骤1:登录进入 Windows 系统,启动 VC++ 。 步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择 “Win32 ConsolApplication”,然后在“Project name”处输入工程名,在“Location” 处输入工程目录。创建一个新的控制台应用程序工程。 步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”,然后在“File” 处输入 C/C++源程序的文件名。 步骤4:将清单 1-1 所示的程序清单复制到新创建的 C/C++源程序中。编译成可执行文件。 步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows“命令提示符”窗口,然后进入工程目录中的 debug 子目录,执行编译好的可 (2)创建进程 本实验显示了创建子进程的基本框架。该程序只是再一次地启动自身,显示它的系统进程 ID和它在进程列表中的位置。 步骤1:创建一个“Win32 Consol Application”工程,然后拷贝清单 1-2 中的程序编译成可执行文件。 步骤2:在“命令提示符”窗口运行步骤 1 中生成的可执行文件,列出运行结果。按下ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属性。 步骤3:在“命令提示符”窗口加入参数重新运行生成的可执行文件,列出运行结果。按下ctrl+alt+del,调用 windows 的任务管理器,记录进程相关的行为属性。 (3)父子进程的简单通信及终止进程

操作系统实验指导书

操作系统 实验指导书 实验一基本操作命令实践 2 实验二、Linux基础命令实验 5 实验三、linux进程管理实验 8 实验四、Windows进程管理实验 9 实验五、进程间通信机制 11 实验六、处理机调度实践 14 实验七、内存管理机制实验 31 实验八、Linux内存管理实验 34 理学院物理与电子科学系 王小妮编写

实验一基本操作命令实践 一、实验目的 1、配合操作系统课程的学习,加深操作系统提供命令接口的功能的理解。 二、实验内容 1、操作实践最常见的操作系统管理的一些命令。 三、实验步骤 在操作系统Windows XP或2000及Windows Server 2003下,操作以下命令。 1、最基本、最常用的测试物理网络连通性的命令ping,ping命令用于确定本地主机是否与网络上另外一台主机连通。 格式:ping IP 地址命令选项 例如:ping 192.168.0.8 –t –l 2048 –n 8 解释: -t表示一直发包,直到被用户用Ctrl+C中断为止。 -l表示发送的数据包的大小。本例为2048 -n表示发几个就停止发包。本例为8个。 2、查看DNS、IP地址、MAC地址的命令ipconfig。 格式:ipconfig 命令选项 例如:ipconfig -all 解释: -all选项会看到Windows IP Configuration和Ethernet Adapter信息,包括IP地址、DNS及MAC地址。 3、查看DNS与IP地址命令nslookup,它主要用于解析一个域名所对应的IP地址。 格式:nslookup 主机域名 例如:nslookup 解释:查看缺省DNS服务器及其IP地址。 4、网络信使命令net send。 格式:net send 计算机名/IP地址传播的消息 例如:net send 210.30.103.121 hello 解释:发送消息“hello”给IP地址为210.30.103.121的机器。 停止网络信使服务的命令为net stop messenger,开始网络信使服务的命令为net start messenger.

43316341操作系统课程设计指导书113301-113302

设计题目1 进程调度算法 1.1 设计目的 进程管理是操作系统中的重要功能,用来创建进程、撤消进程、实现进程状态转换,它提供了在可运行的进程之间复用CPU的方法。在进程管理中,进程调度是核心,因为在采用多道程序设计的系统中,往往有若干个进程同时处于就绪状态,当就绪进程个数大于处理器数目时,就必须依照某种策略决定哪些进程优先占用处理器。本实验模拟在单处理器情况下的进程调度,目的是加深对进程调度工作的理解,掌握不同调度算法的优缺点。 下面回顾一下进程管理的相关内容。 1.1.1 进程控制块 为了管理和控制进程,系统在创建每一个进程时,都为其开辟一个专用的存储区,用以随时记录它在系统中的动态特性。而当一个进程被撤消时,系统就收回分配给它的存储区。通常,把这一存储区称为该进程的“进程控制块”(Process Control Block)。 由于PCB是随着进程的创建而建立,随着进程的撤消而取消的,因此系统是通过PCB 来“感知”一个个进程的,PCB是进程存在的唯一标志。 随操作系统的不同,PCB的格式、大小以及内容也不尽相同。一般地,在PCB中大致应包括如下4方面的信息。 ·标识信息:进程名等。 ·说明信息:进程状态、程序存放位置、数据存放位置等。 ·现场信息:通用寄存器内容、控制寄存器内容、断点地址等。 ·管理信息:进程优先数、队列指针等。 1.1.2 进程控制块队列 在多道程序设计环境里,同时会创建多个进程。当计算机系统只有一个CPU时,每次只能让一个进程运行,其他的进程或处于就绪状态,或处于阻塞状态。为了对这些进程进行管理,操作系统要做三件事。 (1)把处于相同状态的进程的PCB,通过各自的队列指针链接在一起,形成一个个队列。通常有运行队列、就绪队列、阻塞队列。 (2)为每一个队列设立一个队列头指针,它总是指向排在队列之首的进程的PCB。 (3)排在队尾的进程的PCB,它的“队列指针”项内容应该为“NULL”,或一个特殊的符号,以表示这是该队的队尾PCB。 在单CPU系统中,任何时刻都只有一个进程处于运行状态,因此运行队列中只能有一个PCB;系统中所有处于就绪状态的进程的PCB排成一队,称其为“就绪队列”。一般地,就绪队列中会有多个进程的PCB排在里面,它们形成处理机分配的候选对象。如果就绪队列里没有PCB存在,则称该队列为空;所有处于阻塞状态进程的PCB,应该根据阻塞的原因进行排队,每一个都称为一个“阻塞队列”。比如等待磁盘输入/输出进程的PCB排成一个队列,等待打印机输出进程的PCB排成一个队列等。所以,系统中可以有多个阻塞队列,每个阻塞队列中可以有多个进程的PCB,也可以为空。

华科操作系统课设报告

华中科技大学操作系统课程设计实验报告 专业:计算机科学与技术 班级:1101 姓名:许阳 学号:U201014241

一、实验目的 掌握Linux操作系统的使用方法; 了解Linux系统内核代码结构; 掌握实例操作系统的实现方法。 二、实验要求 1、掌握Linux操作系统的使用方法,包括键盘命令、系统调用;掌握在Linux 下的编程环境。 ●编一个C程序,其内容为实现文件拷贝的功能; ●编一个C程序,其内容为分窗口同时显示三个并发进程的运行结 果。要求用到Linux下的图形库。 2、掌握系统调用的实现过程,通过编译内核方法,增加一个新的系统调用。 另编写一个应用程序,调用新增加的系统调用。 实现的功能是:文件拷贝; 3、掌握增加设备驱动程序的方法。通过模块方法,增加一个新的设备驱动 程序,其功能可以简单。 实现字符设备的驱动; 4、了解和掌握/proc文件系统的特点和使用方法 ●了解/proc文件的特点和使用方法 ●监控系统状态,显示系统中若干部件使用情况 ●用图形界面实现系统监控状态。 5、设计并实现一个模拟的文件系统(选作) 三、实验一 1、编一个C程序,其内容为实现文件拷贝的功能 要实现文件拷贝功能,主要用到的函数是open、write、read。 以前在windows下写C语言打开文件常用的fopen,此时不能用,因为fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不 同的内核api ;所以应该直接使用linux中的系统函数open。 主要用到的头文件: Unistd.h \\包含了许多Linux系统服务的函数原型,如:read、write Fcntl.h \\定义了很多宏和open,fcntl函数原型 Stdio.h \\标准输入输出头文件 sys/types.h \\此头文件包含适当时应使用的多个基本派生类型sys/stat.h \\包含了获取文件属性的一些函数 errno.h \\用于调试错误代码是所需要的一些errno变量 string.h \\包含了处理字符串的一些函数

《计算机操作系统》实验指导书

《计算机操作系统》 实验指导书 (适合于计算机科学与技术专业) 湖南工业大学计算机与通信学院 二O一四年十月

前言 计算机操作系统是计算机科学与技术专业的主要专业基础课程,其实践性、应用性很强。实践教学环节是必不可少的一个重要环节。计算机操作系统的实验目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握操作系统的基本原理,加深对操作系统基本方法的理解,加深对课堂知识的理解,为学生综合运用所学知识,在Linux环境下调用一些常用的函数编写功能较简单的程序来实现操作系统的基本方法、并在实践应用方面打下一定基础。要求学生在实验指导教师的帮助下自行完成各个操作环节,并能实现且达到举一反三的目的,完成一个实验解决一类问题。要求学生能够全面、深入理解和熟练掌握所学内容,并能够用其分析、设计和解答类似问题;对此能够较好地理解和掌握,并且能够进行简单分析和判断;能够熟练使用Linux用户界面;掌握操作系统中进程的概念和控制方法;了解进程的并发,进程之间的通信方式,了解虚拟存储管理的基本思想。同时培养学生进行分析问题、解决问题的能力;培养学生完成实验分析、实验方法、实验操作与测试、实验过程的观察、理解和归纳能力。 为了收到良好的实验效果,编写了这本实验指导书。在指导书中,每一个实验均按照该课程实验大纲的要求编写,力求紧扣理论知识点、突出设计方法、明确设计思路,通过多种形式完成实验任务,最终引导学生有目的、有方向地完成实验任务,得出实验结果。任课教师在实验前对实验任务进行一定的分析和讲解,要求学生按照每一个实验的具体要求提前完成准备工作,如:查找资料、设计程序、完成程序、写出预习报告等,做到有准备地上机。进行实验时,指导教师应检查学生的预习情况,并对调试过程给予积极指导。实验完毕后,学生应根据实验数据及结果,完成实验报告,由学习委员统一收齐后交指导教师审阅评定。 实验成绩考核: 实验成绩占计算机操作系统课程总评成绩的20%。指导教师每次实验对学生进行出勤考核,对实验效果作记录,并及时批改实验报告,综合评定每一次的实验成绩,在学期终了以平均成绩作为该生的实验成绩。有以下情形之一者,实验成绩为不及格: 1.迟到、早退、无故缺勤总共3次及以上者; 2.未按时完成实验达3次及以上者; 3.缺交实验报告2次及以上者。

操作系统课程设计指导书

操作系统课程设计 指导书

操作系统课程设计指导书 李晓东编 电子与信息工程学院计算机系 -9

一、课程设计的目的和意义 本课程设计是学生在学完了《操作系统》课程后,培养学生程序设计能力的一个重要教学环节。课程设计为学生提供了一个动手、动脑并独立实践的机会,有助于学生将教材的理论知识和实践相结合,从而锻炼学生分析问题、解决问题的能力,提高学生实际编写程序的能力,为学生学习计算机专业的后续课程打下良好基础。 本课程设计要求对操作系统的分析以加深对计算机硬件结构和系统软件的认识,初步掌握操作系统组成模块和应用接口的使用方法,提高进行工程设计和系统分析的能力,为毕业设计和以后的工程实践打下良好的基础。 本课程设计的主要目的: 1.熟悉并巩固《操作系统》的基本概念和基本理论,加强对操作系统有关原理的理解; 2.培养学生自主学习、独立思考的能力,学会查找资料并善于分析资料的能力; 3.培养学生严谨的工作作风,提倡互相学习培养团队精神; 4.提高学生独立设计、独立调试程序的能力; 5.初步养成良好的系统软件分析和设计能力,形成良好的编程风格。 二、本课程设计有关要求

基本要求: 1、巩固和加深对操作系统原理的理解,提高综合运用本课程 所学知识的能力。 2、培养学生选用参考书,查阅手册及文献资料的能力。培养 独立思考、深入研究、分析问题、解决问题以及团队协作能力。 3、经过实际操作系统的分析设计、编程调试,掌握系统软件 的分析方法和工程设计方法。 4、能够按要求编写课程设计报告书,能正确阐述设计和实验 结果、正确绘制系统和程序框图。 5、经过课程设计,培养学生严谨的科学态度,严肃认真的工 作作风,和团队协作精神。 具体要求: 1.认真阅读本课程设计指导书,明确课程设计的目的、意义和要求; 2.根据要求完成课程设计的系统开发和调试任务,提供可运行的课程设计系统,参加上机面试答辩。 3.根据学校有关格式要求,完成本课程设计的课程设计说明书。(必须绘制系统工作原理图及算法流程图) 重点: 本设计的重点是要求根据任务要求,确定操作系统有关算法并加以实现,注重实际应用能力的培养。

操作系统课程设计报告

操作系统课程设计实验报告 实验名称:进程控制 姓名/学号: 一、实验目的 学习、理解和掌握Linux与windows的进行控制系统调用的功能,熟悉主要的几个系统调用命令的格式和如何利用系统调用命令进行编程。通过学习,理解如何创建一个进程、改变进程执行的程序、进程和线程终止以及父子进程的同步等,从而提高对进程和线程控制系统调用的编程能力。 二、实验内容 设计并实现Unix的“time”命令。“mytime”命令通过命令行参数接受要运行的程序,创建一个独立的进程来运行该程序,并记录程序运行的时间。 三、实验环境 CPU: Inter ×2 2.10GHz RAM: 3.00GB Windows 7 旗舰版 Linux Ubuntu 10.04 编译: VS2010 四、程序设计与实现 4.1进程控制系统的调用 4.1.1 windows进程控制调用程序中使用的数据结构及主要符号说明 SYSTEMTIME starttime,endtime; //进程开始时间和结束时间 PROCESS_INFORMATION pi //该结构返回有关新进程及 //其主线程的信息 STARTUPINFO si //该结构用于指定新进程的主窗口特性4.1.2 linux进程控制调用程序中使用的数据结构及主要符号说明 struct timeval starttime,endtime //进程开始时间和结束时间 pid_t pid //进程标志符

4.2 程序流程图 图1 windows进程控制调用图2 linux进程控制调用程序运行流程图程序运行流程图 五、实验结果和分析 5.1 windows实验结果和分析

Linux操作系统实验指导书-4磁盘

《Linux操作系统》实验指导书

实验四 实验题目:磁盘管理 实验目的:熟悉并掌握磁盘管理常用命令;掌握利用虚拟机增加新硬盘,使用fdisk对磁盘分区操作;熟悉和了解磁盘显示信息内容;掌握使用卷组进行磁盘管理操作。 实验类型:综合 实验要求:必修 仪器设备:计算机 实验内容、方法、步骤: 1,使用GUI方式建立用户user01,具体属性如下: 登录shell为/bin/bash, 主目录/user01, 用户id: 520, 用户组grp01 2,使用修改配置文件方式建立用户user02,具体属性如下: 登录shell为/bin/bash, 主目录/user02, 用户id: 530, 用户组grp02 3,使用命令方式建立用户user03,具体属性如下: 登录shell为/bin/bash, 主目录/user03, 用户id: 530, 用户组grp03,附属组grp02 4,对user01,user02,user03,设置密码并登录。 一、磁盘和分区信息查看 1 fdisk查看当前系统硬盘及分区情况,在实验报告中说明当前的磁盘容量,分区数量、名称和大小,分区挂载点,分区使用方式(卷组名称、逻辑卷名称和大小)。 步骤:fdisk –l 2 显示当前文件系统使用情况,在实验报告中说明当前主要文件系统信息及使用情况(包括主要文件系统名称、挂载点、容量、使用量及百分比等)

步骤:df –h 二、添加新硬盘 内容:关闭虚拟机操作系统,添加2块硬盘,大小分别为5G和10G。开机后查看新硬盘是否成功添加。 步骤: 1 关机:init 0 2 添加新硬盘:右键单击虚拟机,选择setting(设置)。在Add中按照要求添加2块新硬盘(HardDisk) 3 开机后,打开终端。输入命令fdisk –l 或ls /dev/sd*查看新硬盘是否添加成功。 三、对新添加硬盘进行分区 内容: 1. 将第二块硬盘sdb分区(5G),要求分区1(sdb1)为主分区,类型为swap (82),大小为500M;分区2(sdb2)为主分区,类型为linux(83),大小为2G;分区3为扩展分区(sdb3),大小为sdb所有剩余容量;分区5为逻辑分区,类型为lvm(8e),大小为2G。分区后,查看sdb新添加所有分区,将截图添加到实验报告中。 2. 将第三块硬盘sdc分区(10G),要求分区1(sdc1)为扩展分区,大小为10G;

相关文档