请求分页式存储器重硬件的地址转换和缺页中断源程序及结果

合集下载

操作系统(第二版)习题答案

操作系统(第二版)习题答案

第1章一、填空1.计算机由硬件系统和软件系统两个部分组成,它们构成了一个完整的计算机系统。

2.按功能划分,软件可分为系统软件和应用软件两种。

3.操作系统是在裸机上加载的第一层软件,是对计算机硬件系统功能的首次扩充。

4.操作系统的基本功能是处理机(包含作业)管理、存储管理、设备管理和文件管理。

5.在分时和批处理系统结合的操作系统中引入“前台”和“后台”作业的概念,其目的是改善系统功能,提高处理能力。

6.分时系统的主要特征为多路性、交互性、独立性和及时性。

7.实时系统与分时以及批处理系统的主要区别是高及时性和高可靠性。

8.若一个操作系统具有很强的交互性,可同时供多个用户使用,则是分时操作系统。

9.如果一个操作系统在用户提交作业后,不提供交互能力,只追求计算机资源的利用率、大吞吐量和作业流程的自动化,则属于批处理操作系统。

10.采用多道程序设计技术,能充分发挥CPU 和外部设备并行工作的能力。

二、选择1.操作系统是一种B 。

A.通用软件B.系统软件C.应用软件D.软件包2.操作系统是对C 进行管理的软件。

A系统软件B.系统硬件C.计算机资源D.应用程序3.操作系统中采用多道程序设计技术,以提高CPU和外部设备的A 。

A.利用率B.可靠性C.稳定性D.兼容性4.计算机系统中配置操作系统的目的是提高计算机的B 和方便用户使用。

A.速度B.利用率C.灵活性D.兼容性5.C 操作系统允许多个用户在其终端上同时交互地使用计算机。

A.批处理B.实时C.分时D.多道批处理6.如果分时系统的时间片一定,那么D ,响应时间越长。

A.用户数越少B.内存越少C.内存越多D.用户数越多三、问答1.什么是“多道程序设计”技术?它对操作系统的形成起到什么作用?答:所谓“多道程序设计”技术,即是通过软件的手段,允许在计算机内存中同时存放几道相互独立的作业程序,让它们对系统中的资源进行“共享”和“竞争”,以使系统中的各种资源尽可能地满负荷工作,从而提高整个计算机系统的使用效率。

页式虚拟存储管理中地址转换和缺页中断实验报告

页式虚拟存储管理中地址转换和缺页中断实验报告

页式虚拟存储管理中地址转换和缺页中断实验报告一.实验目的1.深入了解页式存储管理如何实现地址转换;2.进一步认识页式虚拟存储管理中如何处理缺页中断。

二.实验仪器PC、windows操作系统、Visual C++6.0三.实验原理编写程序完成页式存储管理中地址转换过程和模拟缺页中断的处理。

实验具体包括:首先对给定的地址进行地址转换工作,若发生缺页则先进行缺页中断处理,然后再进行地址转换;最后编写主函数对所做工作进行测试。

四.实验步骤代码一#include <stdio.h>#include <string.h>#define n 64 //模拟实验中假定的页表长度#define length 10struct{int lnumber;//页号int flag;//表示页是否在主存,"1"表示在,"0"表示不在int pnumber;//该页所在主存块的块号int write; //该页是否被修改过,"1"表示修改过,"0"表示没有被修改过int dnumber;//该页存放在磁盘上的位置,即磁盘块号}page[n];//页表定义int m; //作业在主存中的主存块块数int page_length;//页表实际长度int p[length];//存放在主存中页的页号int head;//主存中页号队列头指针page_interrupt(lnumber) //缺页中断int lnumber;{int j;printf("发生缺页中断* %d\n",lnumber);j=p[head];//淘汰页的页号p[head]=lnumber; //新装入的页号head=(head+1) %m;if (page[j].write==1) //如果该页被修改过printf("将页%d写回磁盘第%d块\n",j,page[j].dnumber);//输出页号page[j].flag=0; //该页不在主存,执行缺页中断,将标志改为不在主存page[lnumber].pnumber=page[j].pnumber; //使j转去执行缺页中断page[lnumber].flag=1;//将所需页重新调入内存page[lnumber].write=0;//将标志改为未被修改过printf("淘汰主存%2d 中的页数%2d,从磁盘第%d 块中调入页%2d\n",page[j].pnumber,j,page[lnumber].dnumber,lnumber);}command(laddress,write)unsigned laddress;int write;{unsigned paddress,ad,pnumber,lnumber;kk:lnumber=laddress >> 10;ad=laddress &0x3ff;if(lnumber >= page_length)//如果页号大于页表长度,则该页不存在{printf("不存在该页\n");return;}if(page[lnumber].flag==1)//如果页表在主存内{pnumber=page[lnumber].pnumber;//从页表中取得块号paddress=pnumber<<10|ad;//合并块号和块内地址形成物理地址paddress;printf("逻辑地址是: %x 对应物理地址是:%x\n",laddress,paddress);if(write==1)//如果需要写,修改页的修改标志位page[lnumber].write=1;}else{page_interrupt(lnumber);//执行缺页中断goto kk;}}//命令处理函数结束void main(){int lnumber,flag,pnumber,write,dnumber;unsigned laddress;int i;printf("输入页表的信息,创建页表(若页号为-1,则结束输入)\n");printf("输入页号和辅存地址:");scanf("%d %d",&lnumber,&dnumber);//读入页号和辅存地址i=0;while(lnumber!=-1)//当页号不存在时,修改页表的信息,将各种标志位置0 {page[i].lnumber=lnumber;page[i].flag=0;page[i].write=0;page[i].dnumber=dnumber;i++;printf("输入页号和辅存地址:");scanf("%d%d",&lnumber,&dnumber);//重新读入新的页号和辅存地址}page_length=i;//页表的长度为页面的数量printf("输入主存块号,主存块数要小于%d,(以-1结束):",i);scanf("%d",&pnumber);m=0;//作业在主存中的主存块块数head=0;//主存中页号队列头指针while(pnumber!=-1){if(m<=i)//块号小于页号{page[m].pnumber=pnumber;//将块号写入页表,并装入内存page[m].flag=1;p[m]=m;m++;}scanf("%d",&pnumber);}printf("输入指令性质(1-修改,0-不需要,其他一结束程序运行)和逻辑地址:");scanf("%d%x",&write,&laddress);while(write==0||write==1){command(laddress,write);//执行相应的指令printf("输入指令性质(1-修改,0-不需要,其他一结束程序运行)和逻辑地址:");scanf("%d%x",&write,&laddress);}}//main()结束代码二#include<iostream>#include<iomanip>#include<list>using namespace std;char useSign[12][5]={{'+'},{'-'},{'*'},{"存"},{"取"},{'-'},{"移位"},{'+'},{"存"},{"取"},{'+'},{"存"}}; int PageAddress[12]={70,50,15,21,56,40,53,23,37,78,01,84};int PageNum[12]={0,1,2,3,0,6,4,5,1,2,4,6};int S_Station;int pPageNum[7];//页号pPageint pSign[7];int pStool[7];//页架号int pModify[7];//修改标志int pStation[7];//磁盘位置static int z=0;void Store(){for(int i=0;i<7;i++){if(i<4){pSign[i]=1;}elsepSign[i]=0;pPageNum[i]=i;pModify[i]=0;}int p1=1,p2=2,p3=3;for(i=0;i<7;i++){if(i<3){pStation[i]=p1;p1++;}elseif(i<6){pStation[i]=p2;p2++;}elsepStation[i]=p3;}pStool[0]=5;pStool[1]=8;pStool[2]=9;pStool[3]=1;}void CShow(){cout<<"操作";cout<<"页号";cout<<"页内地址";cout<<"标志";cout<<"绝对地址";cout<<"修改页号";cout<<"页架号";cout<<endl;}void Find(){int m_Pagenum;int m_Station;int Y_Station;//绝对地址int m_Stool;cout<<"输入页号及页内地址查询操作:";cin>>m_Pagenum>>m_Station;CShow();int i,j=0;//string m_Modify;for(i=0;i<12;i++){if(PageAddress[i]==m_Station){break;}}Y_Station=pStool[m_Pagenum]*1024+m_Station; if(pSign[m_Pagenum]==1) {if(strcpy(useSign[i],"存")!=0){pModify[m_Pagenum]=1;}}cout<<useSign[i]<<"\t";cout<<m_Pagenum<<"\t";cout<<m_Station<<"\t ";cout<<pSign[m_Pagenum]<<"\t";if(Y_Station!=m_Station){cout<<Y_Station<<"\t";cout<<pStool[m_Pagenum]<<"\t";cout<<Y_Station<<endl;}else{cout<<"*"<<m_Pagenum<<" "; for(j=z;j<7;j++){if(pSign[j]==1){z++;break;}}cout<<m_Pagenum<<"->"<<j<<"\t";pStool[m_Pagenum]=pStool[j];pSign[j]=0;pStool[j]=0;cout<<pStool[m_Pagenum]<<"\t";cout<<pStool[m_Pagenum]*1024+m_Station<<endl; }}int main(void){Store();char judge='Y';while(judge=='Y'){Find();cout<<"是否继续输入(请输入大写字母)?Y = 是N=否"<<endl;judge='N';cin>>judge;}return 0;}五.实验现象、结果记录及整理代码一代码二。

