文档库 最新最全的文档下载
当前位置:文档库 › 天津理工大学操作系统实验2

天津理工大学操作系统实验2

天津理工大学操作系统实验2
天津理工大学操作系统实验2

实验报告学院(系)名称:计算机与通信工程学院

【实验过程记录(源程序、测试用例、测试结果及心得体会等)】#include

int work[10][2];

int idle[10][2];

int free[10][3];

int num=0,b=1,d,ch1,ch2;

void init(){

idle[0][0]=1;idle[0][1]=100;

free[0][0]=0;free[1][1]=0;free[1][2]=0;

work[0][0]=0;work[0][1]=0;

for(int i=1;i <=9;i++){

idle[i][0]=0;idle[i][1]=0;

free[i][0]=0;free[i][1]=0;free[i][2]=0;

work[i][0]=0;work[i][1]=0;

}

}

void jishu(){

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

if(idle[i][1]!=0)

num++;

}

void jishu1(){

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

if(work[i][1]!=0)

b++;

}

void zuixian(){

jishu();

for(int i=0;i

for(int j=i;j

if(idle[j][0]>idle[j+1][0]){

int temp=idle[j][0];

idle[j][0]=idle[j+1][0];

idle[j+1][0]=temp;

temp=idle[j][1];

idle[j][1]=idle[j+1][1];

idle[j+1][1]=temp;

}

}

}

}

void zuijia(){

num=0;

jishu();

for(int i=0;i

for(int j=i;j

if(idle[j][1]>idle[j+1][1]){

int temp=idle[j][0];

idle[j][0]=idle[j+1][0];

idle[j+1][0]=temp;

temp=idle[j][1];

idle[j][1]=idle[j+1][1];

idle[j+1][1]=temp;

}

}

}

}

void zuihuai(){

num=0;

jishu();

for(int i=0;i

for(int j=i;j

if(idle[j][1]

int temp=idle[j][0];

idle[j][0]=idle[j+1][0];

idle[j+1][0]=temp;

temp=idle[j][1];

idle[j][1]=idle[j+1][1];

idle[j+1][1]=temp;

}

}

}

}

void huishou(int name){

num=0;

b=0;

jishu();

jishu1();

int c=-1;

for(int k=0;k <=b;k++){

if(free[k][0]==name){

c=k;

break;

}

}

if(c==-1)cout <<"要回收的作业不存在!" <

else{

for(int i=0;i

for(int j=i;j

if(idle[j][0]>idle[j+1][0]){

int temp=idle[j][0];

idle[j][0]=idle[j+1][0];

idle[j+1][0]=temp;

temp=idle[j][1];

idle[j][1]=idle[j+1][1];

idle[j+1][1]=temp;

}

}

}

for(int q=0;q

if(free[c][1] <=idle[q][0]){

for(int j=num;j>=q;j--){

idle[j+1][0]=idle[j][0];

idle[j+1][1]=idle[j][1];

}

idle[j][0]=free[c][1];

idle[j][1]=free[c][2];

b++;

if(idle[j+1][0]==idle[j][0]+idle[j][1]){

idle[j][1]=idle[j][1]+idle[j+1][1];

for(int m=j+1;m <=num;m++){

idle[m][0]=idle[m+1][0];

idle[m][1]=idle[m+1][1];

}

idle[m][0]=0;

idle[m][1]=0;

b--;

}

if(idle[j-1][0]==idle[j][0]){

idle[j-1][1]=idle[j-1][1]+idle[j][1];

for(int n=j;j <=num;j++){

idle[n][0]=idle[n+1][0];

idle[n][1]=idle[n+1][1];

}

idle[n][0]=0;

idle[n][1]=0;

b--;

}

break;

}

}

if(ch2==1)zuixian();

if(ch2==2)zuijia();

if(ch2==3)zuihuai();

for(int p=c;c

free[c][0]=free[c+1][0];

free[c][1]=free[c+1][1];

free[c][2]=free[c+1][2];

work[c][0]=work[c+1][0];

work[c][1]=work[c+1][1];

}

cout<<"该进程已被成功回收!"<

}

}

void fp(){

int tag=0;

num=0;

b=0;

jishu();

jishu1();

for(int j=0;j

if(work[b][1]

free[b][0]=work[b][0];

free[b][1]=idle[j][0];

free[b][2]=work[b][1];

idle[j][0]=idle[j][0]+work[b][1];

idle[j][1]=idle[j][1]-work[b][1];

tag=1;

break;

}

else if(work[b][1]==idle[j][1]){

free[b][0]=work[b][0];

free[b][1]=idle[j][0];

free[b][2]=work[b][1];

tag=1;

for(int i=j;i <=num-1;i++){

idle[i][0]=idle[i+1][0];

idle[i][1]=idle[i+1][1];

}

break;

}

else tag=0;

}

if(tag==0)cout <<"作业过大没有足够存储空间!" <

}

