惠州学院操作系统_实验五

惠州学院操作系统_实验五
惠州学院操作系统_实验五

实验五

1、实验目的

1.理解PCB

2.理解进程的并发执行

3.理解进程的FCFS、动态优先权和时间片轮转三种调度算法,并模拟实现这三

种算法

2、实验器材

微型计算机、fedora版本的Linux系统

3、实验容

PCB在本设计中的基本结构

Typedef struct node

{

Char name[10];/*进程标识符*/

Float prin;/*进程的优先级*/

Int round;/*进程轮转的时间片*/

Int needtime;/*进程还需要的cpu时间*/

Int waittime;/*进程进入系统后等待cpu的时间*/

Char state;/*进程的状态*/

Struct node *next;/*指针*/

}PCB

设计三个队列:就绪、完成、运行,其中运行队列中应该只有一个进程。

创建进程,就是用户输入进程的标识符和运行所需时间,系统为其生成一个PCB,存放进程的信息,将新生成的PCB插入就绪队列。进程任务结束,系统将其PCB插入完成队列,该进程就消亡。

任务1:动态优先权调度算法模拟:

优先权= 1 + 等待时间/需要服务时间----最高响应比优先

(1) 输入一批作业的进程标识和估计运行时间,将其PCB插入就绪队列

(2) 当就绪队列非空、CPU空闲时,计算出每个就绪进程的优先权

(3) 将优先权最高的进程从就绪队列移入运行队列,状态改为运行(模拟进程调度)

(4) 在屏幕上输出当前所有进程的状态和优先权信息(已完成进程不显示)

(5) 让运行进程执行足够的服务时间

(6) 将运行进程移入完成队列

(7) 提示可以输入新的作业,如果有新作业输入,则转向(1) ,否则转向(2)

(8) 如果就绪队列为空,则结束

程序框图如下:

程序源代码如下:

#include

#include

typedef struct node

{

char name[10]; //进程标识符

float prin; //进程的优先级

int round; //进程轮转的时间片

int needtime; //进程还需要当CPU时间

int waittime; //进程进入系统后等待当CPU的时间

char state; //进程当状态

struct node *next; //指针

} PCB;

PCB *readyQueue=NULL, *runningQueue=NULL,

*finishedQueue=NULL, *finishedQueueT ail=NULL,

*readyQueueT ail=NULL, pcbPool[10];

int poolSize = 0;

void createPro(); //根据进程标识和估计运行时间,将其PCB插入就绪队列

void readyQueueNotNull(); //当就绪队列非空、CPU空闲时,计算每个就绪进程当优先权

void insertRunningQueue(); //将优先权最高当进程从就绪队列移入运行队列,状态改为运行

void displayQueue(); //将所有非结束进程的状态和优先权信息显示在屏幕

void runPro(); //让运行进程执行足够的服务时间

void addNewPro(); //提示可以输入新的进程

int main(int argc, char const *argv[])

{

createPro();

while(readyQueue!=NULL)

{

readyQueueNotNull();

insertRunningQueue();

displayQueue();

runPro();

puts("");

addNewPro();

}

puts("Bye");

return 0;

}

void createPro()

{

char name[10];

char stop = 'y';

int needtime, i=0;

while(stop=='y')

{

//获取用户输入进程名

puts("Please input the process name: ");

scanf("%s", name);

strcpy(pcbPool[i].name, name);

//获取用户输入进程需要时间

puts("Please input the need of time: ");

scanf("%d", &needtime);

pcbPool[i].needtime = needtime;

pcbPool[i].state = '0';

pcbPool[i].next = NULL;

pcbPool[i].prin = 0.0f;

pcbPool[i].waittime = 0;

if(i==0)

{

readyQueue = &pcbPool[0];

readyQueueT ail = &pcbPool[0];

} else {

readyQueueT ail->next = &pcbPool[i];

readyQueueT ail = &pcbPool[i];

}

if(i++ > 9)

break;

puts("Do you want to input more process(y or n): ");

scanf("%s", &stop);

}

poolSize = i + 1;

}

void readyQueueNotNull()

{

PCB *pcb = readyQueue;

while(1)

{

pcb->prin = 1 + pcb->waittime / pcb->needtime;

if(pcb->next==NULL)

break;

else

pcb = pcb->next;

}

}

void insertRunningQueue()

{

PCB *currentPCB = readyQueue, *lastPCB = readyQueue,

*lastOfChosePCB = readyQueue, *chosePCB = readyQueue;

while(1)

{

//选择优先级最高的进程

if(currentPCB->prin < currentPCB->prin)

{

lastOfChosePCB = lastPCB;

chosePCB = currentPCB;

}

//判断就绪队列是否判断结束

if(currentPCB->next!=NULL)

{

lastPCB = currentPCB;

currentPCB = currentPCB->next;

} else {

break;

}

}

chosePCB->state = '1'; //将优先级最高的进程状态标识为运行时

runningQueue = chosePCB; //将优先级最高的进程从就绪队列移入运行队列

//将优先级最高的进程从就绪队列中移出

if(readyQueue==chosePCB)

readyQueue = readyQueue->next;

else

lastOfChosePCB->next = chosePCB->next;

}

void displayQueue()