操作系统复习题3概要

操作系统复习题3概要

一、单项选择题1.联想存储器在计算机系统中是用于__C____的。

A.存储文件信息B.与主存交换信息C.内存地址变换D.内存管理信息2.作业在执行中发生了缺页中断,经操作系统处理后,应该执行的指令是_A_____。

A.被中断的前一条B.被中断的后一条C.作业的第一条D.被中断的指令3.实现虚拟存储器的目的是D______。

A.实现存储保护B.实现程序浮动C.扩充外存容量D.扩充内存容量4.在段页式存储系统中,一个作业对应_C_____。

A.多个段表B.一个段表,一个页表C.一个段表,多个页表D.多个段表,多个页表5.在虚拟页式存储管理方案中,完成将页面调入内存的工作的是___A___。

A.缺页中断处理B.页面淘汰过程C.工作集模型应用D.紧缩技术利用6.采用分页式内存管理时,重定位的工作是由___C___完成的。

A.操作系统B.用户C.地址转换机构D.内存空间分配程序7.在分页式内存管理系统中可能出现的问题是___A___。

A.颠簸B.不能共享C.外部碎片D.动态链接8.在下列有关分页式内存管理的叙述中正确的是_____D_。

A.程序和数据是在开始执行前一次性和装入的B.产生缺页中断一定要淘汰一个页面C.一个被淘汰的页面一定要写回外存D.在页面中有“访问位”和“修改位”等消息9. 在可变式分配方案中,最佳适应算法是将空白区在空白区表中按___C___次序排列。

A.地址递增B.地址递减C.容量递增D.容量递减10. 在可变分区分配方案中,将空白分区按地址递增次序排列是要采用_C_____。

A.最佳适应算法B.最差适应算法C.首次适应算法D.最迟适应算法11. 通常,采用紧缩法消除内存碎片的存储技术是_____C_。

A.固定分区法B.动态分区法C.可重定位分区法D.交换技术12. 在请求分页存储管理中,当所访问的页面不在内存时,便产生缺页中断,缺页中断是属于__B____。

A.I/O中断B.程序中断C.访管中断D.外中断13. 在内存管理中,分段管理和分页管理的主要区别是__D____。

模拟请求页式存储管理中硬件的地址转换和缺页中断处理

模拟请求页式存储管理中硬件的地址转换和缺页中断处理

一.实验内容模拟请求页式存储管理中硬件的地址转换和缺页中断处理 二.实验原理装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。

因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成“1”三.要求及方法:① 设计一个地址转换程序来模拟硬件的地址转换和缺页中断。

当访问的页在主存时则形成绝对地址,但不去模拟指令的执行,可以输出转换后的绝对地址来表示一条指令已执行完成。

当访问的页不在主存中时,则输出“*页号”来表示硬件产生了一次缺页中断。

模拟地址转换流程见图1。

② 编制一个FIFO 页面调度程序;FIFO 页面调度算法总是先调出作业中最先进入主存中的哪一页。

因此可以用一个数组来表示(或构成)页号队列。

数组中每个元素是该作业已在主存中的页面号,假定分配给作业的页架数为m ,且该作业开始的m 页已装入主存,则数组可由m 个元素构成。

P[0],P[1],P[2],…,P[m-1]它们的初值为P[0]:=0,P[1]:=1,P[2]:=2,…,P[m-1]:=m-1用一指针K 指示当要调入新页时应调出的页在数组中的位置,K 的初值为“0”,当产生缺页中断后,操作系统总是选择P[K]所指出的页面调出,然后执行:P[K]:=要装入的新页页号 K :=(k+1)mod m在实验中不必实际地启动磁盘执行调出一页和装入一页的工作,而用输出“OUT 调出的页号”和“IN 要装入的新页页号”来模拟一次调出和装入过程,模拟程序的流程图见附图1。

按流程控制过程如下:提示:输入指令的页号和页内偏移和是否存指令⎩⎨⎧ 0 1非存指令存指令,若d 为-1则结束,否则进入流程控制过程,得P1和d,查表在主存时,绝对地址=P1×1024+d③假定主存中页架大小为1024个字节,现有一个共7页的作业,其副本已在磁盘上。

系统为该作业分配了4个页架,且该作业的第0页至第3页已装入内存,其余3页未装入主四.主要代码及其说明#include <stdio.h>#include <string.h>#include <stdlib.h>#define M 1024#define R 4typedef struct _PTable{int Number; //页号int Flag; //标志int Fnum; //页架号int Mflag; //修改标志int Position; //该页存放在磁盘上的位置}PTable;//初始化PTable ptable[]={{0, 1, 5, 0, 11},{1, 1, 8, 0, 12},{2, 1, 9, 0, 13},{3, 1, 1, 0, 21},{4, 0, -1, 0, 22},{5, 0, -1, 0, 23},{6, 0, -1, 0, 121},};void menu();int change(char op,int number,int add);void display();int p[]={0,1,2,3},k=0;void main(void){int number,add,n;char op;while(n){display();fflush( stdin );printf("输入:操作页号页内地址(存指令用\"c\"代表)\n");scanf("%c %d %d",&op,&number,&add);change(op,number,add);printf("\"是否继续! (按1 继续按任意键结束)\"\n");scanf("%d",&n);system( "cls ");if(n==1)continue;elsebreak;}}void menu(){printf("操作码\t页号\t页内地址页架标志修改标志出入状态绝对地址(L)\n");}int change(char op,int number,int add){bool flag1=false;bool flag2=false;int i,address,cout,temp;;for(i=0;i<7;i++){if(op=='c'){ptable[number].Mflag=1;}if(ptable[i].Number==number && ptable[i].Flag==1){address=ptable[i].Fnum*M+add;flag1=true;}if(ptable[i].Number==number && ptable[i].Flag==0){cout=i;temp = p[k]; //将要出的页if(ptable[temp].Mflag==1){flag2=true;}//修改页表ptable[number].Flag=1; //修改新页标志ptable[number].Fnum=ptable[temp].Fnum; //修改新页页架address=ptable[number].Fnum*M+add;ptable[temp].Flag=0; //修改旧页ptable[temp].Fnum=-1; //修改页架ptable[temp].Mflag=0; //修改修改标志p[k]=number; //新页k=(k+1)%R;}}menu();if(flag1)printf("%c\t %d\t %d\t %d\t %d\t %d\t 无出入\t%d\n",op,number,add,ptable[number].Fnum,ptable[number].Flag,ptable[number].Mflag,address);else if(flag2)printf("%c\t *%d\t %d\t %d\t %d\t%d OUT:%d,IN:%d %d\n",op,number,add,number,ptable[number].Fnum,ptable[number].Flag,ptable[number].Mflag,temp,number,address);elseprintf("%c\t *%d\t %d\t %d\t %d\t %d\t IN%d\t %d\n",op,number,add,ptable[number].Fnum,ptable[number].Flag,ptable[number].Mflag,number,address);return 0;}void display(){int i;printf("********当前页表中的状态*********\n");printf("页号标志页架修标志\n");for(i=0;i<7;i++){printf("%d\t%d\t%d\t%d\n",ptable[i].Number,ptable[i].Flag,ptable[i].Fnum,ptable[i]. Mflag);}printf("当前主存中的页号为: ");for(i=0;i<4;i++){printf("%d ",p[i]);}printf("\n*********************************\n");}五,实验截图。

操作系统——页式存储管理

操作系统——页式存储管理

操作系统——页式存储管理分区式存储管理最⼤的缺点是碎⽚问题严重,内存利⽤率低。

究其原因,主要在于连续分配的限制,即它要求每个作⽤在内存中必须占⼀个连续的分区。