void print(){

num=0;

b=1;

jishu();

jishu1();

cout <<"已分配表为:" <

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

if(free[i][2]!=0)

cout <<"作业名:" <

cout <

cout <<"空闲区表为:" <

for(int j=0;j

if(idle[j][1]!=0)

cout <<"起始地址:" <

cout <

}

void main(){

init();

int n;

cout <<"1.分配空间;2.回收空间;" <

cin>>ch1;

cout <

cout <<"1.最先适应法;2.最佳适应法;3.最坏适应法;" <

cin>>ch2;

cout <

if(ch1==1){

cout <<"请输入要分配内存的作业名及占用内存大小:";

cin>>work[b][0]>>work[b][1];

cout <

if(ch2==1){

zuixian();

fp();

}

else if(ch2==2){

zuijia();

fp();

}

else if(ch2==3){

zuihuai();

fp();

}

print();

}

cout <<"输入要回收的作业名:" <

cin>>n;

huishou(n);

}

心得体会

我们可以采用最先适应法,最佳适应法,最坏适应法来分配主存空间。当一个作业要求装入主存时,必须从空闲区表中找出一个足够大的空闲区。当一个作业撤离时,归还的区域如果与其他空闲区相邻,则合并成一个较大的空闲区,登在空闲区表中。

操作系统实验 磁盘调度算法

操作系统 实验报告 哈尔滨工程大学 计算机科学与技术学院

第六讲磁盘调度算法 一、实验概述 1. 实验名称 磁盘调度算法 2. 实验目的 (1)通过学习EOS 实现磁盘调度算法的机制,掌握磁盘调度算法执行的条件和时机; (2)观察 EOS 实现的FCFS、SSTF和 SCAN磁盘调度算法,了解常用的磁盘调度算法; (3)编写 CSCAN和 N-Step-SCAN磁盘调度算法,加深对各种扫描算法的理解。 3. 实验类型 验证性+设计性实验 4. 实验内容 (1)验证先来先服务(FCFS)磁盘调度算法; (2)验证最短寻道时间优先(SSTF)磁盘调度算法; (3)验证SSTF算法造成的线程“饥饿”现象; (4)验证扫描(SCAN)磁盘调度算法; (5)改写SCAN算法。 二、实验环境 在OS Lab实验环境的基础上,利用EOS操作系统,由汇编语言及C语言编写代码,对需要的项目进行生成、调试、查看和修改,并通过EOS应用程序使内核从源代码变为可以在虚拟机上使用。 三、实验过程 1. 设计思路和流程图 (1)改写SCAN算法 在已有 SCAN 算法源代码的基础上进行改写,要求不再使用双重循环,而是只遍历一次请求队列中的请求,就可以选中下一个要处理的请求。算法流程图如下图所示。 图 3.1.1 SCAN算法IopDiskSchedule函数流程图(2)编写循环扫描(CSCAN)磁盘调度算法 在已经完成的SCAN算法源代码的基础上进行改写,不再使用全局变量ScanInside 确定磁头移动的方向,而是规定磁头只能从外向内移动。当磁头移动到最内的被访问磁道时,磁头立即移动到最外的被访问磁道,即将最大磁道号紧接着最小磁道号构成循环,进行扫描。算法流程图如下图所示。

天津理工大学操作系统实验2

实验报告学院(系)名称:计算机与通信工程学院

【实验过程记录(源程序、测试用例、测试结果及心得体会等)】#include int work[10][2]; int idle[10][2]; int free[10][3]; int num=0,b=1,d,ch1,ch2; void init(){ idle[0][0]=1;idle[0][1]=100; free[0][0]=0;free[1][1]=0;free[1][2]=0; work[0][0]=0;work[0][1]=0; for(int i=1;i <=9;i++){ idle[i][0]=0;idle[i][1]=0; free[i][0]=0;free[i][1]=0;free[i][2]=0; work[i][0]=0;work[i][1]=0; } } void jishu(){ for(int i=0;i <9;i++) if(idle[i][1]!=0) num++; } void jishu1(){ for(int i=0;i <9;i++) if(work[i][1]!=0) b++; } void zuixian(){ jishu(); for(int i=0;i idle[j+1][0]){ int temp=idle[j][0]; idle[j][0]=idle[j+1][0]; idle[j+1][0]=temp; temp=idle[j][1]; idle[j][1]=idle[j+1][1];

北理工操作系统内存管理实验报告

实验三:内存管理 班级: 学号:

姓名: 一、实验目的 1.通过编写和调试存储管理的模拟程序以加深对存储管理方案的理解; 2.熟悉虚存管理的页面淘汰算法; 3.通过编写和调试地址转换过程的模拟程序以加强对地址转换过程的了解。 二、实验要求 1.设计一个请求页式存储管理方案(自己指定页面大小),并予以程序实现。 并产生一个需要访问的指令地址流。它是一系列需要访问的指令的地址。为不失一般性,你可以适当地(用人工指定地方法或用随机数产生器)生成这个序列。 2.页面淘汰算法采用FIFO页面淘汰算法,并且在淘汰一页时,只将该页在页 表中抹去。而不再判断它是否被改写过,也不将它写回到辅存。 3.系统运行既可以在Windows,也可以在Linux。 三、实验流程图

图1 页式存储管理程序参考流程 四、实验环境 硬件设备:个人计算机。 系统软件:windows操作系统,Visual C++6.0编译环境。 五、实验结果

说明:模拟产生35个指令地址,随机产生20个指令地址进行排队,假设主存中共有10个工作集页帧。将前9个指令调入内存,因为前9个指令中,页号为13的指令有两个,所以调入内存中共有8页。此时主存中还有两个空闲帧。此时按刚才随机顺序进行访问指令工作。前9页因都在主存中可直接调用。第10个随机地址为页号为5的指令,也在主存中,也可直接调用。页号为24,3因不在主存中,需要调用进主存。此时主存已满。然后主存需要进行调用页号为27号的指令,因主存已满,需要执行FIFO算法,将最先进入主存的页号为30的指令调出,将27号放入第1000000帧。以后需要调用的页面按照存在就无需调用,否则按FIFO原则进行调页工作。 六、实验感想 七、实验代码 #include

操作系统实验题目2

实验报告撰写要求实验报告要求具有以下内容: 一、实验目的 二、实验内容 三、实验要求 四、算法流程图 五、给出测试数据及运行结果 六、实验体会或对改进实验的建议

实验1 进程调度(2学时) 一、实验目的 通过实验加强对进程调度算法的理解和掌握。 二、实验内容 编写程序实现基于优先级的时间片轮转调度算法。 三、实验要求 1、假定系统有5个进程,每个进程用一个进程控制块PCB来代表,进程控制块的结构如下图1.1所示: 图1.1 其中: 进程名:作为进程的标识,假设五个进程的进程名分别为p1,p2,p3,

p4,p5。 指针:进程按顺序排成循环链表,用指针指出下一个进程的进程控制块首地址,最后一个进程中的指针指出第一个进程的进程控制块首地址。 要求运行时间:假设进程需要运行的单位时间数。 已运行时间:假设进程已经运行的单位时间数,初值为0。 状态:可假设有两种状态,就绪状态和结束状态。进程的初始状态都为就绪状态。 2、每次运行所设计的处理器调度程序调度进程之前,为每个进程随机确定它的要求运行时间。 3、此程序是模拟处理器调度,因此,被选中的进程并不实际启动运行,而是执行 已运行时间+1 来模拟进程的一次运行,表示进程已经运行过一个单位时间。 4、在所设计的程序中应有显示语句,能显示每次被选中的进程名以及运行一次后进程队列的变化。

实验2 银行家算法(2学时) 一、实验目的 理解银行家算法,掌握进程安全性检查的方法及资源分配的方法。 二、实验内容 编写程序实现银行家算法,并验证程序的正确性。 三、实验要求 编制模拟银行家算法的程序,并以下面给出的例子验证所编写的程序的正确性。 例子:某系统有A、B、C、D 4类资源共5个进程(P0、P1、P2、P3、P4)共享,各进程对资源的需求和分配情况如下表所示。 现在系统中A、B、C、D 4类资源分别还剩1、5、2、0个,请按

操作系统第一次与第二次实验报告

实验报告 实验1 Linux基本环境 1、实验目的 (1)熟悉Linux下的基本操作,学会使用各种Shell命令去操作Linux,对Linux 有一个感性认识。 (2)学会使用vi编辑器编简单的C语言程序,并能对其编译和调试。 2、实验内容 (1)以root用户身份登陆,并使用“ls”,“cat”“cd”等命令来实现基本的文件操作并观察Linux文件系统的特点; (2)使用vi编辑器编写一C程序,并用gcc命令进行编译和链接,并用a.out 来进行输出结果。 3、实验结果 (1) a.输入“ls”后,vi编辑器显示主文件夹下的所有文件及目录名。使用dir 查看当前目录内容。 b.输入“cat”后,会显示文件:cat 文件名建立文件:cat >文件名, ctrl+d结束输入。 c.输入“cd”,改变当前目录,cd ..回到上层目录,cd /回到根目录。(2) a.在命令行键入vi filename.c 然后回车。 b.按一下键盘上的I键(insert),进入编辑模式。(a与i是相同的用法) c.当文件编辑完后,按Esc 键;输入:wq) ,保存退出。 d.对刚才编写的程序进行编译。编译的命令是:gcc filenam e.c e.最后运行程序,命令式:./a.out 4、实验总结 通过做本次实验,我熟悉了Linux环境下的基本操作,学会使用各种命令去操作Linux,也学会使用vi编辑器编辑简单的程序,并能对其编译