{

if(readyQueue!=NULL)

{

PCB pcb = *readyQueue;

while(1)

{

printf("Process: %s State: %d prin: %f\n", https://www.360docs.net/doc/ad10017920.html,, pcb.state, pcb.prin);

if(pcb.next==NULL)

break;

else

pcb = *(pcb.next);

}

}

if(runningQueue!=NULL)

printf("Process: %s State: %d prin: %f\n", runningQueue->name, runningQueue->state, runningQueue->prin);

}

void runPro()

{

sleep(runningQueue->needtime);

if(readyQueue!=NULL)

{

PCB *pcb = readyQueue;

while(1)

{

pcb->waittime = pcb->waittime +

runningQueue->needtime;

if(pcb->next==NULL)

break;

else

pcb = pcb->next;

}

}

//将运行了需要时间的进程移入完成队列

if(finishedQueue==NULL)

{

finishedQueue = runningQueue;

finishedQueueTail = runningQueue;

finishedQueueTail->next = NULL;

} else {

finishedQueueTail->next = runningQueue;

finishedQueueTail = runningQueue;

}

//清理运行时队列

runningQueue->state = '0';

runningQueue = NULL;

}

void addNewPro()

{

char name[10];

char stop = 'y';

int needtime, i=poolSize-1;

puts("Do you want to input more process(y or n): ");

scanf("%s", &stop);

while(stop=='y')

{

//获取用户输入进程名

puts("Please input the process name: ");

scanf("%s", name);

strcpy(pcbPool[i].name, name);

//获取用户输入进程需要时间

puts("Please input the need of time: ");

scanf("%d", &needtime);

pcbPool[i].needtime = needtime;

pcbPool[i].state = '0';

pcbPool[i].next = NULL;

pcbPool[i].prin = 0.0f;

pcbPool[i].waittime = 0;

if(readyQueue==NULL)

{

readyQueue = &pcbPool[i];

readyQueueT ail = &pcbPool[i];

} else {

readyQueueT ail->next = &pcbPool[i];

readyQueueT ail = &pcbPool[i];

}

if(i++ > 9)

break;

else

puts("Do you want to input more process(y or n): ");

scanf("%s", &stop);

}

poolSize = i + 1;

}

程序运行截图如下:

任务2:时间片轮转调度算法模拟

输入一批作业的进程标识和估计运行时间,由其PCB组成就绪队列。时间片轮转调度,系统给就绪队列的第一个进程分配一个时间片,大小等于n (个时钟周期),再将它移入运行队列。注意,时间片的大小要比大多数进程的估计运行时间短。当时间片结束的时候,要将没有运行完的进程从运行队列移到就绪队列的末尾,再次进行调度。在每次调度时将所有进程的当前情况显示出来。

程序框图如下:

程序源代码如下:

#include

#include

typedef struct node

{

char name[10]; //进程标识符

float prin; //进程的优先级

int round; //进程轮转的时间片

int needtime; //进程还需要当CPU时间

int waittime; //进程进入系统后等待当CPU的时间

char state; //进程当状态

struct node *next; //指针

} PCB;

PCB *readyQueue=NULL, *runningQueue=NULL,

*finishedQueue=NULL, *finishedQueueT ail=NULL,

*readyQueueT ail=NULL, pcbPool[10];

int poolSize = 0;

void createPro(); //根据进程标识和估计运行时间,将其PCB 插入就绪队列

void insertRunningQueue(); //将优先权最高当进程从就绪队列移入运行队列,状态改为运行

void displayQueue(); //将所有非结束进程的状态和优先权信息显示在屏幕

void runPro(); //让运行进程执行足够的服务时间

int main(int argc, char const *argv[])

{

createPro();

while(readyQueue!=NULL)

{

insertRunningQueue();

displayQueue();

runPro();

puts("");

}

puts("Bye");

return 0;

}

void createPro()

{

char name[10];

char stop = 'y';

int needtime, i=0;

while(stop=='y')

{

//获取用户输入进程名

puts("Please input the process name: ");

scanf("%s", name);

strcpy(pcbPool[i].name, name);

//获取用户输入进程需要时间

puts("Please input the need of time: ");

scanf("%d", &needtime);

pcbPool[i].needtime = needtime;

pcbPool[i].state = '0';

pcbPool[i].next = NULL;

pcbPool[i].prin = 0.0f;

pcbPool[i].round = 1;

if(i==0)

{

readyQueue = &pcbPool[0];

readyQueueT ail = &pcbPool[0];

} else {

readyQueueT ail->next = &pcbPool[i];

readyQueueT ail = &pcbPool[i];

}

if(i++ > 9)

break;

puts("Do you want to input more process(y or n): ");

scanf("%s", &stop);

}

poolSize = i + 1;

}

void insertRunningQueue()

{

runningQueue = readyQueue;

readyQueue = readyQueue->next;

runningQueue->state = '1';

}

void displayQueue()

{

if(readyQueue!=NULL)

{

PCB pcb = *readyQueue;

while(1)

{

printf("Process: %s State: %d Needtime: %d\n", https://www.360docs.net/doc/ad10017920.html,, pcb.state, pcb.needtime);

if(pcb.next==NULL)

break;

else

pcb = *(pcb.next);

}

}

if(runningQueue!=NULL)

printf("Process: %s State: %d Needtime: %d\n", runningQueue->name, runningQueue->state,

runningQueue->needtime);

}

void runPro()

{

sleep(runningQueue->round); //模拟执行进程

//更新运行队列

runningQueue->needtime = runningQueue->needtime - runningQueue->round;

runningQueue->state = '0';

//将运行结束当进程移入完成队列

if(runningQueue->needtime<=0)

{

if(finishedQueue==NULL)

{

finishedQueue = runningQueue;

finishedQueueTail = runningQueue;

finishedQueueTail->next = NULL;

} else {

finishedQueueTail->next = runningQueue;

finishedQueueTail = runningQueue;

}

} else {

if(readyQueue==NULL)

{

readyQueue = runningQueue;

readyQueueT ail = runningQueue;

} else {

readyQueueT ail->next = runningQueue;

readyQueueT ail = runningQueue;

}

}

readyQueueT ail->next = NULL;

//清理运行时队列

runningQueue = NULL;

}

程序运行截图如下:

任务2:FCFS调度算法模拟

按一定的顺序输入一批作业的进程标识和估计运行时间,由其PCB按照进程标识输入的顺序组成就绪队列。当就绪队列非空、CPU空闲时,将就绪队列的第一个进程从就绪队列移入运行队列,状态改为运行。以后个步骤类似于2。

程序框图如下:

程序源代码如下:

#include

#include

typedef struct node

{

char name[10]; //进程标识符

float prin; //进程的优先级

int round; //进程轮转的时间片

int needtime; //进程还需要当CPU时间

int waittime; //进程进入系统后等待当CPU的时间

char state; //进程当状态

struct node *next; //指针

} PCB;

PCB *readyQueue=NULL, *runningQueue=NULL,

*finishedQueue=NULL, *finishedQueueT ail=NULL,

*readyQueueT ail=NULL, pcbPool[10];

int poolSize = 0;

void createPro(); //根据进程标识和估计运行时间,将其PCB 插入就绪队列

void insertRunningQueue(); //将优先权最高当进程从就绪队列移入运行队列,状态改为运行

void displayQueue(); //将所有非结束进程的状态和优先权信息显示在屏幕

void runPro(); //让运行进程执行足够的服务时间

void addNewPro(); //提示可以输入新的进程

int main(int argc, char const *argv[])

{

createPro();

while(readyQueue!=NULL)

{

insertRunningQueue();

displayQueue();

runPro();

puts("");

addNewPro();

}

puts("Bye");

return 0;

}

void createPro()

{

char name[10];

char stop = 'y';

int needtime, i=0;

while(stop=='y')

{

//获取用户输入进程名

puts("Please input the process name: ");

scanf("%s", name);

strcpy(pcbPool[i].name, name);

//获取用户输入进程需要时间

puts("Please input the need of time: ");

scanf("%d", &needtime);

pcbPool[i].needtime = needtime;

pcbPool[i].state = '0';

pcbPool[i].next = NULL;

pcbPool[i].prin = 0.0f;

pcbPool[i].waittime = 0;

if(i==0)

{

readyQueue = &pcbPool[0];

readyQueueT ail = &pcbPool[0];

} else {

readyQueueT ail->next = &pcbPool[i];

readyQueueT ail = &pcbPool[i];

}

if(i++ > 9)

break;

puts("Do you want to input more process(y or n): ");

scanf("%s", &stop);

}

poolSize = i + 1;

}

void insertRunningQueue()

{

runningQueue = readyQueue;

readyQueue = readyQueue->next;

runningQueue->state = '1';

}

void displayQueue()

{

if(readyQueue!=NULL)

{

PCB pcb = *readyQueue;

while(1)

{

printf("Process: %s State: %d Waittime: %d\n", https://www.360docs.net/doc/ad10017920.html,, pcb.state, pcb.waittime);

if(pcb.next==NULL)

break;

else

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

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

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

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

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

ACCESS期末试题终极版 (2)

一、填空题(2分/空,共20分) 1、Access的7种数据库对象分别有:表、_查询__、窗体、报表、页、宏和模块。 2、窗体中的数据主要来源于__数据表________和___查询_______。 3、VBA的三种流程控制结构是:顺序结构、___选择结构_____和___循环结构__。 4、Access中,查询不仅具有查找的功能,而且还具有计算功能。 5、在创建主/子窗体之前,必须设置___数据表、创建窗体__之间的关系,并且已创建两个窗体。 6、函数Mid("惠州学院计算机科学系",5,3)的结果是:___计算机____。 7、在Access中,自动启动宏的名称是___autoexec___。 二、选择题(2分/题、共30分) 1、Access数据库文件的扩展名是____A_________。 A..mdb B..xls C..ppt D..doc 2、下列关于报表的叙述中,正确的是____B_________。 A.报表只能输入数据 B.报表只能输出数据 C.报表可以输入和输出数据 D.报表不能输入和输出数据 3、要实现报表按某字段分组统计输出,需要设置的是________B__________。 A.报表页脚B.该字段的组页脚C.主体 D.页面页脚 4、数据库中有A、B两表,均有相同字段C,在两表中C字段都设为主键,当通过C字段建立两表关系时,则该关系为________A__________。 A.一对一B.一对多C.多对多 D.不能建立关系 5、在定义表中字段属性时,对要求输入相对固定格式的数据,例如电话号码034,应该定义该字段的_______C_______属性。 A.格式B.默认值C.输入掩码 D.有效性规则

操作系统原理-进程调度实验报告

一、实验目的 通过对进程调度算法的设计,深入理解进程调度的原理。 进程是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。 进程调度分配处理机,是控制协调进程对CPU的竞争,即按一定的调度算法从就绪队列中选中一个进程,把CPU的使用权交给被选中的进程。 进程通过定义一个进程控制块的数据结构(PCB)来表示;每个进程需要赋予进程ID、进程到达时间、进程需要运行的总时间的属性;在RR中,以1为时间片单位;运行时,输入若干个进程序列,按照时间片输出其执行序列。 二、实验环境 VC++6.0 三、实验内容 实现短进程优先调度算法(SPF)和时间片轮转调度算法(RR) [提示]: (1) 先来先服务(FCFS)调度算法 原理:每次调度是从就绪队列中,选择一个最先进入就绪队列的进程,把处理器分配给该进程,使之得到执行。该进程一旦占有了处理器,它就一直运行下去,直到该进程完成或因发生事件而阻塞,才退出处理器。 将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队列,并按照先来先服务的方式进行调度处理,是一种最普遍和最简单的方法。它优先考虑在系统中等待时间最长的作业,而不管要求运行时间的长短。 按照就绪进程进入就绪队列的先后次序进行调度,简单易实现,利于长进程,CPU繁忙型作业,不利于短进程,排队时间相对过长。 (2) 时间片轮转调度算法RR

原理:时间片轮转法主要用于进程调度。采用此算法的系统,其程序就绪队列往往按进程到达的时间来排序。进程调度按一定时间片(q)轮番运行各个进程. 进程按到达时间在就绪队列中排队,调度程序每次把CPU分配给就绪队列首进程使用一个时间片,运行完一个时间片释放CPU,排到就绪队列末尾参加下一轮调度,CPU分配给就绪队列的首进程。 固定时间片轮转法: 1 所有就绪进程按 FCFS 规则排队。 2 处理机总是分配给就绪队列的队首进程。 3 如果运行的进程用完时间片,则系统就把该进程送回就绪队列的队尾,重新排队。 4 因等待某事件而阻塞的进程送到阻塞队列。 5 系统把被唤醒的进程送到就绪队列的队尾。 可变时间片轮转法: 1 进程状态的转换方法同固定时间片轮转法。 2 响应时间固定,时间片的长短依据进程数量的多少由T = N × ( q + t )给出的关系调整。 3 根据进程优先级的高低进一步调整时间片,优先级越高的进程,分配的时间片越长。 多就绪队列轮转法: (3) 算法类型 (4)模拟程序可由两部分组成,先来先服务(FCFS)调度算法,时间片轮转。流程图如下:

惠州学院2013操作系统复习整理

操作系统复习课.by fain7 第一章 操作系统的目标----有效性、方便性、可扩充性、开放性 OS的发展过程----几类典型操作系统(多道批处理、分时、实时),每类操作系统的原理、特征及优缺点 多道批处理系统.原理: 20世纪60年代中期引入多道程序设计技术,由此形成了多道批处理系统。在该系统中,用户所提交的作业都先存放在外存上并排成一个队列,称为―后备队列‖;然后,由作业调度程序按一定的算法从后备队列中选择若干个作业调入内存,使它们共享CPU和系统中的各种资源。 优缺点:(1)资源利用率高(2)系统吞吐量大(3)平均周转时间长(4)无交互能力 分时系统.原理: 分时系统是指在一台主机上连接了多个带有显示器和键盘的终端,同时允许多个用户通过自己的终端,以交互方式使用计算机,共享主机中的资源。 特征(优缺点):(1)多路性(2)独立性(3)及时性(4)交互性 实时系统.原理: 实时系统是指系统能及时(或即时)响应外部事件的请求,在规定的时间内完成对该事件的处理,并控制所有实时任务协调一致的运行。需求:实时控制,实时信息处理。 特征(优缺点):(1)多路性(2)独立性(3)及时性(4)交互性(5)可靠性 OS的主要功能----资源管理器和用户接口 主要功能:处理机管理(进程控制、进程同步、进程通信、调度), 存储器管理(内存分配、内存保护、地址映射、内存扩充), 设备管理(缓冲管理、设备分配、设备处理), 文件管理(文件存储空间的管理、目录管理、文件的读/写管理和保护)。 操作系统和用户之间的接口: 用户接口:联机用户接口,脱机用户接口、图形用户接口 程序接口:该接口是为用户程序在执行中访问系统资源而设置的,它是由一组系统调用组成。第二章 什么是程序的并发执行,如何用前驱图描述程序(段)间的并发执行 程序并发执行:若干个程序段同时在系统中运行,这些程序的执行在时间上是重迭的,一个程序段的执行尚未结束,另一个程序段的执行已经开始,即使这种重迭是很小的,也称这几个程序段是并发执行的。(前驱图为平行四边形状)

操作系统原理实验-系统内存使用统计5

上海电力学院 计算机操作系统原理 实验报告 题目:动态链接库的建立与调用 院系:计算机科学与技术学院 专业年级:信息安全2010级 学生姓名:李鑫学号:20103277 同组姓名:无 2012年11 月28 日上海电力学院

实验报告 课程名称计算机操作系统原理实验项目线程的同步 姓名李鑫学号20103277 班级2010251班专业信息安全 同组人姓名无指导教师姓名徐曼实验日期2012/11/28 实验目的和要求: (l)了解Windows内存管理机制,理解页式存储管理技术。 (2)熟悉Windows内存管理基本数据结构。 (3)掌握Windows内存管理基本API的使用。 实验原理与内容 使用Windows系统提供的函数和数据结构显示系统存储空间的使用情况,当内存和虚拟存储空间变化时,观察系统显示变化情况。 实验平台与要求 能正确使用系统函数GlobalMemoryStatus()和数据结构MEMORYSTATUS了解系统内存和虚拟空间使用情况,会使用VirtualAlloc()函数和VirtualFree()函数分配和释放虚拟存储空间。 操作系统:Windows 2000或Windows XP 实验平台:Visual Studio C++ 6.0 实验步骤与记录 1、启动安装好的Visual C++ 6.0。 2、选择File->New,新建Win32 Console Application程序, 由于内存分配、释放及系统存储 空间使用情况均是Microsoft Windows操作系统的系统调用,因此选择An application that support MFC。单击确定按钮,完成本次创建。 3、创建一个支持MFC的工程,单击完成。

操作系统原理实验指导

操作系统实验指导 操作系统是计算机的最重要的系统软件,它在计算机中具有核心地位,其作用是对计算机系统资源进行统一的调度和管理,提供各种强有力的系统服务,为用户创造灵活而又方便的使用环境。一个精心设计的操作系统能极大地扩充计算机系统的功能,充分地发挥系统中各种资源的使用效率,提高系统工作的可靠性。 操作系统原理是计算机科学与技术专业的一门主要专业课程,它涉及计算机系统中各种软、硬资源管理的实现原理与方法,内容非常丰富,综合性非常强,并且还具有很强的实践性。只有把理论与实践紧密地结合起来,才能取得较好地学习效果。 培养计算机专业学生的系统程序设计能力,也是本课程的重要环节。系统程序要求结构清晰、合理、可读性好,有准确而简明的注释。通过实验可以培养学生正规系统程序设计能力。 本实验包括下列六个方面: 实验一几种操作系统的界面 实验二进程调度 实验三存储器管理 实验四存储器管理 实验五磁盘驱动调度 实验六文件管理系统 上述每个实验约需要10个学时。可根据实际情况选用。最好学生自己独立完成,如有困难,可参考一些示例,弄清每个实验的思想和实现方法,上机调试通过,不能完全照搬示例。 实验一几种操作系统的界面 1、目的与要求 目的:通过本实验,学生应熟悉1~2种操作系统的界面。在熟练使用的基础上,能了解各种命令和调用在系统中的大致工作过程,也就是通过操作系统的外部特性,逐步深入到操作系统的内在实质内容中去。 要求:能熟练地在1~2种操作系统环境下工作。学会使用各种命令,熟悉系统提供的各种功能。主动而有效地使用计算机。 熟悉系统实用程序的调用方法和各种系统调用模块的功能和用法。 2、示例 用1~2种操作系统提供的各种手段,建立、修改、编辑、编译和运行程序,最后撤消一个简单程序。要尽可能多地使用系统提供的各种命令和功能。 操作系统可为如下两种序列: (1)Windows 98或Windows 2000或Windows XP。 (2)Linux或Unix。 下面简要介绍一下Unix操作系统。 Unix是一个分时操作系统,面向用户的界面shell是一种命令程序设计语言,这种语言向用户提供了从低到高,从简单到复杂的三个层次的使用方式。它们是简单命令、组合命令和shell过程。 简单命令:Unix命令一律使用小写字母。 例如:ls -l 显示文件目录(长格式) rm 删除一个文件 cat 合并和传送文件、 cp 复制文件 mv 文件改名 cc 编译C语言源程序 组合命令:shell简单命令可以用管道算符|组合构成功能更强的命令。

惠州学院高数2期末考试

2019~2020学年第2学期期末考试 高等数学2 模拟试卷 适用班级:电子学院一年级本科理科学生 考试时间:120分钟 题 号 一 二 三 四 五 六 七 八 九 十 总分 评 分 阅卷人 签 名 一、计算题(本大题共5小题,每小题6分,共30分,解题须有过程。) 1、1、求方程x x y x y sin 1=+'的通解. 2、求方程x xe y y y 223=+'-''的通解. 3. 已知点(1,0,4)-和直线13112 x y z +-==在同一平面上,求该平面方程. 4. 设函数(2,)z f x y xy = +且函数(,) f u v 具有二阶连续偏导数,求,x z ??2z x y ???. 5、计算二重积分 D yd σ?? ,其中D 是由两条抛物线2,y x y x ==所围成的闭区域。 二、解答题(本大题共10小题,每小题7分,共100分,解题须有过程。). 1、计算 1 1 0sin y y dy x dx x ??。 2、求设函数2 2 2 40x y z z ++-=, 求(1) ,z z x y ????,并写出它的驻点坐标;(2)写出全微分(1,2) dz . 3. 如图,半径为6的半圆形钢板内有一个内接矩形,一边与半圆的直径MN 重合,利用拉格朗日乘数法求该矩形最大面积. 4.计算 dv y x )(2 2+Ω ???, 其中Ω是由yoz 面上曲线2=2y z 绕z 轴所形成的曲面与平面z =2所围成的闭区域. 5. (1)Γ为连接(1,0,2)A 与(2,1,1)B -的直线段,求Γ所在直线的参数方程; (2)计算积分? Γ zds . 6. 利用格林公式计算? +-L xydy x dx y xy y sin )sin (,其中L 为由直线1=+y x 和圆 122=+y x 围成的位于第一象限的闭区域的边界正向. 7、计算 .)()2(422dy y x dx xy x L +++? 其中L 为由点)0,0(O 到点)1,1(B 的曲线弧.2 sin x y π= 8、(1)求两抛物面2 2 2y x z +=与2 2 26y x z --=所围成立体在xoy 面上的投影区域;(2)计算所围成的立体的体积. 9. 判定级数11 (1)n n n ∞ -=-∑是否收敛?如果是收敛的, 是绝对收敛还是条件收 敛? 10. 对幂级数1234 1(1)234n n n x x x x x n -∞ =-=-+-+∑L (1)求出收敛域 (2)求出其和函数(3)求数项级数1 1(1)2 n n n n -∞ =-?∑的和.

实验指导(2015完全版)

操作系统上机实验指导书 (第一版) 闫大顺李晟编著 吴家培主审 计算机科学与工程学院 2014.8

操作系统实验指导 本课程是为《计算机操作系统》课所开的实验。计算机操作系统课程是一门实践性很强的技术课程,本课程实验的目的在于培养学生的实践能力,促进理论与实践的结合。要求学生通过上机编程,熟悉对操作系统原理,并熟练使用程序接口,并了解如何模拟操作系统原理的实现,从而加深对操作系统原理的领会,加深对操作系统实现方法的理解,与此同时使学生在程序设计方面也能够得到很大程度的提高。 实验的目的是使学生理论联系实际,提高学生系统理解与开发能力。这里所列的实验分为必做和选做。具体实验题的选择,不仅要考虑课程内容,而且要考虑学生目前的编程能力,要由浅入深。教师可通过运行示例或动画,帮助学生理解实验要求。学生应选择自己熟悉的语言与开发环境去完成实验。根据以往的教学经验,Delphi、C++ Builder,JBuilder由于提供了许多可重用的构件,易于学习、使用,VC++学习、使用困难较多。实验要求尽量在windows操作系统下,也可以在Linux下完成,由于多数没有专门学习Linux,在其平台下做试验比较困难。实验的硬件要求是能够支持VC++、Delphi、C++ Builder,JBuilder的微机即可。每个学生都独立在一台计算机上完成自己的实验内容,杜绝学生的抄袭。 实验报告的要求 1. 每位同学准备实验报告本,上机前作好充分的准备工作,预习本次实验的内容,事先熟悉与实验有关的软硬件环境。 2. 实验时遵守实验室的规章制度,爱护实验设备,对于实验设备出现的问题,要及时向指导老师汇报。 3. 提交实验文件格式:[班级][学号]_[实验题号].[扩展名] 例:计051班学号为03的学生第四个实验的文件名为:j05103_4.c 4. 最终的实验报告按照实验名称、实验目的、实验内容,实验过程(程序设计、实现与调试)、实验总结五部分书写,按时上交。实验总结是对于实验过程中出现的问题或疑惑的分析与思考。认真按照要求填写到实验报告纸上。

操作系统原理实验四

实验4 进程控制 1、实验目的 (1)通过对WindowsXP进行编程,来熟悉和了解系统。 (2)通过分析程序,来了解进程的创建、终止。 2、实验工具 (1)一台WindowsXP操作系统的计算机。 (2)计算机装有Microsoft Visual Studio C++6.0专业版或企业版。 3、预备知识 (3)·CreateProcess()调用:创建一个进程。 (4)·ExitProcess()调用:终止一个进程。 4、实验编程 (1)编程一利用CreateProcess()函数创建一个子进程并且装入画图程序(mspaint.exe)。阅读该程序,完成实验任务。源程序如下: # include < stdio.h > # include < windows.h > int main(VOID) ﹛STARTUPINFO si; PROCESS INFORMA TION pi; ZeroMemory(&si,sizeof(si)); Si.cb=sizeof(si); ZeroMemory(&pi,sizeof(pi)); if(!CreateProcess(NULL, “c: \ WINDOWS\system32\ mspaint.exe”, NULL, NULL, FALSE, 0, NULL, NULL, &si,&pi)) ﹛fprintf(stderr,”Creat Process Failed”); return—1; ﹜ WaitForSingleObject(pi.hProcess,INFINITE); Printf(“child Complete”); CloseHandle(pi.hProcess); CloseHandle(pi hThread); ﹜

惠州学院数字信号系统期末考试试卷

惠州学院期末考试试卷( A )卷 ( 2012 —— 2013 学年度第 2 学期) 考试科目 数字信号处理 考试时间 试题 一 二 三 四 五 六 七 八 九 总分 得分 得分 评卷人 一、 选择题:(每题2分,本大题共16分,单选题) 1. ()cos(0.125)x n n π=的基本周期是( ) (A) 0.125 (B) 0.25 (C) 8 (D) 16 2. 设方波1()0t s t t ττ? ≤ ??2 =?? > ??2 ,则下列不是其傅里叶变换的是( ) (A) 2j f j f e e j f πτ πτ π--- (B) sin 2f f τππ (C)222 j ft e dt τ πτ--? (D) sin f f τππ 3. 若实信号()x t 的频谱为()X f ,则下列说法中正确的是( ) (A) ()x t -的频谱为()X f - (B) 频谱()x f 的信号为()X t (C) ()()X f X f *=- (D) 0()x t t -的频谱为0 2()j ft e X f π 4. 有界输入-有界输出系统称为( ) (A)因果系统 (B)稳定系统 (C)可逆系统 (D)线性系统 5. 下列系统(其中y(n)是输出序列,x(n)是输入序列)中______属于线性系统。( ) (A)2 ()()y n x n = (B)()4()6y n x n =+ (C)()()y n nx n = (D)() ()x n y n e = 6. 已知[()]()DFT x n X k =,则下列说法正确的是 ( ) (A) 若()x n 是实数偶对称函数,则()X k 是虚数奇对称函数; (B) 若()x n 是实数奇对称函数,则()X k 是虚数奇对称函数; (C) 若()x n 是虚数偶对称函数,则()X k 是虚数奇对称函数; (D) 若()x n 是虚数奇对称函数,则()X k 是虚数奇对称函数;

操作系统原理实验五

实验五线程的同步 1、实验目的 (1)进一步掌握Windows系统环境下线程的创建与撤销。 (2)熟悉Windows系统提供的线程同步API。 (3)使用Windows系统提供的线程同步API解决实际问题。 2、实验准备知识:相关API函数介绍 ①等待对象 等待对象(wait functions)函数包括等待一个对象(WaitForSingleObject ())和等待多个对象(WaitForMultipleObject())两个API函数。 1)等待一个对象 WaitForSingleObject()用于等待一个对象。它等待的对象可以为以下对象 之一。 ·Change ontification:变化通知。 ·Console input: 控制台输入。 ·Event:事件。 ·Job:作业。 ·Mutex:互斥信号量。 ·Process:进程。 ·Semaphore:计数信号量。 ·Thread:线程。 ·Waitable timer:定时器。 原型: DWORD WaitForSingleObject( HANDLE hHandle, // 对象句柄 DWORD dwMilliseconds // 等待时间 ); 参数说明: (1)hHandle:等待对象的对象句柄。该对象句柄必须为SYNCHRONIZE访问。 (2)dwMilliseconds:等待时间,单位为ms。若该值为0,函数在测试对象的状态后立即返回,若为INFINITE,函数一直等待下去,直到接收到 一个信号将其唤醒,如表2-1所示。 返回值: 如果成功返回,其返回值说明是何种事件导致函数返回。

Static HANDLE hHandlel = NULL; DWORD dRes; dRes = WaitForSingleObject(hHandlel,10); //等待对象的句柄为hHandlel,等待时间为10ms 2)等待对个对象 WaitForMultiple()bject()在指定时间内等待多个对象,它等待的对象与 WaitForSingleObject()相同。 原型: DWORD WaitForMultipleObjects( DWORD nCount, //句柄数组中的句柄数 CONST HANDLE * lpHandles, //指向对象句柄数组的指针 BOOL fWaitAll, //等待类型 DWORD dwMilliseconds //等待时间 ); 参数说明: (1)nCount:由指针 * lpHandles指定的句柄数组中的句柄数,最大数是MAXIMUM WAIT OBJECTS。 (2)* lpHandles:指向对象句柄数组的指针。 (3)fWaitAll:等待类型。若为TRUE,当由lpHandles数组指定的所有对象被唤醒时函数返回;若为FALSE,当由lpHandles数组指定的某一个 对象被唤醒时函数返回,且由返回值说明是由于哪个对象引起的函数 返回。 (4)dwMilliseconds:等待时间,单位为ms。若该值为0,函数测试对象的状态后立即返回;若为INFINITE,函数一直等待下去,直到接收到 一个信号将其唤醒。 返回值:、 如果成功返回,其返回值说明是何种事件导致函数返回。 各参数的描述如表2-2所示。

惠州学院6学风

6学风 6.1教师风范 学院继承和发扬“学高为师,德高为范”的师范教育传统,弘扬高尚师德,倡导优良教风,形成了爱岗敬业、教书育人的优良风范。6.1.1教师的师德修养与敬业精神 (1)重视师德建设 升本后,结合公民道德教育实施要求,制订了《惠州学院教师道德规范》、《惠州学院学术道德规范》、《惠州学院行政道德规范》,在教师中强化严谨治学,在干部中强化管理育人。 2003年,我院在教师中开展了“扬师德、守师道、树新风”的演讲征文比赛,在学生中开展了“我心目中的大学老师”的演讲征文比赛;2004年开展了师德标兵评选活动,编印了《惠州学院首届十大师德标兵先进事迹》;2005年在教师中开展了“崇教厚德、为人师表”活动,在青年教工中举行了“奉献青春、走向成功”演讲比赛;2006年开展了第二届师德建设标兵评选活动。 (2)完善运行机制 2001年以来,学院先后修订了《惠州学院教职工年度考核办法》,制订了《惠州学院教学差错和教学事故认定及处理暂行办法》、《惠州学院教学督导委员会工作暂行条例》,建立了保证师德建设健康发展的长效运行机制。在各类教师考核评比中,学院坚持师德与业务考

核并重,坚持重点考查教书育人实绩,坚持教学质量一票否决。同时,学院强化了督导检查、全面开展课堂教学测评,加强了对教学过程的监测与管理,并对个别违反师德规范、产生教学差错事故的教师及时进行了严肃处理。 (3)弘扬高尚师德 44惠州学院本科教学工作水平评估自评报告—学风

升本以来,广大教师积极参与课程体系、教学内容、教学方法和手段的改革,全身心投入本科教学建设,表现出强烈的事业心和责任感。为切实培养好学生,老师们努力提高自身的学术水平和教学水平,深入学习和研究本科教学标准和现代教育思想,广泛了解兄弟院校相关课程的教学动态;为了适应应用性人才的培养要求,老师们结合地方建设、工作实际,不断完善自己的知识结构、能力结构、素质结构,大力开展应用研究,努力提高理论结合实际开展教学科研活动的能力和水平;为了坚持好本科教学标准,老师们重视尊重学生学习的主体地位,重视激发学生学习的积极性,严格要求学生,花大力气提高学生对基本知识、基本技能的掌握。例如,在毕业论文(设计)指导方面,不少教师花费大量的时间进行信息检索和网络搜索,努力提高毕业论文(设计)指导水平的同时,有效地防止了少数学生的偷懒思想和抄袭现象。 目前,爱岗敬业、教书育人的理念已深入人心,并逐渐内化为学院教师的自觉行为。近三年来,教师中共有31人次获市级以上奖励。其中全国十大女杰提名奖1人,全国三八红旗手1人,全国优秀教师1人;南粤优秀教师3人。 6.2学习风气 学院按照“依法治校、以人为本、学术自由、民主管理、提高效益”的办学理念,建立起了一套比较完善的学生管理体系,营造了一种积极向上的校园文化氛围,形成了一种较好的校园育人环境。目前,学院学生在世界观、人生观和价值观的形成方面,在为谁学习和怎样

操作系统原理实验报告(终版)

操作系统原理实验报告(终版)

————————————————————————————————作者:————————————————————————————————日期:

[键入文字] XX学校 实验报告 课程名称: 学院: 专业班: 姓名: 学号: 指导教师: 2011 年3 月

目录 实验1 进程管理 (3) 一、实验目的 (3) 二、实验内容 (3) 三、实验要求 (3) 四、程序说明和程序流程图 (4) 五、程序代码 (5) 六、程序运行结果及分析 (7) 七.指导教师评议 (8) 实验2 进程通信 (9) 一、实验目的 (9) 二、实验内容 (9) 三、实验要求 (9) 四、程序说明和程序流程图 (9) 五、程序代码 (11) 七.指导教师评议 (14) 实验3 存储管理 (15) 一、实验目的 (15) 二、实验内容 (15) 三、实验要求 (15) 四、程序说明和程序流程图 (16) 六、程序运行结果及分析 (23)

七.指导教师评议 (23) 实验4 文件系统 (24) 一、实验目的 (24) 二、实验内容 (24) 三、实验要求 (24) 四、程序说明和程序流程图 (24) 五、程序代码 (26) 六、程序运行结果及分析 (26) 七.指导教师评议 (27)

实验1 进程管理 一、实验目的 1. 弄清进程和程序的区别,加深对进程概念的理解。 2. 了解并发进程的执行过程,进一步认识并发执行的实质。 3. 掌握解决进程互斥使用资源的方法。 二、实验内容 1. 管道通信 使用系统调用pipe( )建立一个管道,然后使用系统调用fork( )创建2个子进程p1和p2。这2个子进程分别向管道中写入字符串:“Child process p1 is sending message!”和“Child process p2 is sending message!”,而父进程则从管道中读出来自两个子进程的信息,并显示在屏幕上。 2. 软中断通信 使用系统调用fork( )创建2个子进程p1和p2,在父进程中使用系统调用signal( )捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C),当捕捉到软中断信号SIGINT后,父进程使用系统调用kill( )分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2,子进程捕捉到信号后分别输出信息“Child process p1 is killed by parent!”和“Child process p2 is killed by parent!”后终止。而父进程等待2个子进程终止后,输出信息“Parent process is killed!”后终止。 三、实验要求 1. 根据实验内容编写C程序。 2. 上机调试程序。 3. 记录并分析程序运行结果。

操作系统原理实验2+岳青山+0907052247

《操作系统原理》实验报告 实验序号:2 实验项目名称: Windows 基本进程管理 1、实验目的 通过观察任务管理器,来观察各个进程的动态信息。 2、实验工具 (1)一台WindowsXP操作系统的计算机。 (2)计算机装有Microsoft Visual Studio C++6.0专业版或企业版。 3、预备知识 ·任务管理器,了解用户计算机上正在运行的程序和进程的相关信息。 ·Windows环境中的编程。 相关内容参见本次实验参考资料部分。 4、基本实验 1)观察任务管理器 步骤一:进入WindowsXP。 步骤二:按Ctrl+Alt+Delete(或按Ctrl+Shift+Esc)键都可以调出任务管理器。 步骤三:单击“查看”→“选择列”选项,可以看到一些选项, 这里,可以查看每个进程的PID,CPU使用时间,内存的使用情况,当前的进程是系统的还是用户的,每个句柄的数量,每个进程的优先级,等等。 步骤四:单击“性能”标签,在所示的“性能”选项卡中可以看到CPU的使用情况、内存的使用情况。 2)通过命令观察进程情况、 步骤一:单击“开始”→“运行”选项,输入cmd“命令提示符”下。 步骤二:输入tasklist。 步骤三:继续输入tasklist/?来寻找帮助,里面有更详细的解释。 3)通过命令来关闭一个进程 步骤一:单击“开始”→“运行”选项,输入cmd“命令提示符”下。 步骤二:输入tasklist后回车执行。 步骤三:继续输入taskkill/PID 208/T 5、实验编程 进行一个简单的Windows的图形用户接口(GUI)编程。 步骤一:进入WindowsXP。 步骤二:进入Microsoft Visual Studio C++6.0。 步骤三:在菜单栏中单击“文件”→“新建”→“文件”→C++Source File,选择路径(如D:\1.cpp),并命名为1.cpp。 步骤四:将下面的程序源代码输入。 步骤五:单击Windows系统的“开始”→“运行”选项,输入cmd。

惠州学院操作系统实验一

实验一进程的创建与并发执行 一、实验目的 (1) 熟悉Linux工作环境和GCC工具 (2) 加深对进程概念的理解,明确进程和程序的区别 (3) 进一步认识并发进程的实质和特征 二、实验器材 微型计算机、Ubuntu版本的Linux系统 三、实验内容 任务1:进程创建 编写一段程序,让父进程产生两个子进程,父进程显示字符“a”、两个子进程,分别显示字符“b”、“c”。运行程序,观察并分析运行结果。 程序源代码如下: #include main() { int p1, p2; while((p1=fork())==-1); //父进程创建第一个进程,直到成功 if(p1==0) //0返回给子进程1 putchar('b'); //P1的处理进程 else //正数返回给父进程(子进程号) { while((p2=fork())==-1); //父进程创建第二个进程,直到成功 if(p2==0) //0返回给子进程2 putchar('c'); //P2的处理过程 else putchar('a'); //P2创建完成后,父进程的处理过程} } 程序运行截图如下:

程序运行结果分析:首先进程main作为父进程创建第一个进程p1,此时存在p1和main两个进程,分别为父进程和子进程,所以它们的p1分别为大于0和等于0。这两个进程分别执行下面的if函数体。当子进程执行时,打印出50000次childA;当父进程执行时,又创建了一个新的子进程p2,接下去的执行和原先的p1和main进程相同。所以最终系统中存在了4个进程,其中一个进程为终端,另外3个进程分别打印属于自己的内容。 任务2: 将上述的输出字符改为输出较长的字符串,观察进程并发执行,分析执行结果。 程序源代码如下: #include main() { int p1, p2, i; while ((p1=fork())==-1); //父进程创建第一个进程,直到成功 if (p1==0) for (i=0;i<50000;i++) printf("childA%d\n",i); else { while ((p2=fork())==-1); //父进程创建第二个进程,直到成功 if (p2==0) for (i=0;i<50000;i++) printf("childB%d\n",i); else //P2创建完成后,父进程的处理过程for (i=0;i<50000;i++) printf("parent%d\n",i); } }

操作系统原理课程设计

操作系统原理课程设计 ——银行家算法模拟 指导老师:周敏唐洪英杨宏雨 杨承玉傅由甲黄贤英 院系:计算机学院计算机科学与技术班级:0237-6 学号:2002370609 姓名:刘洪彬 同组者:杨志 时间:2005/1/10---2005/1/14

银行家算法模拟 一、设计目的 本课程设计是学生学习完《计算机操作系统》课程后,进行的一次全面的综合训练,通过课程设计,让学生更好地掌握操作系统的原理及实现方法,加深对操作系统基础理论和重要算法的理解,加强学生的动手能力。 二、设计要求 银行家算法是避免死锁的一种重要方法,本实验要求用高级语言编写和调试一个简单的银行家算法程序。加深了解有关资源申请、避免死锁等概念,并体会和了解死锁和避免死锁的具体实施方法。 从课程设计的目的出发,通过设计工作的各个环节,达到以下教学要求:两人一组,每组从所给题目中任选一个(如自拟题目,需经教师同意),每个学生必须独立完成课程设计,不能相互抄袭,同组者文档不能相同; 设计完成后,将所完成的工作交由老师检查; 要求写出一份详细的设计报告。 三、设计内容 编制银行家算法通用程序,并检测所给状态的系统安全性。 1)银行家算法中的数据结构 假设有n个进程m类资源,则有如下数据结构: 可利用资源向量Available。这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该类资源的分配和回收而动态地改变。Available[j]=K,则表示系统中现有Rj 类资源K个。 最大需求矩阵Max。这是一个n*m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。如果Max[i,j]=K,则表示进程i需要Rj类资源的最大数目为K。 分配矩阵Allocation。这也是一个n*m的矩阵,它定义了系统中每一类资源当前已分配给没一进程的资源数。如果Allocation[i,j]=K,则表示进程i 当前已分得Rj类资源的数目为K。 需求矩阵Need。这也是一个n*m的矩阵,用以表示每一个进程尚需的各类资源数。如果Need[i,j]=K,则表示进程i还需要Rj类资源K个,方能完成其任务。

《操作系统原理实验》试卷A及答案

《中山大学授予学士学位工作细则》第六条 考试作弊不授予学士学位 计算机科学系2012第二学期 《操作系统原理实验》期末考试试题(A) 任课教师:李才伟考试形式:开卷考试时间:2小时年级:11 班别:3 专业:计科姓名:________ 学号:___ _ 成绩___ _ 注意:答案一定要写在答卷中,写在本试题卷中不给分。本试卷要和答卷一起交回。 一.填空题(每小题2分,共30分) 1.在我们的操作系统实验中,C与汇编语言混合编程的操作系统环境为___,其所用的虚拟机为___。2.测试用软盘映像文件的大小为___MB,使用的文件系统格式为___。 3.Intel 80386新增加的两个段寄存器分别为___和___。 4.Intel处理器实模式下的中断向量表包含___个中断向量,每个中断向量有___位。 5.Linux中挂载磁盘映像的命令为___,C语言的编译器为___。 6.将程序的入口安排在指定位置的汇编操作符为___、LD的链接选项为___。 7.ELF的英文原文是___,中文译文为___。 8.在FAT的文件条目中,普通文件和子目录的文件属性值分别为___和___。 9.在IA-32的保护模式下,分段用于___,分页用于___。 10.IA-32处理器的4个系统地址寄存器分别为___。 11.IA-32中的描述符和选择符大小分别为___位和___位。 12.TSS的主要功用为___,TSS描述符只能位于___描述符表中。 13.控制保护模式的寄存器为___,激活保护标志位于其___位。 14.IA-32的三种特权级类型分别为___、___和___。 15.在Make文件中,$@ 和$< 分别表示___和___。 二.问答题(每小题5分,共30分) 1.在实模式下的进程调度中是如何实现堆栈切换的? 2.IA-32的保护模式相比实模式的主要优点有哪些? 3.给出IA-32保护模式下的段寄存器的内容、组成和功用。 4.给出GDT和LDT的英文原文和中文译文,它们有哪些主要功用和区别? 5.启动分页机制的主要步骤有哪些? 6.给出IA-32段页式保护模式下(采用4KB页面大小与两级分页方式的)逻辑地址和线性地址的构成及转 换成物理地址的方法。

计算机操作系统原理实验指导书

目录 1进程创建模拟实现 (6) 1.1实验类型 (6) 1.2实验目的 (6) 1.3实验描述 (6) 1.4实验内容 (6) 1.5实验要求 (6) 1.6测试要求 (6) 1.7相关知识 (7) 1.8实验设备 (9) 1.9实验指导 (9) 1.10实验成绩评定 (9) 1.11实验报告 (9) 1.12实验思考 (9) 2P、V原语的模拟实现 (10) 2.1实验类型 (10) 2.2实验目的 (10) 2.3实验描述 (10) 2.4实验内容 (10) 2.5实验要求 (10) 2.6测试要求 (10) 2.7相关知识 (11) 2.8实验设备 (11) 2.9实验指导 (11) 2.10实验成绩评定 (12) 2.11实验报告 (12) 2.12实验思考 (12) 3进程撤销模拟实现 (13) 3.1实验类型 (13) 3.2实验目的 (13) 3.3实验描述 (13) 3.4实验内容 (13) 3.5实验要求 (13) 3.6测试要求 (14) 3.7相关知识 (14) 3.8实验设备 (15) 3.9实验成绩评定 (15) 3.10实验报告 (16) 3.11实验思考 (16) 4FCFS进程调度模拟实现 (17)

4.2实验目的 (17) 4.3实验描述 (17) 4.4实验内容 (17) 4.5实验要求 (17) 4.6测试要求 (18) 4.7相关知识 (18) 4.8实验设备 (18) 4.9实验成绩评定 (19) 4.10实验报告 (19) 4.11实验思考 (19) 5银行家算法实现 (20) 5.1实验类型 (20) 5.2实验目的 (20) 5.3实验描述 (20) 5.4实验内容 (20) 5.5实验要求 (20) 5.6测试要求 (21) 5.7相关知识 (21) 5.8实验设备 (22) 5.9实验成绩评定 (22) 5.10实验报告 (22) 5.11实验思考 (22) 6改进型CLOCK页面置换算法实现 (23) 6.1实验类型 (23) 6.2实验目的 (23) 6.3实验描述 (23) 6.4实验内容 (23) 6.5实验要求 (23) 6.6测试要求 (24) 6.7相关知识 (24) 6.8实验设备 (24) 6.9实验成绩评定 (25) 6.10实验报告 (25) 6.11实验思考 (25) 7SCAN磁盘调度模拟实现 (26) 7.1实验类型 (26) 7.2实验目的 (26) 7.3实验描述 (26) 7.4实验内容 (26) 7.5实验要求 (26) 7.6测试要求 (27)

惠州学院软件工程作业SE1

软件工程导论第一章作业 1、什么是软件危机?它有那些典型表现?为什么会出现软件危机? 答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。 具体的说,软件危机主要有以下一些典型表现: 1)对软件开发成本和进度的估计常常很不准确。 2)用户对“已完成的”软件系统不满意的现象经常发生。 3)软件产品的质量往往靠不住。 4)软件常常是不可维护的。 5)软件通常没有适当的文档资料。 6)软件成本在计算机系统总成本中所占的比例逐年上升。 7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。 出现软件危机的原因,一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。 3、什么是软件工程?它有哪些本质特性?怎样用软件工程消除软件危机? 答:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。 软件工程具有下述的本质特性: 1)软件工程关注于大型程序的构造。 2)软件工程的中心课题是控制复杂性。 3)软件经常变化 4)开发软件的效率非常重要。 5)和谐地合作是开发软件的关键。 6)软件必须有效地支持它的用户。 7)在软件工程领域中通常由具有一种文化背景的人替另一种文化背景的人创造产品。 用下述软件工程的7条基本原理来消除软件危机: 1)用分阶段的生命周期计划严格管理。 2)坚持进行阶段评审。 3)实行严格的产品控制。 4)采用现代程序设计技术。 5)结果应能清楚地审查。 6)开发小组的人员应该少而精。 7)承认不断改进软件工程实践的必要性。 4、简述结构化范型和面向对象范型的要点,并分析它们的优缺点。 答:1)结构化范型也称为传统方法学或生命周期方法学。它采用结构化技术(结构化分析、结构化设计和结构化实现)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务。采用这种方法学开发软件的时候,从对问题的抽象逻辑分析开始,一个阶段一个阶段地顺序进行开发。每一个阶段的开始和结束都有严格标准,在每一个阶段结束之前都必须进行正式严格的技术审查和管理复审。审查的一条主要标准就是每个阶段都应该交出“最新式的”(即和所开发的软件完全一致的)高质量的文档资料,从而保证在软件开发工程结束时有一个完整准确的软件配置交付使用。

相关文档
最新文档