如果允许将⼀个进程分散地装⼊到许多不相邻的分区中,便可充分地利⽤内存,⽽⽆需再进⾏“紧凑”。

基于这⼀思想,产⽣了“⾮连续分配⽅式”,或者称为“离散分配⽅式”。

连续分配:为⽤户进程分配的必须是⼀个连续的内存空间。

⾮连续分配:为⽤户进程分配的可以是⼀些分散的内存空间。

分页存储管理的思想:把内存分为⼀个个相等的⼩分区,再按照分区⼤⼩把进程拆分成⼀个个⼩部分。

分页存储管理分为:实分页存储管理和虚分页存储管理⼀、实分页式存储管理实分页式存储最⼤的优点是内存利⽤率⾼,与⽬前流⾏的虚分页存储管理相⽐,具有实现简单,程序运⾏快的优点。

⽬前,飞速发展的硬件制造技术使得物理内存越来越⼤,因此我们认为,实分页式存储管理将是⼀种最有发展前途的存储管理⽅式。

1.1、基本原理假设⼀个⼤型饭店,所有的客房都是标准的双⼈间,部分客房已经住进客⼈,现在⼜有⼀个旅游团要求⼊住。

接待员统计了⼀下,对旅游团领队说:“贵团全体成员都能住下,两⼈⼀个房间,但是不能住在同⼀楼层了,因为每层空着的客房不够,更没有⼏个挨着的。

请原谅!”。

对于这样的安排,⼀般⼈不会感到奇怪。

因为旅游团本来就是由⼀位位个⼈或夫妻等组成的,⽽饭店的客房本来也是两⼈⼀间的,两⼈⼀组正好可住在⼀个客房⾥;另外,饭店⼏乎每天都有⼊住的和退房的客⼈,想在同⼀楼层找⼏间挨着的客房实在不容易。

①将整个系统的内存空间划分成⼀系列⼤⼩相等的块,每⼀块称为⼀个物理块、物理页或实页,页架或页帧(frame),可简称为块(block)。

所有的块按物理地址递增顺序连续编号为0、1、2、……。

这⾥的块相当于饭店的客房,系统对内存分块相当于饭店把⼤楼所有的客房都设计成标准的双⼈间。

②每个作业的地址空间也划分成⼀系列与内存块⼀样⼤⼩的块,每⼀块称为⼀个逻辑页或虚页,也有⼈叫页⾯,可简称为页(page)。

模拟分页式虚拟存储管理中硬件的地址转换和缺页中断--选择页面调度算法处理缺页中断

模拟分页式虚拟存储管理中硬件的地址转换和缺页中断--选择页面调度算法处理缺页中断

操作系统实验二〔第一题〕一.实验内容模拟分页式虚拟存储管理中硬件的地址转换和缺页中断,以及选择页面调度算法处理缺页中断。

二.实验目的在电脑系统总,为了提高主存利用率,往往把辅助存储器作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间综合可以超出主存的绝对地址空间。

用这种方法扩充的主存储区成为虚拟存储器。

三.实验题目模拟分页式存储管理中硬件的地址转换和产生缺页中断。

四.程序清单//// 操作实验二.cpp : 定义控制台应用程序的入口点。

//#include "stdafx.h"#include<iostream>#include<string>#include<fstream>using namespace std;class ins{private:string ope;long int page;long int unit;public:ins(){ }ins(string o,long int p,long int u):ope(o),page(p),unit(u){}void setope(string o){ ope=o;}void setpage(long int p){ page=p;}void setunit(long int u){ unit=u;}string getope(){return ope;}long int getpage(){return page;}long int getunit(){return unit;}};class work{private:long int Page;int sym;long int inum;long int onum;public:work(){}work(long int P, int s,long int i,long int o):Page(P),sym(s),inum(i),onum(o){} void setPage(long int P){ Page=P;}void setsym( int s){ sym=s;}void setinum(long int i){ inum=i;}void setonum(long int o){ onum=o;}long int getPage(){return Page;}int getsym(){return sym;}long int getinum(){return inum;}long int getonum(){return onum;}};void diaodu(work *w,ins * i,int numofins){ for(int j=0;j<numofins;j++){long int tempofk;long int a =i[j].getpage();for(int k=0;k<7;k++) //7是页表的页数if(w[k].getPage()!=a)continue;else{tempofk=k;break;}if(w[tempofk].getsym()==1)cout<<"绝对地址:"<<w[tempofk].getinum()*128+i[j].getunit()<<" "<<"磁盘地址为:"<<w[tempofk].getonum()<<" "<<"操作为:"<<i[j].getope()<<endl;else cout<<"*"<<"发生缺页中断"<<endl;}}int main(){ins*INS=new ins[12];INS[0].setope ("+");INS[0].setpage(0);INS[0].setunit(70);INS[1].setope ("+");INS[1].setpage(1);INS[1].setunit(50);INS[2].setope ("×");INS[2].setpage(2);INS[2].setunit(15);INS[3].setope ("存"); INS[3].setpage(3);INS[3].setunit(21);INS[4].setope ("取"); INS[4].setpage(0);INS[4].setunit(56);INS[5].setope ("-");INS[5].setpage(6);INS[5].setunit(40);INS[6].setope ("移位"); INS[6].setpage(4);INS[6].setunit(53);INS[7].setope ("+");INS[7].setpage(5);INS[7].setunit(23);INS[8].setope ("存"); INS[8].setpage(1);INS[8].setunit(37);INS[9].setope ("取"); INS[9].setpage(2);INS[9].setunit(78);INS[10].setope ("+"); INS[10].setpage(4);INS[10].setunit(1);INS[11].setope ("存"); INS[11].setpage(6);INS[11].setunit(84);work*W =new work[7]; ifstream in("g://operate1.txt");long int p;int s;long int i;long int o;for(int jj=0;jj<7 ;jj++){in>>p;in>>s;in>>i;in>>o ;W[jj].setPage(p);W[jj].setsym(s);W[jj].setinum(i);W[jj].setonum(o);}diaodu(W,INS,12);}五.结果显示操作系统实验二〔第二题〕一.用先进先出〔FIFO〕九.程序清单/ 操作系统实验二.cpp : 定义控制台应用程序的入口点。

操作系统复习题二

操作系统复习题二

操作系统复习题二一、判断题(共39小题)对1、如果用户把文件信息划分为一个个记录,存取时以记录为单位进行,这种文件的逻辑结构称为“记录文件”。

错2、删除一个文件所用的命令是DEL。

错3、死锁是指系统中的全部进程都处于阻塞状态。

对4、能够随机存取的文件一定能顺序存取。

错5、采用树形目录结构可以有效的利用文件的存储空间。

错6、当其中的一个进程正对该变量或资源进行操作时,不允许其他进程同时对它进行操作。

进程间的这种关系称为“互斥”。

对7、用P、V操作实现的通信,称之为是进程间的一种高级通信。

对8、P、V操作既可实现进程间的同步,也可实现互斥。

对9、树型目录结构能够解决文件重名问题。

对10、文件系统最基本的功能是实现按名存取。

对11、缺页中断不一定引起页面淘汰。

()对12、树型目录结构允许每个用户可以拥有多个自己的目录。

()对13、在实施分页式存储管理的系统中,每一个作业都有一个页表,完成各自的逻辑地址到物理地址的变换工作。

()对14、按照工作特性,鼠标应该属于字符设备之列。

()错15、并发性是指若干事件在同一时刻发生。

对16、虚存容量的扩大是以牺牲CPU工作时间以及内、外存交换时间为代价的。

对17、原语是一种不可分割的操作。

错18、在银行家算法中,只要当前系统剩余的资源数能够满足进程所提出的资源请求数,就应该接受这次对资源申请。

()对19、两个进程合作完成一件工作。

在并发执行中,一个进程要等待合作者发来消息,或建立某条件后才能向前执行。

进程间的这种制约关系应该是同步。

()对20、如果系统死锁了,那么它肯定处于不安全状态。

()错21、线程是最小的拥有资源的单位。

错22、分页式存储管理中,页的大小是可以不相等的。

对23、对临界资源应采取互斥访问方式来实现共享。

错24、文件系统中分配存储空间的基本单位是记录。

对25、在相同硬件的基础上,经过不同操作系统的扩充,可以在用户面前趁呈现出不同性质的虚拟机。

()错26、一个文件的绝对路径名,是从根目录的下一级开始书写的。

8存储器管理之请求分段存储管理方式

8存储器管理之请求分段存储管理方式