和调试。了解并掌握了对vi编辑器的一些基本使用方法等。可能由于初次接触Linux环境,所以刚开始编程时出现了许多错误,但我及时找同学或老师来帮忙,解决我的问题,这些错误能够让我更清楚地了解自己对哪些知识掌握的不够透彻,让自己对知识掌握的更牢固。 实验2 进程管理 1、实验目的 (1)加深对进程概念的理解,明确进程和程序的区别。 (2)进一步认识并发执行的实质。 (3)分析进程竞争资源现象,学习解决进程互斥的方法。 (4)了解Linux系统中进程通信的基本原理。 2、实验内容 (1)进程的创建 编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕 上显示一个字符:父进程显示字符“a”;子进程分别显示字符“b”和 字符“c”。试观察纪录屏幕上的显示结果,并分析原因。 (2)进程的控制 修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕出现的现象,并分析原因。 如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程 之间的互斥,观察并分析出现的现象。 (3)①编写一段程序,使其现实进程的软中断通信。 要求:使用系统调用fork()创建两个子进程,再用系统调用signal() 让父进程捕捉键盘上来的中断信号(即按DEL键);当捕捉到中断信号 后,父进程用系统调用Kill()向两个子进程发出信号,子进程捕捉到信 号后分别输出下列信息后终止: Child Processll is Killed by Parent!

北京理工大学远程教育学院 操作系统 2019-2020学年

(93) 北京理工大学远程教育学院2019-2020学年第二学期 《操作系统》期末试卷(B卷) 教学站学号姓名成绩 应用题(每题20分,共100分) 1.批处理操作系统、分时操作系统和实时操作系统的特点各是什么? 2. 动态分区分配的基本分配思想是什么?常用的分配算法有哪四种,简述其含义。 3.为什么要引入缓冲区? 4.解释产生死锁的四个必要条件是什么,当预防死锁时可以通过破坏这四个条件的任意一个来实现,请分别论述破坏每个条件会产生什么影响,哪些条件能破坏哪些条件不能破坏? 5.某工厂有一个可以存放设备的仓库,总共有8个位置可以存放8台设备。生产部门生产的每一台设备都必须入库。销售部门可以从仓库提出设备供应客户。设备的出库和入库都必须借助运输工具。现在只有一套运输工具,每次只能运输一台设备,系统共使用三个信号量,S代表互斥信号量,表示运输工具;S1和S2均为同步信号量,S1表示仓库中可以存放设备的空闲位置,S2表示仓库中已经被设备占用了的位置。请设计一个能协调工作的自动调度管理系统,并利用记录型信号量写出解决此问题的程序代码,请注明信号量的初值。

(编号) 北京理工大学远程教育学院2019-2020学年第二学期 《操作系统》期末试卷(B卷)答题纸 教学站学号姓名成绩 1.答:1)批处理操作系统的用户脱机使用计算机,作业是成批处理的,系统内多道程序并发执行,交互能力差。 2)分时操作系统可以让多个用户同时使用计算机,人机交互性较强,具有每个用户独立使用计算机的独占性,系统响应及时。 3)实时操作系统能对控制对象作出及时反应,可靠性高,响应及时,但是资源利用率低。 2. 答:算法思想:将空闲分区链以地址递增的顺序连接;在进行内存分配时,从链首开始顺序查找,直到找到一块分区的大小可以满足需求时,按照该作业的大小,从该分区中分配出内存,将剩下的空闲分区仍然链在空闲分区链中。 第一种:首次适应算法(First fit) 按空闲分区依地址递增次序链接,分配内存时按顺序查找,放入第一个匹配到的空闲分区,会造成内部碎片,有着较大的浪费 第二种:最佳适应算法(Best fit) 将空闲分区按内存大小递增的顺序链接起来,分配内存时按照顺序放入第一个匹配的空闲分区。 第三种:最坏适应算法(Worst fit) 将空闲分区按容量递减的顺序链接起来,分配内存时放入第一个匹配的空闲分区,即最大的分区,造成内部碎片

操作系统实验2

武汉工程大学计算机科学与工程学院 《操作系统》实验报告 专业班级13计工01班实验地点计工403机房学生学号1305120610 指导教师张立 学生姓名李敏实验时间2014-10-19 /2014- 10-26 实验项目实验二、创建线程及线程通信 实验类别操作性()验证性()设计性(√)综合性()其它实 验 目的及要求(1)熟悉Windows中的线程及进程的创建 (2)掌握利用Windows中的同步机制实现线程同步及通信。 成绩评定表 类别评分标准分值得分合计 上机表现积极出勤、遵守纪律 主动完成实验设计任务 30分 实验报告及时递交、填写规范 内容完整、体现收获 70分 说明: 评阅教师:张立 日期: 2015 年 11 月 1 日