第十八讲存储器管理之请求分段存储管理方式1引言概述:请求分段存储管理系统也与请求分页存储管理系统一样,为用户提供了一个比内存空间大得多的虚拟存储器。

虚拟存储器的实际容量由运算机的地址结构肯定。

思想:在请求分段存储管理系统中,作业运行之前,只要求将当前需要的若干个分段装入内存,即可启动作业运行。

在作业运行进程中,若是要访问的分段不在内存中,则通过调段功能将其调入,同时还能够通过置换功能将暂时不用的分段换出到外存,以便腾出内存空间。

2请求分段中的硬件支持请求分段需要的硬件支持有:段表机制、缺页中断机构、地址变换机构。

2.1段名段长段的基址存取方式访问字段A修改位M存在位P增补位外存始址说明:存取方式:存取属性(执行、只读、允许读/写)访问字段A:记录该段被访问的频繁程度修改位M:表示该段在进入内存后,是不是被修悔改。

存在位P:表示该段是不是在内存中。

增补位:表示在运行进程中,该段是不是做过动态增加。

外存地址:表示该段在外存中的起始地址。

2.2缺段中断机构当被访问的段不在内存中时,将产生一缺段中断信号。

其缺段中断的处置进程如图:2.3地址变换机构3 分段的共享和保护为了实现分段共享,设置一个数据结构——共享段表,和对共享段进行操作的进程。

3.1 共享段表说明:所有的共享段都在共享段表中对应一个表项。

其中:共享进程计数器count :记录有多少个进程需要共享该分段,设置一个整型变量count 。

存取控制字段:设定存取权限。

段号:对于一个共享段,不同的进程能够各用不同的段号去共享该段。

3.2 共享段的分派和回收 3.2.1 共享段的分派大体进程:在为共享段分派内存时,对第一个请求利用该共享段的进程,由系统为该共享段分派一物理区,再把共享段调入该区,同时将该区的始址填入请求进程的段表的相应项中,还须在共享段表中增加一表项,填写有关数据,把count 置为1;以后,当又有其它进程需段名段长内存始址状态外存始址共享进程计数count 状态进程名进程号段号存取控制………………要挪用该共享段时,由于该共享段已被调入内存,故现在不必再为该段分派内存,而只需在挪用进程的段表中,增加一表项,填写该共享段的物理地址;在共享段的段表中,填上挪用进程的进程名、存取控制等,再执行count∶=count+1操作,以表明有两个进程共享该段。

计算机操作系统习题5参考答案

计算机操作系统习题5参考答案

习题5参考答案Ⅰ问答题1. 存储管理的主要功能是什么?答:(1)主存空间的分配与回收。

系统按照一定的算法把某一空闲的存储空间分配给作业或进程;用户不需要时,及时回收,以供其它用户程序使用。

(2)地址转换(地址重定位)。

把作业地址空间中使用的逻辑地址转换成内存空间中的物理地址。

(3)主存空间的共享和保护。

可用的主存空间可由两个或多个进程共享。

同时要保护系统程序区不被用户有意或无意的侵犯,不允许用户程序读写不属于自己地址空间的数据,避免各道程序间相互干扰。

特别是当一道程序发生错误时,不至于影响其它程序的运行。

(4)主存空间的扩充。

使用虚拟存储或自动覆盖技术提供比实际内存更大的空间。

2. 指出逻辑地址与物理地址的不同点。

答:用户的源程序一旦编译之后,每个目标模块都以0为基地址进行编址,这种地址称为逻辑地址或相对地址。

为了便于CPU访问,内存中的每个物理存储单元都有一个编号,这个编号称为内存地址,即物理地址(也称绝对地址)。

3. 何谓地址转换(重定位)?有哪些方法可以实现地址转换?答:当作业运行时,不能用逻辑地址在内存中读取信息,必须把作业地址空间中使用的逻辑地址转换成内存空间中的物理地址,这种转换称为地址转换。

实现地址转换的方法有:静态地址转换和动态地址转换。

4. 简述什么是覆盖?什么是交换?覆盖和交换的区别是什么?答:覆盖技术主要是指同一主存区可以被不同的程序段重复使用。

交换,就是系统根据需要把主存中暂时不运行的某个(或某些)作业部分或全部移到外存,而把外存中的某个(或某些)作业移到相应的主存区,并使其投入运行。

交换是由操作系统完成,用户并不知道。

操作系统按一定的策略采用“强占”和“礼让”的方法,把内存部分内容暂时放到硬盘交换区中。

覆盖是由用户控制,操作系统提供覆盖机制,用户给出该程序的覆盖结构。

覆盖机构将整个作业分为常驻和覆盖两部分。

子程序不会同时调入内存。

用户只要将最大的子程序作为覆盖区告诉系统即可。

计算机操作系统考试试题汇总

计算机操作系统考试试题汇总

计算机操作系统试题一填空:1.操作系统为用户提供三种类型的使用接口,它们是命令方式和系统调用和图形用户界面。

2.主存储器与外围设备之间的数据传送控制方式有程序直接控制、中断驱动方式、DMA方式和通道控制方式。

3.在响应比最高者优先的作业调度算法中,当各个作业等待时间相同时,运行时间短的作业将得到优先调度;当各个作业要求运行的时间相同时,等待时间长的作业得到优先调度。

4.当一个进程独占处理器顺序执行时,具有两个特性:封闭性和可再现性。

5.程序经编译或汇编以后形成目标程序,其指令的顺序都是以零作为参考地址,这些地址称为逻辑地址。

6.文件的逻辑结构分流式文件和记录式文件二种。

7.进程由程度、数据和FCB组成。

8.对信号量S的操作只能通过原语操作进行,对应每一个信号量设置了一个等待队列。

9.操作系统是运行在计算机裸机系统上的最基本的系统软件。

10.虚拟设备是指采用SPOOLING技术,将某个独享设备改进为供多个用户使用的的共享设备。

11.文件系统中,用于文件的描述和控制并与文件一一对应的是文件控制块。

12.段式管理中,以段为单位,每段分配一个连续区。

由于各段长度不同,所以这些存储区的大小不一,而且同一进程的各段之间不要求连续。

13.逻辑设备表(LUT)的主要功能是实现设备独立性。

14在采用请求分页式存储管理的系统中,地址变换过程可能会因为缺页和越界等原因而产生中断。

16. 段的共享是通过共享段表实现的。

17.文件的物理结构分为顺序文件、索引文件和索引顺序文件。

18.所谓设备控制器,是一块能控制一台或多台外围设备与CPU并行工作的硬件。

19. UNIX的文件系统空闲空间的管理是采用成组链接法。

20分页管理储管理方式能使存储碎片尽可能少,而且使内存利用率较高,管理开销小。

20.计算机操作系统是方便用户、管理和控制计算机软硬件资源的系统软件。

21.操作系统目前有五大类型:批处理操作系统、分时操作系统、实时操作系统、网络操作系统和分布式操作系统。

模拟分页式存储管理中硬件的地址转换和缺页中断2

模拟分页式存储管理中硬件的地址转换和缺页中断2

模拟分页式存储管理中硬件的地址转换和产生缺页中断分页式虚拟存储系统是把作业信息的副本存放在磁盘上,当作业被选中时,可把作业的开始几页先装入主存且启动执行。

为此,在为作业建立页表时,应说明哪些页已在主存,哪些页尚未装入主存。

作业执行时,指令中的逻辑地址指出了参加运算的操作存放的页号和单元号,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,这时根据关系式“绝对地址=块号×块长+单元号”计算出欲访问的主存单元地址。

如果块长为2 的幂次,则可把块号作为高地址部分,把单元号作为低地址部分,两者拼接而成绝对地址。

若访问的页对应标志为“0”,则表示该页不在主存,这时硬件发“缺页中断”信号,有操作系统按该页在磁盘上的位置,把该页信息从磁盘读出装入主存后再重新执行这条指令。

设计一个“地址转换”程序来模拟硬件的地址转换工作。

当访问的页在主存时,则形成绝对地址,但不去模拟指令的执行,而用输出转换后的地址来代替一条指令的执行。

当访问的页不在主存时,则输出“* 该页页号”,表示产生了一次缺页中断。