实验内容 一、实验内容 要求:创建线程,利用互斥实现线程共享变量通信。 示例程序:Thread.exe 简要说明: 1、点“创建线程”按钮,创建两个线程,一个线程不断对一个变量加1, 结果显示在第一个文本框中。另一个线程不断对另一个变量减1,结果显示在第二个文本框中。这两个线程之间没有交互,仅用于演示线程的创建。 2、演示线程互斥,点“线程互斥”按钮,创建两个线程,一个线程不断循 环,每次循环对共享变量x做100次加1操作(这100次加1操作作为一个临界区CSa),另一个线程不断循环,每次循环对共享变量x做100次减1操作(这100次减1操作作为一个临界区CSb),结果显示在第三个文本框中。可以看到结果是从0到100,然后又从100回到0。可见CSa 和CSb两个临界区是互斥的。 3、除了没有互斥,其它同2,结果显示在第四个文本框中。可见CSa和CSb 两个临界区的执行是有交叉的,CSa的执行可能被CSb打断,CSb的执行也可能被CSa打断 二、源代码 UINT ThreadA(LPVOID pParam) { CThreadDlg * pParent=(CThreadDlg *)pParam; pParent->DoThreadA(); return 0; } UINT ThreadB(LPVOID pParam) { CThreadDlg * pParent=(CThreadDlg *)pParam; pParent->DoThreadB(); return 0; } UINT ThreadC(LPVOID pParam) { CThreadDlg * pParent=(CThreadDlg *)pParam; pParent->DoThreadC(); return 0; } UINT ThreadD(LPVOID pParam) { CThreadDlg * pParent=(CThreadDlg *)pParam; pParent->DoThreadD(); return 0;

操作系统第二次实验first-fit, next-fit

操作系统第二次实验报告 物联网1301 齐亨13516110 一、实验简介 本实验要求建造一个没有虚拟功能的内存管理系统。任务如下: ? 设计一个内存管理器,支持至少两种分配策略, 如first-fit, next-fit, best-fit, worst-fit 等。 ? 对不同分配策略的性能进行评估。 二、实验过程 1、first fit(首次适应) 首次适应策略的思路是,分配时在空闲块列表中搜索,找到第一个能够满足请求的块即停止搜索,然后把搜索到的块分割,一部分返回给请求者,另一部分仍然作为空闲块留在空闲列表的原来位置。首次适应策略的问题在于,链表头部区域的块倾向于被首先分割,经过一段时间后,空闲链表头部可能堆积大量小的空闲块,这会导致搜索时间的增加,因为当请求一个头部区域的小块无法满足的块时,需要顺次检查这些小块。 代码如下: #include #include #include int array[99]; int *array_request(int n) { int count=0; int *p=&array[0]; int *l=&array[99]; while(count

} if(count

天津理工大学学生选课系统操作手册

天津理工大学学生选课系统操作手册 第一部分:选课第一阶段(志愿选课阶段) 1、本阶段不支持跨专业、年级、校区和重修选课。采用志愿选课模式,系统在本阶段结束后会根据学生在选课时所提交的课程志愿等级来确定其选课优先级进行抽签。 2、必修课程(英语演讲练习Ⅰ、体育Ⅱ-Ⅳ及不按行政班组班上课的除外)由学校统一置入,学生无需选择。 第一步:查看选课操作介绍 1、选课系统地址:https://www.wendangku.net/doc/0c14000728.html,/xsxk 2、查看选课操作介绍 3、查看选课课程预览:本学期开设所有课程列表信息。 第二步:登录选课系统,查看“选课概览” 1、用户名和密码默认值:学号/身份证后6位。 2、查看信息是否正确,如学号、姓名、年级、院系、专业、校区、选课学期等。 3.当前方案选课开放情况:当前选课模式【志愿选课】,选课策略【可退可选】。 第三步:选课 1、页面上方的【选课中心】,然后点击左侧的【推荐选课】,就进入到推荐选课界面。在【推荐选课】 中,学生可以查看自己方案内并且推荐自己(所在行政班)上课的除《体育Ⅱ-Ⅳ》外所有开设的课程。一般都需要修读。 2、选择【选课志愿】,然后点击【选课】按钮,若上课时间不冲突并且有剩余容量时,则选课成功。

3、在【方案内课程选课】中,学生可以选择本专业其他学期的课程【原则上不建议选择】,操作同【推荐选课】(第三、四阶段开放)。 4、在【方案外课程选课】中,学生可以根据自身的特点和兴趣,选择其他专业的专业课程,以扩充自己的知识面,操作同【推荐选课】(第三、四阶段开放)。 5、在【重修选课】中,显示的下学期开设并且有重修资格的课程。学生可以根据自己的情况进行选择。已经重修过且仍不及格的课程将不再显示(没有资格)。操作同【推荐选课】(第三、四阶段开放,第三阶段不支持时间冲突选课,如果重修课程教学班与已选课程发生时间冲突,请到第四阶段再选课)。 6、在【体育选项选课】中,学生勾选“推荐班级”,可以选择本学期针对本专业开设的体育课程(与其它本专业课程时间不会冲突),根据自己的喜好,分志愿可以选择三个体育选项,并设置好选课志愿。根据抽签结果,最终抽中一个。 7、在【全校公共选修课选课】中,学生可以选择本学期全校开放的公共选修课程,操作同【推荐选课】。 8、查看选课统计:统计已选课程和选课志愿使用情况。 9、选课志愿简介: 选课报志愿参考了高考填报志愿的做法,就是不同学生选报同一门课程时,学生个人对课程重视的程度不同(高、中、低),反映到选课志愿中分别用第一、二、三志愿来表示(第一志愿最高,第二志愿中等,第三志愿最低),教学管理信息系统会根据学生在选课时所提交的课程志愿等级来确定其选课优先级。 志愿法选课模式是指在预选阶段,学生在选课时可提交某课程的志愿,通过志愿来表达个人的选课意愿高低。 第四步:调整选课结果 1、查询并调整选课结果:点击【查看已选课程】,查看已选课程课表,在课表上可以直接点击【退课】,删除选课结果。 2、调整选课志愿:查看【已选课程列表】,点击需要调整志愿的课程中的【志愿调整】列,点击调 高志愿,点击调低志愿。同时也可点击【退选】按钮,删除选课结果。

2011年操作系统复习 北京理工大学 计算机专业

第1章操作系统概论 1 早期操作系统设计的主要目标是什么? 方便性:方便用户使用计算机。用户通过操作系统来使用计算机。 有效性:使计算机系统能高效可靠地运转,提高系统资源的利用率。 还要便于操作系统的设计、实现和维护。 2操作系统是资源管理程序,它管理系统中的什么资源? 进程----进程表存储器----存储表 I/O设备----I/O设备表文件----文件表 3为什么要引入多道程序系统?它有什么特点? 提高CPU的利用率,充分发挥系统设备的并行性。这包括程序之间、CPU与设备之间、设备与设备之间的并行操作。指在主存同时存放若干道程序,使它们在系统中交叉运行,共享系统中的各种资源。当一道程序暂停执行时,CPU立即转去执行另一道程序。 在单处理机系统中。宏观上,多道程序并行运行;微观上,在任何特定时刻,只有一道程序在处理机上运行,即各程序交叉地在CPU上运行。 4叙述操作系统的基本功能。 (1)处理机管理:进程管理。处理机如何调度的问题:FCFS、优先级、时间片轮转? (2)存储器管理:主存管理。存储分配、存储保护、主存扩充。 (3)设备管理:涉及对系统中各种输入、输出设备的管理和控制。分配设备,控制设备传输数据。 (4)文件管理:将程序、数据、操作系统软件等组织成文件,存在磁盘或磁带上,方便用户访问。 5 批处理系统、分时系统和实时系统各有什么特点?各适合应用于哪些方面? 批处理:优点: 系统吞吐量大,资源利用率高。适合计算量大、自动化程度高的成熟作业。 缺点: 用户与作业无法交互,作业平均周转时间较长。 适用于比较成熟的大作业 分时系统:同时性:若干用户同时使用一台计算机。 独立性:每个用户占有一台终端,独立操作,感觉不到别的用户存在。 交互性:用户可通过终端与系统进行人机对话。 及时性:用户的请求能在较短时间内得到响应。 适用于小作业 实时系统:(1)实时性。其响应时间由被控制对象所能承受的延迟来确定。 (2)可靠性。要具有容错能力,可采用双工机制:一台主机;一台后备机。 (3)确定性。是指系统按照固定的、预先确定的时间执行指定的操作。其可确定性取决于系统响应中断的速度和处理能力。 适用于实时过程控制,实时信息处理 6操作系统的特性? (1)并发性:并发是指系统中存在着若干个逻辑上相互独立的程序,它们都已被启动执行,都还没有执行完,并竞争系统资源。 (2)共享性:是指系统中的资源可供内存中多个并发执行的进程共同使用。如打印机、磁带机、磁盘等。支持系统并发性的物 质基础是资源共享 (3)虚拟性:把共享资源的一个物理实体变为若干个逻辑上的对应物。如,CPU的分时共享;虚拟存储器技术。 (4)异步性(随机性):有限的资源共享使并发进程之间产生相互制约关系。各个进程何时执行、何时暂停、以怎样的速度向前 推进、什么时候完成等都是不可预知的。 7衡量OS的性能指标有哪些?什么是吞吐量、响应时间和周转时间? 资源利用率:指在给定时间内,系统中某一资源(如CPU、存储器、外部设备等)实际使用时间所占比率。 吞吐量(Throughput):指单位时间内系统所处理的信息量。它通常是用每小时或每天所处理的作业个数来度量。 周转时间:指从作业进入系统到作业退出系统所用的时间。而平均周转时间是指系统运行的几个作业周转时间的平均值。

操作系统实验二

操作系统实验实验二进程管理 学号 1215108019 姓名克帆 学院信息学院 班级 12电子2

实验目的 1、理解进程的概念,明确进程和程序的区别。 2、理解并发执行的实质。 3、掌握进程的创建、睡眠、撤销等进程控制方法。 实验容与要求 基本要求:用C语言编写程序,模拟实现创建新的进程;查看运行进程;换出某个进程;杀死进程等功能。 实验报告容 1、进程、进程控制块等的基本原理。 进程是现代操作系统中的一个最基本也是最重要的概念,掌握这个概念对于理解操作系统实质,分析、设计操作系统都有其非常重要的意义。为了强调进程的并发性和动态性,可以给进程作如下定义:进程是可并发执行的程序在一个数据集合上的运行过程,是系统进行资源分配和调度的一个独立单位。 进程又就绪、执行、阻塞三种基本状态,三者的变迁图如下: 由于多个程序并发执行,各程序需要轮流使用CPU,当某程序不在CPU上运行时,必须保留其被中断的程序的现场,包括:断点地址、程序状态字、通用寄存器的容、堆栈容、程序当前状态、程序的大小、运行时间等信息,以便程序再次获得CPU时,能够正确执行。为了保存这些容,需要建立—个专用数据结构,我们称这个数据结构为进程控制块PCB (Process Control Block)。 进程控制块是进程存在的惟一标志,它跟踪程序执行的情况,表明了进程在当前时刻的状态以及与其它进程和资源的关系。当创建一个进程时,实际上就是为其建立一个进程控制块。 在通常的操作系统中,PCB应包含如下一些信息: ①进程标识信息。为了标识系统中的各个进程,每个进程必须有惟一的标识名或标 识数。 ②位置信息。指出进程的程序和数据部分在存或外存中的物理位置。 ③状态信息。指出进程当前所处的状态,作为进程调度、分配CPU的依据。 ④进程的优先级。一般根据进程的轻重缓急其它信息。 这里给出的只是一般操作系统中PCB所应具有的容,不同操作系统的PCB结构是不同的,我们将在2.8节介绍Linux系统的PCB结构。

操作系统实验3报告

实验三、进程通讯 ——管道及共享内存姓名:徐洪班级:10电信实验班学号:Q10600109 实验用学号:e06620111 一、实验目的 (1)加深对管道概念的理解。 (2)掌握利用管道进行进程通信的程序设计。 (3)Linux系统的共享内存机制允许在任意进程间大批量地交换数据。本实验的目的是了解和熟悉Linux支持的共享存储区机制。 二、实验预备内容 认真阅读实验材料中管道通信及共享内存部分,加深对管道通信及共享内存机制的理解。 三、实验内容 任务一、 (1)阅读以上父子进程利用管道进行通信的例子(例1),写出程序的运行结果并分析。 (2)编写程序:父进程利用管道将一字符串交给子进程处理。子进程读字符串,将里面的字符反向后再交给父进程,父进程最后读取并打印反向的字符串。 任务二、 (1)阅读例2的程序,运行一次该程序,然后用ipcs命令查看系统中共享存储区的情况,再次执行该程序,再用ipcs命令查看系统中共享内存的情况,对两次的结果进行比较,并分析原因。最后用ipcrm命令删除自己建立的共享存储区。(有关ipcs和ipcrm介绍见后面一页)(2)每个同学登陆两个窗口,先在一个窗口中运行例3程序1(或者只登陆一个窗口,先在该窗口中以后台方式运行程序1),然后在另一个窗口中运行例3程序2,观察程序的运行结果并分析。运行结束后可以用ctrl+c结束程序1的运行。 四、实验结果 运行例1 反向输出

main() { int x,fd[2],n,i,fs[2]; char buf[30],s[30],m[30],b[30]; pipe(fd); pipe(fs); while ((x=fork())==-1); if (x==0) { close(fd[0]); close(fs[1]); printf("Parent Process!\n"); strcpy(buf,"This is an example\n"); write(fd[1],buf,30); read(fs[0],m,30); printf("Parent Process1!\n"); printf("%s\n",m); } else{ close(fd[1]); close(fs[0]); printf("Child Process!\n"); read(fd[0],s,30); n=strlen(s)-1; for( i=0;i

北理工模拟题 操作系统

9操作系统6 一判断题(共10题,共20分) 1. (√)在页式存储管理中,用户进程的地址空间是连续的,但允许将进程的各个页放在不连续的存储器块中。(2分)( ) . 2. (√)在页式存储管理中,用户进程的地址空间是连续的,但分页是根据用户需要来改变页的大小的。(2分)( ) . 3. (与模拟题5重复)设备的独立性就是用户可以任意使用系统设备而彼此互不影响。 (2分)() . 4. (与模拟题4重复)在数据传送的方式中,DMA控制方式是一种独立于CPU 完成外围设备和内存之间的数据交换方式,不需要CPU的频繁干涉。(2分)( ) . 5. (与模拟题4重复)批处理的主要缺点是CPU利用率低,不能并发执行。(2分) ( ) . 6. (与模拟题4重复)虚存的容量可以比内存大,也可以比内存小。(2分)( ) . 7. (与模拟题5重复)当系统中的进程数大于资源数时,进程竞争系统资源不一定会产生死锁。(2分)( ) . 8. (×)内存与设备之间的数据传输方式中,程序查询方式的传输效率最高。(2分) ( DMA是最高) . 9. (与模拟题4重复)分页系统中,对主存的访问仍是以字节为单位进行的。(2分) ( ) . 10. (×)UNIX的文件系统中把文件分为三类,其中有一类文件叫特别文件,这类文件是指其用途是由用户特别指定了性质的文件。(2分)( 作业中有这道判断) .

二单选题(共10题,共20分) 1. 如果一个程序为多个进程所共享,那么该程序的代码在执行过程中不能被修改,即程序应该是(B )。(2分) A.可执行码√ B.可重入码 C.可改变码 D.都对 . 2. 操作系统中,(B )是竞争计算机系统资源的基本单位。(2分) A.程序√ B.进程 C.作业 D.用户 . 3. 一台计算机有13台磁带机。它们由N个进程竞争使用,每个进程可能需要4台磁带机。N为(D )时,系统没有死锁危险。(2分) √ . 分)2(要完成从一个文件中读一批数据的功能,需要依次执行的操作为4. 与模拟题4重复A.建立文件,写文件,读文件,关闭文件 B.建立文件,写文件,关闭文件 C.打开文件,读文件,关闭文件 D.打开文件,写文件 . 5. (D)不是操作系统必须提供的功能。(2分) B.为进程提供系统调用命令 C.处理中断猜的 D.编译源程序 . 6. 通常进程是由(与模拟题5重复)、数据段和PCB三部分组成的。(2分) C.程序段 D.缓冲区 . 7. 当一个进程处于这样状态(A)时,称为等待状态。(2分) √A.它正等待输入一批数据 B.它正等待运行完成 C.它正等待分配给它一个时间片 D.它正等待进入内存 . 8. ( B)是分段式虚拟存储管理优于分页式虚拟存储管理之处。(2分) A.没有零头 √B.便于共享内存中数据 C.只需将进程的一部分调入内存,进程即可运行 . 9. 最佳适应算法的空白区一般是按照(C )排列。(2分) A.地址从小到大 B.地址从大到小 √C.尺寸从小到大 D.尺寸从大到小 E.成正比 F.成反比 G.无关H.成固定比例 . 10. WINDOWS进程管理引入线程后,CPU采用的调度算法是(C )算法。(2

上海大学操作系统(二)实验报告(全)

评分: SHANGHAI UNIVERSITY 操作系统实验报告 学院计算机工程与科学 专业计算机科学与技术 学号 学生姓名

《计算机操作系统》实验一报告 实验一题目:操作系统的进程调度 姓名:张佳慧学号 :12122544 实验日期: 2015.1 实验环境: Microsoft Visual Studio 实验目的: 进程是操作系统最重要的概念之一,进程调度又是操作系统核心的主要内容。本实习要求学生独立地用高级语言编写和调试一个简单的进程调度程序。调度算法可任意选择或自行设计。例如,简单轮转法和优先数法等。本实习可加深对于进程调度和各种调度算法的理解。实验内容: 1、设计一个有n个进程工行的进程调度程序。每个进程由一个进程控制块(PCB)表示。进程控制块通常应包含下述信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间以及进程的状态等,且可按调度算法的不同而增删。 2、调度程序应包含2~3种不同的调度算法,运行时可任意选一种,以利于各种算法的分析比较。 3、系统应能显示或打印各进程状态和参数的变化情况,便于观察诸进程的调度过程。 操作过程: 1、本程序可选用优先数法或简单轮转法对五个进程进行调度。每个进程处于运行R(run)、就绪W(wait)和完成F(finish)三种状态之一,并假设起始状态都是就绪状态W。为了便于处理,程序进程的运行时间以时间片为单位计算。进程控制块结构如下: 进程控制块结构如下: PCB 进程标识数 链指针 优先数/轮转时间片数 占用 CPU 时间片数 进程所需时间片数 进程状态 进程控制块链结构如下:

其中:RUN—当前运行进程指针; HEAD—进程就绪链链首指针; TAID—进程就绪链链尾指针。2、算法与框图 (1) 优先数法。进程就绪链按优先数大小从高到低排列,链首进程首先投入运行。每过一个时间片,运行进程所需运行的时间片数减 1,说明它已运行了一个时间片,优先数也减 3,理由是该进程如果在一个时间片中完成不了,优先级应该降低一级。接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运行。原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。 (2) 简单轮转法。进程就绪链按各进程进入的先后次序排列,进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相当于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加 1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。 (3) 程序框图

东北大学操作系统第二次实验报告

实验4:进程的管道通信 一、题目:进程的管道通信 二、目的: ●加深对进程概念的理解,明确进程和程序的区别; ●学习进程创建的过程,进一步认识并发执行的实质; ●分析进程争用资源的现象,学习解决进程互斥的方法; ●学习解决进程同步的方法; ●掌握Linux系统进程间通过管道通信的具体实现方法。 三、实验内容 ?使用系统调用pipe()建立一条管道线,两个子进程分别向管道写一句话(写 的内容自己定,但要有该进程的一些信息); ?父进程从管道中读出来自两个子进程的消息,显示在屏幕上; ?要求:父进程首先接收子进程p1发来的消息,然后再接收子进程p2发来的 消息。 四、实验要求 1、这是一个设计型实验,要求自行、独立编制程序; 2、两个子进程要并发执行; 3、实现管道的互斥使用。当一个子进程正在对管道进行写操作时,另一个欲写入管道的子进程必须等待。使用系统调用lockf(fd[1],1,0)实现对管道的加锁操作,用lockf(fd[1],0,0)解除对管道的锁定; 4、实现父子进程的同步,当父进程试图从一空管道中读取数据时,便进入等待状态,直到子进程将数据写入管道返回后,才将其唤醒。 五、程序流程图

图5.1 父进程流程图

图5.2子进程P1流程图图5.3子进程P2流程图 六、源程序 #include #include #include #include #include #include #include #include

操作系统(2)实验六

SHANGHAI UNIVERSITY <操作系统>实验报告 学院计算机工程与科学学院学号10122050 姓名王杰 指导老师张建 日期2014.03.07

实验六FAT文件系统实验 一、实验目的: 1、从系统分析的角度出发,了解FAT文件系统的组织结构和文件的存储方式。 2、进一步理解操作系统文件管理的基本思想。 二、实验内容: 1..进入DEBUG环境,装入FAT文件系统结构。 执行命令:L 0 0 0 21 2.观察1.44M软盘中FAT12文件系统结构。 执行命令:D 0000 软盘有两面,每面80个磁道,每个磁道18个扇区,每个扇区512个字节,所以软盘的容量是2*80*18*512 = 1474560, 1474560/1024/1024大约为1.44M。 3.分析文件分配表结构,了解用簇链映射的文件的链式存储结构。 执行命令:D 200

◆思考:上面屏幕显示首簇号为003的文件共包括几个扇区?它分布在哪几个物理扇区上? 答:首簇号为003的文件共包括2个扇区,它分布在0道0面2、3扇。 4.观察1.44M软盘中文件目录表FDT以及文件目录结构 执行命令:L 0 0 0 21 说明:将逻辑扇区0H开始的共21H个物理扇区装入DS:0000H起始的内存。 执行命令:D 2600 说明:显示从2600H地址开始的FDT文件表。 思考:①计算1.44M的软盘根目录最多可以容纳多少文件? 答:1.44MB软盘的文件目录表FDT共14个扇区,每个文件的目录登记项占用32个字

节,用作目录的一个扇区(512字节)最多只能装入512/32=16个文件。因此,1.44MB软盘的根目录下最多可建文件或子目录224个。 ②上图屏幕显示的文件BAK.txt的目录项中标示该文件的首簇号在何处?该文件是什么属性? 答:首簇号在第2行的1A~1B字节处,首簇号为002,该文件属于归档文件。 书上显示的文件office.txt首簇号在第6行的1A~1B字节处,首簇号为091,属归档文件。 ③书上面的屏幕显示第1~2行目录项表示的是什么项目? 答:第1~2目录项表示卷标。 5.观察1.44M软盘中文件目录表的长文件名目录结构 思考:①书上面屏幕显示的2~3行是什么目录项? 答:长名的第一项,也是最后一项。 ②若有一个文件名共长34个字符,要占多少目录项? 答:四个目录项,三个长目录项和一个短目录项。 6.自己动手做: ①观察测试软盘的FDT区,找到名为BAK的文件目录。该文件是什么类型的文件?文件放在磁盘的哪个位置?占用几个存储单位?调出其内容看看。 该文件为BAK.txt,属于归档文件。察看其首簇号为002,对应了数据区21H逻辑扇区。执行:L 0 0 0 21 D 2600 察看内容执行:L 8000 0 21 8

操作系统实验报告.实验一_WINDOWS进程初识

操作系统教程 实验指导书

实验一WINDOWS进程初识 1、实验目的 (1)学会使用VC编写基本的Win32 Consol Application(控制台应用程序)。 (2)掌握WINDOWS API的使用方法。 (3)编写测试程序,理解用户态运行和核心态运行。 2、实验内容和步骤 (1)编写基本的Win32 Consol Application 步骤1:登录进入Windows,启动VC++ 6.0。 步骤2:在“FILE”菜单中单击“NEW”子菜单,在“projects”选项卡中选择“Win32 Consol Application”,然后在“Project name”处输入工程名,在“Location”处输入工程目录。创建一个新的控制台应用程序工程。 步骤3:在“FILE”菜单中单击“NEW”子菜单,在“Files”选项卡中选择“C++ Source File”, 然后在“File”处输入C/C++源程序的文件名。 步骤4:将清单1-1所示的程序清单复制到新创建的C/C++源程序中。编译成可执行文件。 步骤5:在“开始”菜单中单击“程序”-“附件”-“命令提示符”命令,进入Windows “命令提示符”窗口,然后进入工程目录中的debug子目录,执行编译好的可执行程序:E:\课程\os课\os实验\程序\os11\debug>hello.exe 运行结果 (如果运行不成功,则可能的原因是什么?) : 答:运行成功,结果: (2)计算进程在核心态运行和用户态运行的时间 步骤1:按照(1)中的步骤创建一个新的“Win32 Consol Application”工程,然后将清单1-2中的程序拷贝过来,编译成可执行文件。 步骤2:在创建一个新的“Win32 Consol Application”工程,程序的参考程序如清单1-3所示,编译成可执行文件并执行。 步骤3:在“命令提示符”窗口中运行步骤1中生成的可执行文件,测试步骤2中可执行文件在核心态运行和用户态运行的时间。 E:\课程\os课\os实验\程序\os12\debug>time TEST.exe 步骤4:运行结果 (如果运行不成功,则可能的原因是什么?) 因为此程序是个死循环,所以运行时间为无穷大。_______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ _______________________________________________________________________________ __________________________________________________________________________

相关文档
相关文档 最新文档