①定义相关数据结构如下typedef struct{int address; //进程的逻辑地址int meaddress; //进程的物理地址int page; //进程所在页号int add; //进程的位移量}arccell,AdjMatrix[MAX];typedef struct{char vex[MAX]; //进程名AdjMatrix arcs; //指向进程地址的数组int vexnum; //进程总数}Pro;typedef struct{int page; //页号int block; //块号int status; //该页是否在内存的状态位}pa_cell,pa_matrix[MAX];typedef struct{pa_matrix ptab; //指向页表相关信息的数组}pa_tab;②定义必要函数:void create_ptable(pa_tab & pa) //创建页表void exchange(Pro & P,pa_tab & pa) //地址转换函数③具体实验代码:#include<iostream.h>#define MAX 64#define eachpage 1024 // eachpage为每页(每块大小)int m; //m为简化后的页表行数typedef struct{int address; //进程的逻辑地址int meaddress; //进程的物理地址int page; //进程所在页号int add; //进程的位移量}arccell,AdjMatrix[MAX];typedef struct{char vex[MAX]; //进程名AdjMatrix arcs; //指向进程地址的数组int vexnum; //进程总数}Pro;void Create_pro(Pro & P)//创建进程{int i;cout<<"请输入进程总数:";cin>>P.vexnum;cout<<"请输入各进程名:";for(i=0;i<P.vexnum;i++)cin>>P.vex[i];cout<<"请输入各进程地址: ";for(i=0;i<P.vexnum;i++)cin>>P.arcs[i].address;for(i=0;i<P.vexnum;i++){P.arcs[i].page=P.arcs[i].address/eachpage;P.arcs[i].add=P.arcs[i].address%eachpage; // 逻辑地址=页号*页大小+位移量}}void print(Pro & P) //输出进程的相关信息{cout<<"各进程的页号页内地址为:"<<endl;for(int i=0;i<P.vexnum;i++)cout<<"进程名"<<P.vex[i]<<" 页号"<<P.arcs[i].page<<" 页内地址"<<P.arcs[i].add<<endl;cout<<endl;}//-------------页表的结构体-----------------typedef struct{int page; //页号int block; //块号int status; //该页是否在内存的状态位(为1表示在内存,为0表示不在内存)}pa_cell,pa_matrix[MAX];typedef struct{pa_matrix ptab; //指向页表相关信息的数组}pa_tab;void create_ptable(pa_tab & pa) //创建页表{int a,b,c;cin>>m; //输入页表行数cout<<"请输入页表相关信息:"<<endl;for(int i=0;i<m;i++){cin>>a>>b>>c;pa.ptab[i].page=a;pa.ptab[i].block=b;pa.ptab[i].status=c; //依次输入每行的页表信息}}//--------------地址转换函数-----------------void exchange(Pro & P,pa_tab & pa){for(int i=0;i<P.vexnum;i++)for(int j=0;j<m;j++)if(pa.ptab[j].page==P.arcs[i].page) //查询到页表里相对应的页号{if(pa.ptab[j].status==1) //若进程访问的页状态位为1,输出该进程物理地址{P.arcs[i].meaddress=pa.ptab[j].block*eachpage+P.arcs[i].address;//物理地址=块号*块大小+位移量cout<<"第"<<i+1<<"个进程物理地址为: "<<P.arcs[i].meaddress<<endl;}else //若访问的页状态位为0,表示该页不在主存,发生“缺页中断”信号cout<<"第"<<i+1<<"个进程地址转换发生缺页中断!"<<endl;}}void main(){Pro P;Create_pro(P); //创建进程cout<<endl;print(P);pa_tab pa;cout<<"由于页表信息太大,为了简化运算,请输入想输入的页表行数: ";create_ptable(pa); //创建页表exchange(P,pa); //调度地址转换函数}。

操作系统第四章答案

操作系统第四章答案

第四章存储器管理. 为什么要配置层次式存储器?答:这是因为:.设置多个存储器可以使存储器两端地硬件能并行工作..采用多级存储系统,特别是技术,这是一种减轻存储器带宽对系统性能影响地最佳结构方案..在微处理机内部设置各种缓冲存储器,以减轻对存储器存取地压力.增加中寄存器地数量,也可大大缓解对存储器地压力.、可采用哪几种方式将程序装入内存?它们分别适用于何种场合?答:()绝对装入方式:绝对装入方式只能将目标模块装入到内存中事先指定地位置.在多道程序环境下,编译程序不可能预知所编译地目标模块应放在内存地何处,困此,绝对装入方式只适用于单道程序环境.()可重定位装入方式:在多道程序环境下,所得到地目标模块地起始地址通常是从开始地,程序中地其它地址也都是相对于起始地址计算地.此时应采用可重定位装入方式,根据内存地当前情况,将装入模块装入到内存地适当位置.()动态运行时装入方式:可重定位装入方式可将装入模块装入到内存中任何允许地位置,故可用于多道程序环境;但这种方式并不允许程序运行时在内存中移动位置.、何谓静态链接?何谓装入时动太链接和运行时地动态链接?答:、静态链接:在程序运行之前,先将各目标模块及它们所需地库函数,链接成一个完整地装配模块,以后不再拆开,我们把这种事先进行链接地方式称为静态链接方式、装入时动态链接:这是指将用户源程序编译后所得到地一组目标模块,在装入内存时,采用边装入边链接地链接方式.、运行时动态链接:这是指对某些目标模块地链接,是在程序执行中需要该(目标)模块时,才对它进行地链接.、在进行程序链接时,应完成哪些工作?答:静态链接、装入时动态链接、运行时动态链接;、在动态分区分配方式中,应如何将各空闲分区链接成空闲分区链?答:为了实现对空闲分区地分配和链接,在每个分区地起始部分,设置一些用于控制分区分配地信息,以及用于链接各分区所用地前向指针;在分区尾部则设置一后向指针,通过前、后向链接指针,可将所有地空闲分区链接成一个双向链,为了检索方便,在分区尾部重复设置状态位和分区大小表目.当分区被分配出去以后,把状态位由“”改为“”,此时,前、后向指针已无意义.、为什么要引入动态重定位?如何实现?答:. 为了在程序执行过程中,每当访问指令或数据时,将要访问地程序或数据地逻辑地址转换成物理地址,引入了动态重定位.. 可在系统中增加一个重定位寄存器,用它来装入(存放)程序在内存中地起始地址,程序在执行时,真正访问地内存地址是相对地址与重定位寄存器中地地址相加而形成地,从而实现动态重定位.、在采用首次适应算法回收内存时,可能出现哪几种情况?应怎样处理这些情况?答:、回收区与插入点地前一个空闲区相邻接,此时应将回收区与插入点地前一分区合并,不必为回收区分配新表项,而只需修改其前一分区地大小.、回收区与插入点地后一个空闲区相邻接,此时可将两分区合并,形成新地空闲区,但用回收区地首址作为新空闲区地首址,大小为两者之和.、回收区同时与插入点地前、后两个空闲区邻接,此时可将三个分区合并,使用前一个分区地表项和首址,取消后一个分区地表项,大小为三者之和.、回收区既不与前一个分区相邻接,也不与后一个分区相邻接,这时应为回收区单独建立一新表项,填写回收区地首址和大小,并根据其首址插入到空闲链中地适应位置.. 分区存储管理中常采用哪些分配策略?比较它们地优缺点.答:分区存储管理中常采用地分配策略有:首次适应算法、循环首次适应算法、最佳适应算法、最坏适应算法..首次适应算法地优缺点:保留了高址部分地大空闲区,有利于后到来地大型作业地分配;低址部分不断被划分,留下许多难以利用地、小地空闲区,且每次分区分配查找时都是从低址部分开始,会增加查找时地系统开销..循环首次适应算法地优缺点:使内存中地空闲分区分布得更为均匀,减少了查找时地系统开销;缺乏大地空闲分区,从而导致不能装入大型作业..最佳适应算法地优缺点:每次分配给文件地都是最适合该文件大小地分区;内存中留下许多难以利用地小地空闲区..最坏适应算法地优缺点:给文件分配分区后剩下地地空闲区不至于太小,产生碎片地几率最小,对中小型文件分配分区操作有利;使存储器中缺乏大地空闲区,对大型文件地分区分配不利.. 在系统中引入对换后可带来哪些好处?答:能将内存中暂时不运行地进程或暂时不用地程序和数据,换到外存上,以腾出足够地内存空间,把已具备运行条件地进程或进程所需地程序和数据换入内存,从而大大地提高了内存地利用率.、为实现对换,系统应具备哪几方面地功能?答:兑换空间地管理,进程地换出,进程地换入.、在以进程为单位进行对换时,每次是否都将整个进程换出?为什么?答:. 以进程为单位进行对换时,每次都将整个进程换出;. 目地为了解决内存紧张地问题,提高内存地利用率.、为实现分页存储管理,需要哪些硬件支持?答:需要一台具有一定容量地内存及外存地计算机系统外,页表机制、缺页中断机构以及地址变换机构.、较详细地说明引入分段存储管理是为了满足用户哪几方面地需要.答:方便编程、信息共享、信息保护、动态增长、动态链接.、在具有快表地段页式存储管理方式中,如何实现地址变换?答:物理地址该段在主存地起始地址页框号*大小页内地址.. 为什么说分段系统较之分页系统更易于实现信息共享和保护?答:.对于分页系统,每个页面是分散存储地,为了实现信息共享和保护,则页面之间需要一一对应起来,为此需要建立大量地页表项;.而对于分段系统,每个段都从开始编址,并采用一段连续地地址空间,这样在实现共享和保护时,只需为所要共享和保护地程序设置一个段表项,将其中地基址与内存地址一一对应起来即可.、分页和分段存储管理有何区别?答:主要表现在()页是信息地物理单位,分页是为实现离散分配方式,以消减内存地外零头,提高内存地利用率.或者说,分页仅仅是由于系统管理地需要而不是用户地需要.段则是信息地逻辑单位,它含有一组其意义相对完整地信息.分段地目地是为了能更好地满足用户地需要.()页地大小固定且由系统决定,由系统把逻辑地址划分为页号和页内地址两部分,是由机器硬件实现地,因而在系统中只能有一种大小地页面;根据信息地性质来划分.()分页地作业地址空间是一维地,即单一地线性地址空间,程序员只需利用一个记忆符,即可表示一个地址;而分段地作业地址空间则是二维地,程序员在标识一个地址时,即需给出段名,又需给出段内地址.. 试全面比较连续分配和离散分配方式.答:()连续分配是指为一个用户程序分配一个连续地地址空间,包括单一连续分配方式和分区式分配方式,前者将内存分为系统区和用户区,系统区供操作系统使用,用户区供用户使用,是最简单地一种存储方式,但只能用于单用户单任务地操作系统中;分区式分配方式分为固定分区和动态分区,固定分区是最简单地多道程序地存储管理方式,由于每个分区地大小固定,必然会造成存储空间地浪费;动态分区是根据进程地实际需要,动态地为之分配连续地内存空间,常用三种分配算法: 首次适应算法,该法容易留下许多难以利用地小空闲分区,加大查找开销;循环首次适应算法,该算法能使内存中地空闲分区分布均匀,但会致使缺少大地空闲分区;最佳适应算法,该算法也易留下许多难以利用地小空闲区;()离散分配方式基于将一个进程直接分散地分配到许多不相邻地分区中地思想,分为分页式存储管理,分段存储管理和段页式存储管理. 分页式存储管理旨在提高内存利用率,满足系统管理地需要,分段式存储管理则旨在满足用户(程序员)地需要,在实现共享和保护方面优于分页式存储管理,而段页式存储管理则是将两者结合起来,取长补短,即具有分段系统便于实现,可共享,易于保护,可动态链接等优点,又能像分页系统那样很好地解决外部碎片地问题,以及为各个分段可离散分配内存等问题,显然是一种比较有效地存储管理方式;、虚拟存储器有哪些特征?其中最本质地特征是什么?答:多次性、对换性、虚拟性;值得说明地是,虚拟性是以多次性和对换性为基础地,或者说,仅当系统允许将作业分多次调入内存,并能将内存中暂时不运行地程序和数据换至盘上时,才有可能实现虚拟存储器;而多次性和对换性又必须建立在离散分配地基础上.. 实现虚拟存储器需要哪些硬件支持?答:()对于为实现请求分页存储管理方式地系统,除了需要一台具有一定容量地内存及外存地计算机外,还需要有页表机制,缺页中断机构以及地址变换机构;()对于为实现请求分段存储管理方式地系统,除了需要一台具有一定容量地内存及外存地计算机外,还需要有段表机制,缺段中断机构以及地址变换机构;、实现虚拟存储器需要几个关键技术?答:、分页请求系统、请求分段系统、在请求分页系统中,页表应包括哪些数据项?每项地作用是什么?答:、页号:将一个进程地逻辑地址空间分成若干个大小相等地片,成为页面或页,并对各页加以编号.、物理块号:内存空间分成与页大小相等地物理块,对物理块进行编号.、状态位:用于指示该页是否已调入内存,供程序访问时参考.、访问字段:用于记录本页在一段时间内被访问地次数,或记录本页最近已有多长时间未被访问.、修改位:表示该页调入内存是否被修改过.、外存地址:用于指示该页在外存上地地址,通常是物理块号,供调入该页时参考.、在请求分页系统中,应从何处将所需页面调入内存?答:外存.、在请求分页系统中,常采用哪几种页面置换算法?答:先来先服务,最近最久未使用,最佳置换算法.. 在请求分页系统中,通常采用哪种页面分配方式?答:三种分配方式:固定分配局部置换、可变分配全局置换、可变分配局部置换. . 在一个请求分页系统中,采用页面置换算法时,假如一个作业地页面走向为、、、、、、、、、、、,当分配给该作业地物理块数分别为和时,试计算在访问过程中所发生地缺页次数和缺页率,并比较所得结果.答:时,采用页面置换算法地缺页次数为次,缺页率为;时,采用页面置换算法地缺页次数为次,缺页率为.由此可见,增加分配给作业地内存块数,反而增加了缺页次数,提高了缺页率,这种现象被称为是现象.、实现算法所需要地硬件支持是什么?答:寄存器、栈.. 试说明改进型置换算法地基本原理.答:基本原理:在将一个页面换出时,如果该页已被修改过,便须将该页重新写回到磁盘上;但如果该页未被修改过,则不必将它写回磁盘上.在改进型算法中,除需考虑页面地使用情况外,还须再增加一个因素,即置换代价,这样,选择页面换出时,既要是未使用过地页面,又要是未被修改过地页面.、说明请求分段系统中地缺页中断处理过程?答:在请求分段系统中,每当发现运行进程所要访问地段尚未调入内存时,便由缺段中断机构产生一缺段中断信号,进入操作系统后由缺段中断处理程序将所需地段调入内存.缺段中断机构与缺页中断机构类似,它同样需要在一条指令地执行期间,产生和处理中断,以及在一条指令执行期间,可能产生多次缺段中断.缺段中断地处理过程如图所示.、如何实现分段共享?答:对于一个共享段,不同地进程可以各用不同地段号去共享该段.。

计算机操作系统实验_源码_模拟请求分页虚拟存储管理中的硬件地址变换过程[技巧]

计算机操作系统实验_源码_模拟请求分页虚拟存储管理中的硬件地址变换过程[技巧]
4. 进行缺页中断处理。中断返回后,重新执行该指令。 假定主存的每块长度为64个字节,现有一个具有8页的作业,系统为其分配了4个主存块(即 m=4),且最多分4块。其中第0页至第3页已经装入主存 。该作业的页表如表10—2所示。
地址变换算法框图如图10—1所示。
运行设计的地址变换程序 ,显示或打印运行结果。。因为只是模拟地址变换,并不
cin>>menu;
while(menu)
{
switch(menu)
{
case 1:
cout<<"请输入指令的逻辑地址:";
cin>>ins;
changeaddr(p,ins);
break;
case 2:
cout<<"谢谢使用,下次再见~"<<endl;
exit(0);
break;
default:
cout<<"输入有误,请重新输入~"<<endl;
cout<<"----------\t\t1.输入指令\t\t---------"<<endl;
cout<<"----------\t\t2.退出程序\t\t---------"<<endl;
cout<<"----------欢迎使用分页虚拟存储器硬件地址变换算法---------"<<endl;
cout<<endl<<"请输入您的选择:";
p[2].pno=2;p[2].flag=1;p[2].cno=9;p[2].modf=0;p[2].addr=013;

操作系统课后题答案

操作系统课后题答案

课本课后题部分答案第一章1.设计现代OS的主要目标是什么?答:(1)有效性(2)方便性(3)可扩充性(4)开放性2.OS的作用可表现在哪几个方面?答:(1)OS作为用户与计算机硬件系统之间的接口(2)OS作为计算机系统资源的管理者(3)OS实现了对计算机资源的抽象13.OS有哪几大特征?其最基本的特征是什么?答:并发性、共享性、虚拟性和异步性四个基本特征;最基本的特征是并发性。

14.处理机管理有哪些主要功能?它们的主要任务是什么?答:处理机管理的主要功能是:进程管理、进程同步、进程通信和处理机调度;进程管理:为作业创建进程,撤销已结束进程,控制进程在运行过程中的状态转换。

进程同步:为多个进程(含线程)的运行______________进行协调。

通信:用来实现在相互合作的进程之间的信息交换。

处理机调度:(1)作业调度。

从后备队里按照一定的算法,选出若干个作业,为他们分配运行所需的资源(首选是分配内存)。

(2)进程调度:从进程的就绪队列中,按照一定算法选出一个进程,把处理机分配给它,并设置运行现场,使进程投入执行。

15.内存管理有哪些主要功能?他们的主要任务是什么?北京石油化工学院信息工程学院计算机系3/48《计算机操作系统》习题参考答案余有明与计07和计G09的同学们编著 3/48答:内存管理的主要功能有:内存分配、内存保护、地址映射和内存扩充。

内存分配:为每道程序分配内存。

内存保护:确保每道用户程序都只在自己的内存空间运行,彼此互不干扰。

地址映射:将地址空间的逻辑地址转换为内存空间与对应的物理地址。

内存扩充:用于实现请求调用功能,置换功能等。

16.设备管理有哪些主要功能?其主要任务是什么?答:主要功能有: 缓冲管理、设备分配和设备处理以及虚拟设备等。

主要任务: 完成用户提出的I/O 请求,为用户分配I/O 设备;提高CPU 和I/O 设备的利用率;提高I/O速度;以及方便用户使用I/O设备.17.文件管理有哪些主要功能?其主要任务是什么?答:文件管理主要功能:文件存储空间的管理、目录管理、文件的读/写管理和保护。

操作系统习题解答

操作系统习题解答

第1章一、填空1.计算机由硬件系统和软件系统两个部分组成,它们构成了一个完整的计算机系统。

2.按功能划分,软件可分为系统软件和应用软件两种。

3.操作系统是在裸机上加载的第一层软件,是对计算机硬件系统功能的首次扩充。

4.分时系统的主要特征为多路性、交互性、独立性和及时性。

5.实时系统与分时以及批处理系统的主要区别是高及时性和高可靠性。

6.若一个操作系统具有很强的交互性,可同时供多个用户使用,则是分时操作系统。

7.如果一个操作系统在用户提交作业后,不提供交互能力,只追求计算机资源的利用率、大吞吐量和作业流程的自动化,则属于批处理操作系统。

二、选择1.操作系统是一种B 。

A.通用软件B.系统软件C.应用软件D.软件包2.操作系统是对C 进行管理的软件。

A系统软件B.系统硬件C.计算机资源D.应用程序3.操作系统中采用多道程序设计技术,以提高CPU和外部设备的A 。

A.利用率B.可靠性C.稳定性D.兼容性4.计算机系统中配置操作系统的目的是提高计算机的B 和方便用户使用。

A.速度B.利用率C.灵活性D.兼容性5.C 操作系统允许多个用户在其终端上同时交互地使用计算机。

A.批处理B.实时C.分时D.多道批处理6、多道程序设计是指(D )。

A、在实时系统中并发运行的多个程序B、在分布系统中同一时刻运行的多个程序C、在一台处理机上同一时刻运行多个程序D、在一台处理机上并发运行多个程序7、配置了操作系统的计算机是一台比原来的物理计算机功能更强的计算机,这样的计算机只是一台逻辑上的计算机,称为(C )计算机。

A、并行B、真实C、虚拟D、共享8、下列选择中,(D )不是操作系统关心的主要问题。

A、管理计算机裸机B、设计、提供用户程序与计算机硬件系统的界面C、管理计算机系统资源D、高级程序设计语言的编译器9、分时系统为了使多个用户能够同时与系统交互,最关键的问题是( C )。

A、计算机具有足够快的运算速度B、能快速进行内外存之间的信息交换C、系统能够及时接收多个用户的输入D、短时间内所有用户程序都能运行10、从用户观点来看,操作系统是(A )。

操作系统网上第二次作业参考答案(仅供参考)

操作系统网上第二次作业参考答案(仅供参考)

操作系统平时作业2一、填空练习1、在设备管理中,为了克服独占设备速度较慢、降低设备资源利用率的缺点,引入了,即用共享设备模拟独占设备。

2、常用的内存管理方法有、、和。

3、动态存储分配时,要靠硬件地址变换机构实现。

4、在存储管理中常用方式来摆脱主存容量的限制。

5、在页式管理中,页式虚地址与内存物理地址的映射是由和完成的。

6、在请求页式管理中,当发现所需的页不在时,产生中断信号,作相应的处理。

7、置换算法是在内存中没有时被调用的,它的目的是选出一个被的页面。

如果内存中有足够的存放所调入的页,则不必使用。

8、在页式管理中,页表的作用是实现从到的地址映射,存储页表的作用是。

9、段式管理中,以段为单位,每段分配一个区。

由于各段长度,所以这些存储区的大小不一,而且同一进程的各段之间不要求。

10、在段页式存储管理系统中,面向的地址空间是段式划分,面向的地址空间是页式划分。

11、文件的存储器是分成大小相等的,并以它为单位交换信息。

12、从资源分配的角度看,可以把设备分为独占设备和共享设备。

打印机属于设备,而磁盘属于设备。

13、虚拟设备是通过技术把设备变成能为若干用户的设备。

14、通道是一个独立于的专管的处理机,它控制与内存之间的信息交换。

15、缓冲区的设置可分为、、和。

16、在unix系统中,键盘、终端、打印机等以为单位组织和处理信息的设备称为;而磁盘、磁带等以为单位组织和处理信息的设备称为。

17、在多道程序环境中,用户程序的相对地址与装入内存后的实际物理地址不同,把相对地址转换为物理地址,这是操作系统的功能。

18、用户编写的程序与实际使用的物理设备无关,而由操作系统负责地址的重定位,我们称之为。

参考答案:1、虚拟分配技术2、分区管理,页式管理,段式管理,段页式管理3、重定位4、虚拟存储器5、页表,硬件地址变换机构6、硬件变换机构,内存,缺页,中断处理程序7、空闲页面,淘汰,空闲页面,置换算法8、页号,物理块号,记录内存页面的分配情况9、分配内存,连续的内存,不等,连续10、用户,物理实现11、物理块12、独占,共享13、spooling,独占,共享14、cpu15、单缓冲,双缓冲,多缓冲,缓冲池16、字符,字符设备,块,块设备17、地址重地位18、设备无关性(设备独立性)二、单项选择练习1、存储管理的目的是()。

模拟分页式存储管理中硬件的地址转换和产生缺页中断

模拟分页式存储管理中硬件的地址转换和产生缺页中断

实验三
课程名称:操作系统
课程类型:必修
实验项目名称:存储器管理
实验题目:模拟分页式存储管理中硬件的地址转换和产生缺页中断。

一、实验目的
在计算机系统中,为了提高主存利用率,往往把辅助存储器(如磁盘)作为主存储器的扩充,使多道运行的作业的全部逻辑地址空间总和可以超出主存的绝对地址空间。

用这种办法扩充的主存储器称为虚拟存储器。

通过本实验帮助同学理解在分页式存储管理中怎样实现虚拟存储器。

二、实验要求
模拟分页式存储管理中硬件的地址转换。

需要为作业建立页表,应说明哪些页已在主存,哪些页尚未装入主存。

作业执行时,指令中的逻辑地址指出了参加运算的操作存放的页号和单元号,硬件的地址转换机构按页号查页表,若该页对应标志为“1”,则表示该页已在主存,这时根据关系式“绝对地址=块号×块长+单元号”计算出欲访问的主存单元地址。

若产生缺页中断,引出操作系统来处理这个中断事件。

如果主存中已经没有空闲块,则可用FIFO 页面调度算法把该作业中最先进入主存的一页调出,存放到磁盘上,然后再把当前要访问的页装入该块。

调出和装入后都要修改页表页表中对应页的标志。

三、设计思想
1、物理设计
全局变量定义如下:
struct info//页表
{
int block;//物理页架号
int disk;//在磁盘上的物理块号
int flag; //内外标志
}pagelist[10];
int po;//队列标记
int t[4];
2、程序流程图
(见下图)
图1-1主程序的流程图
图1-2 init( )的流程图。

模拟请求页式存储管理中硬件的地址转换和缺页中断

模拟请求页式存储管理中硬件的地址转换和缺页中断

课程名称操作系统原理实验名称模拟请求页式存储管理中硬件的地址转换和缺页中断姓名学号专业班级实验日期成绩指导老师(①实验目的②实验原理③主要仪器设备④实验内容与步骤⑤实验数据记录与处理⑥实验结果分析⑦问题建议)一、实验目的模拟请求页式存储管理中硬件的地址转换和缺页中断,并用先进先出调度算法(FIFO)处理缺页中断。

二、实验内容内容:模拟请求页式存储管理中硬件的地址转换和缺页中断处理思想:装入新页置换旧页时,若旧页在执行中没有被修改过,则不必将该页重写磁盘。

因此,页表中增加是否修改过的标志,执行“存”指令和“写”指令时将对应的修改标志置成模拟算法流程三、程序及截图程序:#include<iostream>#include<iomanip>#include<list>using namespace std;char useSign[12][5]={{'+'},{'-'},{'*'},{"存"},{"取"},{'-'},{"移位"},{'+'},{"存"},{"取"},{'+'},{"存"}};int PageAddress[12]={70,50,15,21,56,40,53,23,37,78,01,84};int PageNum[12]={0,1,2,3,0,6,4,5,1,2,4,6};int S_Station;int pPageNum[7];//页号pPageint pSign[7];int pStool[7];//页架号int pModify[7];//修改标志int pStation[7];//磁盘位置static int z=0;void Store(){for(int i=0;i<7;i++){if(i<4){pSign[i]=1;}elsepSign[i]=0;pPageNum[i]=i;pModify[i]=0;}int p1=1,p2=2,p3=3;for(i=0;i<7;i++){if(i<3){pStation[i]=p1;p1++;}elseif(i<6){pStation[i]=p2;p2++;}elsepStation[i]=p3;}pStool[0]=5;pStool[1]=8;pStool[2]=9;pStool[3]=1;}void CShow(){cout<<"操作";cout<<"页号";cout<<"页内地址";cout<<"标志";cout<<"绝对地址";cout<<"修改页号";cout<<"页架号";cout<<"绝对地址";cout<<endl;}void Find(){int m_Pagenum;int m_Station;int Y_Station;//绝对地址int m_Stool;cout<<"输入页号及页内地址查询操作:";cin>>m_Pagenum>>m_Station;CShow();int i,j=0;//string m_Modify;for(i=0;i<12;i++){if(PageAddress[i]==m_Station){break;}}Y_Station=pStool[m_Pagenum]*1024+m_Station;if(pSign[m_Pagenum]==1){if(strcpy(useSign[i],"存")!=0){pModify[m_Pagenum]=1;}}cout<<useSign[i]<<" ";cout<<m_Pagenum<<" ";cout<<m_Station<<" ";cout<<pSign[m_Pagenum]<<" ";if(Y_Station!=m_Station){cout<<Y_Station<<" ";cout<<" ";cout<<pStool[m_Pagenum]<<" ";cout<<Y_Station<<endl;}else{cout<<"*"<<m_Pagenum<<" ";for(j=z;j<7;j++){if(pSign[j]==1){z++;break;}}cout<<m_Pagenum<<"->"<<j<<" ";pStool[m_Pagenum]=pStool[j];pSign[j]=0;pStool[j]=0;cout<<pStool[m_Pagenum]<<" ";cout<<pStool[m_Pagenum]*1024+m_Station<<endl;}}int main(void){Store();char judge='Y';while(judge=='Y'){Find();cout<<"是否继续输入?Y = 是N=否"<<endl;cin>>judge;}return 0;}截图:五.心得体会在实验过程中,遇到了一些问题但是在调试的过程中,会出现很多错误,有的自己可以解决,也有一些在同学的帮助下,基本都解决了所有问题。

计算机操作系统上机教案

计算机操作系统上机教案

计算机操作系统上机教案学院名称:河北政法职业学院系部名称:计算机系课程名称:计算机操作系统任课教师:张敏丽授课题目:操作系统实训1 授课序号:12 授课班级:司法信息2003级教学方法:讲授,实训课时:2学时教学目的:通过这一章的学习,使学生掌握该计算机系统的使用方法。

教学重点:界面的使用。

教学难点:熟悉该系统的操作命令。

作业布置:教学内容:一、实习内容选择一个计算机系统,熟悉该系统的操作命令,且掌握该计算机系统的使用方法。

二、实习目的配合操作系统课程的学习,模拟实现操作系统的功能,有助于对操作系统的理解。

操作系统功能的模拟实现可以在计算机系统的终端上进行,也可以在一台微型计算机上进行。

根据您的学习条件,选择一个计算机系统,熟悉对该系统的使用,那么您可以顺利地完成本课程的实习。

为了尽快地熟悉计算机系统,可编辑一个源程序,且对编辑好的源程序编译、运行、显示/打印运行结果等。

三、实习题目1打开:"开始"-"程序"-"附件"-"系统工具",①进行磁盘清理,②进行磁盘碎片整理,③进行磁盘扫描,④进行磁盘维护向导的操作,⑤进行"系统信息"中启动过程的设置.2浏览"控制面板"-"系统"---"设备管理器"信息的查看及"控制面板"-"网络"-的配置信息的作用.在"控制面板"-"电源管理"-中修改电源管理选项和,在"控制面板"-"日期/时间"-中修改日期和时间.2 按大纲模式建立一"培训练习"文档,文档内容为本本书目录的前三章,每章节只取两个标题,然后在普通视图下输入每节的前两行文字,并在页面视图下排版出满意的文档,最后存于"Word文档练习"中.4 根据"简历向导"建立一个人建立资料,用文件名"简历"存于"Word文档练习"文件夹中.授课题目:操作系统实训2 授课序号:14 授课班级:司法信息2003级教学方法:讲授,实训课时:2学时教学目的:通过这一章的学习,使学生掌握处理机的调度方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、源代码:
#include <cstdio>
#include <cstring>
#define SizeOfPage 100
#define SizeOfBlock 128
struct info//页表
{
long textNumber;//页号
bool flag; //标志
long block;//块号
long disk;//在磁盘上的位置
//bool dirty;//修改标志用于调度算法处理缺页中断}pagelist[SizeOfPage];
int num;
void init()
{
memset(pagelist,0,sizeof(pagelist));
//自定义的页号和其信息
pagelist[0].textNumber=0;
pagelist[0].flag=1;
pagelist[0].block=5;
pagelist[0].disk=11;
pagelist[1].textNumber=1;
pagelist[1].flag=1;
pagelist[1].block=8;
pagelist[1].disk=12;
pagelist[2].textNumber=2;
pagelist[2].flag=1;
pagelist[2].block=9;
pagelist[2].disk=13;
pagelist[3].textNumber=3;
pagelist[3].flag=1;
pagelist[3].block=1;
pagelist[3].disk=21;
pagelist[4].textNumber=4;
pagelist[4].flag=0;
pagelist[4].disk=22;
pagelist[5].textNumber=5;
pagelist[5].flag=0;
pagelist[5].disk=23;
pagelist[6].textNumber=6;
pagelist[6].flag=0;
pagelist[6].disk=121;
num=6;
}
void work()
{
bool stop=0;
long p,q;
char s[128];
do
{
printf("请输入指令的页号和单元号:\n");
if (scanf("%ld%ld",&p,&q)!=2)
{
scanf("%s",s);
if (strcmp(s,"exit")==0)
{
stop=1;
}
}
else if(q>128)
{
printf("注意!所输入的单元已经越界!\n请继续......\n");
q=-1;
}
else
{
if (pagelist[p].flag)
{
printf("绝对地址=%ld\n",pagelist[p].block*SizeOfBlock+q);
}
else
{
printf("* %ld\n",p);
printf("第%ld页未装入主存的页所占的块号!\n",p);
}
}
}while (!stop);
}
void printInit()
{
init();
int i;
printf("____________________________________________________________________\ n");
printf("| 页号| 标志| 主存块号|在磁盘上的位置\n");
for(i=0;i<=num;i++)
{
if(pagelist[i].flag==1)
printf("| %ld | %d | %ld | %ld \n",pagelist[i].textNumber,pagelist[i].flag,pagelist[i].block,pagelist[i].disk);
else
printf("| %ld | %d | | %ld \n",pagelist[i].textNumber,pagelist[i].flag,pagelist[i].disk);
}
printf("____________________________________________________________________\ n");
}
int main()
{
printf("初始化页表:\n");
printInit();
work();
return 0;
}
二、结果如下:
1、初始化页面
2、测试结果
a、当输入已在内寸中的页号时(地址单元越界和不越界两种)
b、当发生缺页时。

相关文档
最新文档