苏州大学操作系统实验1
- 格式:doc
- 大小:83.50 KB
- 文档页数:4
.. . …科技学院电子信息实验中心实验报告课程操作系统学号姓名徐金玮班级计算机专业计算机科学与技术指导教师妮学年/ 学期201 5 ~2016学年第一学期Linux操作系统实践上机容安排上机容一1、LINUX基本操作要求熟练掌握下述命令:Cd,ls,mkdir,rmdir,mv,rm,cp,less,cat,more,grep,find以及管道、IO重定向、目录与路径、绝对路径与相对路径、(登录)用户目录的概念等。
完成下列操作:1)检查当前目录,并将当前目录更改为用户目录(注意目录表示的意义:. 、.. 、~);2)在当前目录下创建名为sun和smith的子目录;3)将/etc目录下扩展名为.conf的文件拷贝到sun子目录中;4)在sun子目录中创建新的子目录2014-10-10;5)将/bin目录下的以m头的文件复制到2014-10-10目录下;6)列表用户目录下的所有文件,包括隐含文件(注:可以用cd ~命令将当前目录更改到用户目录);7)用参数-l列出/bin目录下的文件gzip的目录信息,并说明其各部分的意义,如文件长度、访问权限等;8)查找系统中文件名为touch的命令文件,并记录该文件的位置;9)使用帮助系统,获取touch命令的功能与用法,并使用该命令,实现现1至2个功能;10)分别用less、cat、more命令显示文件/etc/services的容; less:cat:more:11)执行ls -l /etc命令,并通过管道|将命令结果送more命令处理;12)运用重定向符,将目录/etc、/dev信息保存到文件dirinfo.txt中,存储位置为用户目录,用less、cat或more命令检查文件容是否正确;13)在用户目录拷贝dirinfo.txt一份备份文件,文件名为directoryinfo.bak,运用cat命令,将/etc/services文件容连接到directoryinfo.bak文件后面,并检查命令执行结果是否正确;14)使用目录列表命令列出/dev目录信息,并用grep命令过滤除文件名中含有“fd”字符的文件信息;15)将sun子目录中的文件(连同2014-10-10子目录)复制到用户目录下的tom目录中,并用ls命令检查是否正确,此时的目录结构应如下:(注意cp命令参数的用法)用户目录名\||--\sun||--\2010-10-10|||--\tom||--\2014-10-10||--\smith||--dirinfo.txt|--directoryinfo.bak;16)将tom目录名改为davi,文件名dirinfo.txt改为directoryinfo.txt;17)删除文件directoryinfo.txt,删除目录davi及其子目录;(注意rm命令参数的用法)上机容二1、vi编辑软件的使用(熟练掌握常用的编辑命令)。
实验一哲学家就餐问题一、实验目的1、熟练使用VC++6.0编译环境,调试并正确运行程序。
2、理解哲学家就餐问题中出现的问题,进而掌握死锁的必要条件。
3、理解源程序中产生和防止死锁的算法,及相关窗口操作。
4、熟悉哲学家就餐问题流程。
5、在VC++6.0环境下编译哲学家就餐问题演示程序,考虑其他解决死锁方法.二、实验原理1、问题描述有五个哲学家围坐在一圆桌旁,桌中央有一盘通心粉,每人面前有一只空盘子,每两人之间放一只筷子。
每个哲学家的行为是思考,感到饥饿,然后吃通心粉。
为了吃通心粉,每个哲学家必须拿到两只筷子,并且每个人只能直接从自己的左边或右边去取筷子。
2、分配方式方式一(不会进入死锁)仅当一个哲学家左右两边的筷子都可用时,才允许他拿筷子。
这样要么一次占有两只筷子(所有线程需要的资源)进行下一步的吃通心粉,然后释放所有的资源;要么不占用资源,这样就不可能产生死锁了。
方式二(会进入死锁)当筷子(资源)可用时,先分配左边的筷子,等待一会后再分配右边的筷子,由于这个过程中,左边的筷子一直没有释放,就有可能产生死锁了。
3、程序运行说明程序运行过程中会弹出一个MessageBox提示操作者操作:1)第一个对话框用于选择运行模式a.选择yes 表示采用的是运行的防止死锁的方式,这样的话整个程序可以一直运行下去,不会产生死锁。
b.选择no 表示运行产生死锁的方式会弹出第二个对话框。
2)第二个对话框用于选择运行时,线程运行的时间a. 选择res 线程时间比较短,很快就可以死锁b.选择no 线程时间跟选择yes 时候的时间差不多,产生死锁的时间稍微长一点。
三、实验过程及分析1、伪代码:1) 不发生死锁的方式(要么一下占用两支筷子,要么不占用)var mutexleftchopstick,mutexrightchopstick;beging:resting;waiting;p(mutexleftchopstick); //先改变左手筷子信号量p(mutexrightchopstick); //马上改变右手筷子信号量GetResource(leftchopstick,rightchopstick);eating;v(mutexleftchopstick);v(mutexrightchopstick);end2) 发生死锁的方式(一旦可以占用筷子,就马上占用)var mutexleftchopstick,mutexrightchopstick;beging:resting;waiting;p(mutexleftchopstick); //改变左手筷子信号量GetResource(leftchopstick); //获取左手筷子p(mutexrightchopstick); //改变右手筷子信号量GetResource(rightchopstick); //获取右手筷子eating;v(mutexleftchopstick);v(mutexrightchopstick);end2、代码分析:1)不发生死锁的方式:先确定两只筷子均没被占用才获取筷子,这样就打破了死锁的必要条件。
苏州大学操作系统原理课程试卷(三)共6页学院专业成绩年级学号姓名日期考试形式:闭卷时间:120分钟一、填空题(20分,每空1分)1、操作系统设计的两个目标是和。
2、P.V操作必须出现,有一个P操作就一定有一个。
3、临界资源是指,而临界区是指。
4、在请求式分页系统中,页框的分配有一种方式称为固定分配,固定分配有两种不同的方式,分别是和。
5、在请求式分页存储管理系统中,不能在计算机中实现的页面淘汰算法是,选择淘汰不再使用或最远的将来才使用的页的算法是,选择淘汰在主存驻留时间最长的页的算法是。
6、文件的结构就是文件的组织形式,从用户观点出发所看到的文件组织形式称为文件的;从实现观点出发,文件在外存上的存放组织形式称为文件的。
7、文件的目录组织形式主要有、、和等。
8、设备的寻址方式主要有和。
9、协同进程间一般通过进行间接通信。
二、选择题(20分,每题2分)1、紧耦合系统就是。
(1)分时操作系统(2)分布式操作系统(3)网络操作系统(4)并行操作系统2、以下不属于操作系统部件的是。
(1)进程管理(2)数据库管理(3)保护系统(4)命令解释器系统3、如P和V操作的信号量S初值为4,则现在S=-1,表示有个进程在等待。
(1)1 (2)2 (3) 3 (4)54、用V操作可以唤醒一个进程,被唤醒的进程状态变为。
(1)就绪(2)运行(3)阻塞(4)完成5、所有就绪状态的进程按建立的先后顺序形成一个对列,从队列首挑选一个进程,分给时间片q ,投入运行。
当时间片到时,而又没有完成的进程,将再次加入到队列尾,排队等待下一轮调度。
这种进程调度算法称为。
(1)循环轮转调度算法(2)优先数调度算法(3)固定周期轮转调度算法(4)多级队列调度算法6、页式存储管理的快表(TLBs)一般存放在。
(1)内存(2)外存(3)硬盘(4)CACHE7、虚拟存储器的最大容量由决定。
(1)内存容量(2)程序的地址空间(3)内外存容量(4)计算机的地址机构8、可以分配给多个进程的设备是。
苏州大学2014年硕士研究生入学考试初试试题科目代码:872 科目名称:数据结构与操作系统满分:150分注意:①认真阅读答题纸上的注意事项;②所有答案必须写在答题纸上;③本试题纸须同答题纸一并交回。
一、数据结构部分注意:算法可以用类C、类C++、类JAVA或类PASCAL等语言编写,并请写出类型说明。
1.判断,若错,改正。
15分(1) 在一个图中,所有顶点度数之和等于所有边的总数。
(2) 快排在被排序的数据已经基本有序的情况下最易发挥长处。
(3) 求子串的定位操作成为串的模式匹配。
2.Dijkstra用途,思想,验证其正确性,及图的数据结构。
3.将数的质因数分解并按递减顺序写成一个有序单链表。
如:2100->7.5.5.3.2.24.二叉链的二叉树,递归,验证是否严格二叉。
(无度为1的结点)5.顺序表,整数,长为n,尽可能高效求得第n/4个元素。
二、操作系统部分6、判断,若错,改正。
15分(1)任何操作系统中,系统资源分配最小单位为线程。
(2)死锁的进程必然至少一个互斥资源。
(3)虚拟存储器大小为内外存之和。
(4)文件访问效率有两个,物理结构和逻辑结构。
(5)spooling可以减少进程上下文切换次数。
7、从文件逻辑结构,物理结构和文件目录三方面入手,举实例说明如何提高存取速度(还是效率?就那个意思!)。
8、资源共享,创建和结束三方面说明进程和它创建的子进程,进程和他创建的线程之间的关系。
9、分页存储(二级页表),页表存于内存:(1) 一次访问内存200NS,求访问一个内存单元多少时间。
(2) 若三级页表,多少时间?(3) 引入联想寄存器,90%的页表项可在快表中命中,则一次访存时间?(假设一次快表10NS)(4) 若虚拟存储,页面命中率80%,缺页处理5万NS/次,则一个内存单元多少时间?(5) 采用虚拟存储,命中率80%,缺页时有10%需要置换(不用置换的缺页处理4万NS/次,否则8万NS/次),同问。
江苏科技⼤学操作系统实验操作系统实验实验⼀进程调度⼀、实验⽬的多道程序设计中,经常是若⼲个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。
因⽽引起进程调度。
本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。
⼆、实验要求 1.设计进程调度算法,进程数不定 2.包含⼏种调度算法,并加以实现 3.输出进程的调度过程——进程的状态、链表等。
三、参考例1.题⽬——优先权法、轮转法简化假设 1)进程为计算型的(⽆I/O ) 2)进程状态:ready 、running 、finish 3)进程需要的CPU 时间以时间⽚为单位确定 2.算法描述 1)优先权法——动态优先权当前运⾏进程⽤完时间⽚后,其优先权减去⼀个常数。
2)轮转法四、实验流程图开始键盘输⼊进程数n ,和调度⽅法的选择优先权法?轮转法产⽣n 个进程,对每个进程产⽣⼀个PCB ,并⽤随机数产⽣进程的优先权及进程所需的CPU 时间按优先权⼤⼩,把n 个进程拉成⼀个就绪队列撤销进程就绪队列为空?结束NYY注意:1.产⽣的各种随机数的取值范围加以限制,如所需的CPU 时间限制在1~20之间。
2.进程数n 不要太⼤通常取4~8个 3.使⽤动态数据结构 4.独⽴编程5.⾄少三种调度算法6.若有可能请在图形⽅式下,将PCB 的调度⽤图形成动画显⽰。
五.实验过程:(1)输⼊:进程流⽂件(1.txt ),其中存储的是⼀系列要执⾏的进程,每个作业包括四个数据项:进程名进程状态(1就绪2等待 3运⾏) 所需时间优先数(0级最⾼) 进程0 1 50 2 进程1 2 10 4 进程2 1 15 0 进程3 3 28 5 进程4 2 19 1 进程5 3 8 7 输出:进程执⾏流等待时间,平均等待时间本程序包括:FIFO 算法,优先数调度算法,时间⽚轮转调度算法产⽣n需的时间⽚数,已占⽤CPU 的时间⽚数置为0按进程产⽣的先后次序拉成就绪队列链=0?撤销该进程就绪队列为空吗?=轮转时间⽚数?NYYY 结束N(2)程序代码package进程调度;import java.util.*;class PCB//创建进程块{int Id;//进程编号int UseTime;//服务时间int NeedTime;//需要时间int Perior;//优先级String Status;//状态PCB(){Id++;UseTime=0;NeedTime=(int)Math.round(Math.random()*6)+1;//随机产⽣需要时间Perior=(int)Math.round(Math.random()*5)+1;//随即产⽣优先级Status="Ready";//初始状态为就绪}}class Found//定义系统处理⽅法类{ArrayList sequnce;//创建就绪队列PCB pcb[]=new PCB[5];int StartTime=0;int SystemTime=(int)(Math.random()*3)+1;//随即产⽣系统时间 Found(){sequnce=new ArrayList ();for(int i=0;i<5;i++){pcb[i]=new PCB();pcb[i].Id=i+1;sequnce.add(pcb[i]);}}void FCFS()//先来先服务算法{PCB Running=null;while(sequnce.size()>0)//就绪队列不为空{Running=sequnce.remove(0);/doc/ca1988868.htmleTime=Running.NeedTime;Running.NeedTime=0;Running.Perior=0;System.out.println("当前系统时间:"+SystemTime);SystemTime+=/doc/ca1988868.htmleTime;ShowMessages(Running);}}void RR()//时间⽚轮换算法{PCB Running=null;int Time=SystemTime;while(sequnce.size()>0){System.out.println("当前系统时间:"+SystemTime); Running=sequnce.remove(0); if(Running.NeedTime<=Time){/doc/ca1988868.htmleTime=Running.NeedTime;Running.NeedTime=0;Running.Perior=0;Running.Status="Finish";SystemTime+=/doc/ca1988868.htmleTime;else{/doc/ca1988868.htmleTime+=Time;Running.NeedTime-=Time;Running.Perior--;Running.Status="Ready";sequnce.add(Running);SystemTime+=Time;}ShowMessages(Running);}}void ShowMessages(PCB p)//输出信息{System.out.println("当前运⾏进程:"+p.Id+" "+"服务时间:"+/doc/ca1988868.html eTime+" "+"需要时间:"+p.NeedTime+" "+"优先级:"+p.Perior+" "+"状态:"+p.Status);if(sequnce.size()>0){System.out.println("当前就绪进程:");for(PCB p1:sequnce)System.out.println("进程编号:"+p1.Id+" "+"服务时间:"+/doc/ca1988868.html eTime+" "+"需要时间:"+p1.NeedTime+" "+"优先级:"+p1.Perior+" "+"状态:"+p1.Status);System.out.println("--------------------------------------------------------------------------");}}else{System.out.println("当前系统中已经没有就绪进程!"); } System.out.println('\n');}}class Menu//主界⾯菜单{Scanner sc=new Scanner(System.in); int print() { System.out.println("************************************ ********"); System.out.println(" 进调度算法演⽰");System.out.println("**************************************** ****");System.out.println(" 1.先来先服务(FCFS)算法");System.out.println(" 2.时间⽚轮换(RR)算法"); System.out.println(" 3.退出该程序"); System.out.print("请选择所要采⽤的算法:"); int flag=sc.nextInt();return flag;}void select(){int flag=print(); switch (flag){case 1:Found Process1=new Found();Process1.FCFS(); print();case 2:Found Process2=new Found();Process2.RR(); print();case 3:。
《人工智能》实验指导书专业年级姓名学号指导老师实验室使用日期苏州大学计算机科学与技术学院统一印制二零零二年八月实验一启发式搜索一、实验目的:熟悉和掌握启发式搜索的定义、估价函数和算法过程,并利用A 算法求解九宫问题,理解求解流程和搜索顺序。
二、实验方法:1.先熟悉启发式搜索算法;2.用C、C++或JA V A 语言编程实现实验内容。
三、实验背景知识:1.估价函数在对问题的状态空间进行搜索时,为提高搜索效率需要和被解问题的解有关的大量控制性知识作为搜索的辅助性策略。
这些控制信息反映在估价函数中。
估价函数的任务就是估计待搜索节点的重要程度,给这些节点排定次序。
估价函数可以是任意一种函数,如有的定义它是节点x处于最佳路径的概率上,或是x节点和目标节点之间的距离等等。
在此,我们把估价函数f(n)定义为从初始节点经过n节点到达目标节点的最小代价路径的代价估计值,它的一般形式是:f(n) = g(n) + h(n)其中g(n)是从初始节点到节点n的实际代价,g(n)可以根据生成的搜索树实际计算出来;h(n)是从n到目标节点的最佳路径的代价估计,h(n)主要体现了搜索的启发信息。
2. 启发式搜索过程的特性(1)可采纳性当一个搜索算法在最短路径存在的时候能保证能找到它,我们就称该算法是可采纳的。
所有A*算法都是可采纳的。
(2)单调性一个启发函数h是单调的,如果a)对所有的状态n i和n j,其中n j是n i的子孙,h(n i )- h(n j )≤cost(n i,n j ),其中cost(n i,n j )是从n i到n j 实际代价。
b)目标状态的启发函数值为0,即h(Goal)=0.具有单调性的启发式搜索算法在对状态进行扩展时能保证所有被扩展的状态的f值是单调递增(不减)。
(3)信息性比较两个启发策略h1和h2,如果对搜索空间中的任何一个状态n 都有h1(n) ≤h2(n),就说h2比h1具有更多的信息性。
苏州大学操作系统原理课程试卷(一)答案共4页学院专业成绩年级学号姓名日期考试形式:闭卷时间:120分钟一、填空题(20分,每空1分)1、进程通信的常用方式有直接通信和间接通信等。
2、如果P(S1)和P(S2)两个操作在一起,那么P操作的顺序至关重要,一个同步P操作与一个互斥P操作在一起时同步P操作在互斥P操作前。
而两个V操作的次序无关紧要。
3、P(S):表示申请一个资源;V(S)表示释放一个资源。
信号量的初值应该大于等于0 。
4、在请求式分页系统中,页框的分配中有一种方式称为固定分配。
固定分配有两种不同的方式,分别是平均分配和按比率分配。
5、在请求式分页存储管理系统中,不能在计算机中实现的页面淘汰算法是最佳算法,选择淘汰不再使用或最远的将来才使用的页的算法是先进先出算法,选择淘汰在主存驻留时间最长的页的算法是最近最少使用。
6、将作业地址空间中的逻辑地址转换为主存中的物理地址的过程称为地址转换。
7、访问磁盘时间由三部分组成寻道时间、旋转延迟时间和传输时间。
8、I/O设备的控制方式有轮询、中断和DMA 等。
二、判断题(20分,每题4分,请说明正确与否的理由)1、分布式系统就是紧偶合系统。
错。
分布式系统是松散偶合系统。
2、在一个只有单个CPU的计算机中,进程不能并行操作。
错。
一个进程在利用CPU运行,另一个进程可以同时进行I/O操作,它们是并行的。
3、线程可以分为内核级(Kernel Thread)和用户级(User Thread)两种,操作系统不可以直接调度用户级的线程。
对。
4、有m个进程的操作系统出现死锁时, 死锁进程的个数为1<k≤m。
对。
5、在虚存系统中, 只要磁盘空间无限大, 作业就能拥有任意大的编址空间。
错。
作业的编制空间是由计算机的字长决定的。
三、简答题(20分,每题5分)1、为什么要在设备管理种引入缓冲技术?答:1)解决设备间速度的不匹配;2)减少中断频率;3)提高并行性。
2、CPU调度可能发生的时机有哪些?答:CPU调度可能发生在当一个进程:●从运行转到等待●运行转到就绪●从等待转到就绪●终止运行3、同步机构应遵循哪些原则?答:使用互斥区的原则:有空让进:当无进程在互斥区时,任何有权使用互斥区的进程可进入。
2017年初试真题(回忆版)1.用顺序存储结构实现线性表时,在线性表中查找等于x的元素,人们通常先在线性表尾部临时添加一个等于x的元素,这样做可以加快查找速度,为什么?用单链表实现线性表时,也能么?为什么?2.用基数排序方法对关键字序列012、321、234、543、456、765、678、987、890、109 从小到大排序,写出各趟的结果。
3.一个由两两不等数组成的有序序列具有以下特点:(1)数1在该序列中(2)若数x在序列中,则2x、3x、5x也在该序列中(3)除此之外,该序列无其他数。
编写算法,输出该序列中最小的100个数,要求使用递归实现。
4.设用二叉链表实现二叉排序树(即二叉查找树),一个节点除了一个数据域data,一个左孩子指针域lchild和一个右孩子指针域rchild外,还有一个存储该结点的右子树的结点个数与1之和的域rsize。
编写算法,给出存储第k大元素的结点地址。
5.设用邻接表实现有向图,基于图的广度优先搜索策略,编写算法,判断有向图中是否存在从序号为i的顶点到序号为j的顶点的路径。
6.判断题(20分、10道)错误请说理由。
(1)操作系统实现双模式需要硬件支持(2)(3)一个系统n个进程,最多一个处于运行状态(4)线程资源分配的基本单位是xx(记不得了)(5)m个进程系统死锁,死锁进程数:1<k<m。
(6)触摸屏是一个输出设备。
(7)一个12000RPM磁盘的平均旋转延迟时间是5ms。
(8)磁盘上存储的文件一般组织为顺序文件。
(9)产生颠簸(抖动)原因是内存中进程太多。
(10)树形目录和无环图目录无法实现文件共享7.请用管程来实现读者优先的读写者问题,并写出管程的伪代码以及读者写者的伪代码。
8.一个进程p的空间为64k,运行在一个请求式分页系统中,每个页面大小为8k,该进程的页表如下其中,有效位=1表示页面在内存,0表示页面不在内存,请将逻辑地址OX050c、OX1302、OX1F71、OX2C57、OX4400转换为对应的物理地址并写出计算过程。
操作系统_苏州大学中国大学mooc课后章节答案期末考试题库2023年1.以下有关内核线程的论述,正确的是()。
参考答案:内核线程由内核进行创建和撤销_内核线程由内核完成线程调度_内核线程由内核管理2.引入线程后,处理机只在线程间切换。
参考答案:错误3.Java中的线程有四种状态,分别是:可运行(Runable)、就绪(Ready)、阻塞(Blocked)、死亡(Dead)。
参考答案:错误4.程序开发者必须创建一个线程去管理内存的分配。
参考答案:错误5.Unix的exec创建的进程可以和创建它的父进程共享各类资源,从而使得它的创建、切换成本较低。
参考答案:错误6.为了照顾紧迫型进程,应采用()调度策略。
参考答案:PR7.可能存在饥饿问题的调度算法有()。
参考答案:PR_SJF8.在页式存储管理中,引入快表可以减少每一次的内存访问时间。
参考答案:错误9.用户程序中使用的从零地址开始的地址编号是逻辑地址。
参考答案:正确10.内存管理的目的是()。
参考答案:进行存储保护_提高内存数据访问的速度_提高内存利用率11.离散内存分配技术包括()。
参考答案:段页式_分段_分页12.存在外碎片的存储管理方式有()。
参考答案:可变分区分配_段式存储管理13.把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上的备份区,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需的程序或数据,调入内存。
这种技术是()。
参考答案:交换14.一个32位地址的计算机使用两级页表。
虚拟地址被分成9位的顶级页表域、11位的二级页表域和一个偏移量,页面大小是()。
参考答案:4KB15.分页存储管理中的页表由()建立参考答案:操作系统16.TLB在计算机系统中是用于()。
参考答案:地址变换17.在页式存储管理中,为了实现主存的空间分配,应设置()。
参考答案:页表18.在RR算法中,时间片越小越好。
参考答案:错误19.SJF算法可以获得最小的响应时间。
苏州⼤学⽂正学院操作系统复习题苏州⼤学操作系统期末复习题⼀、填空(15 ’)⼆、选择(1.5 ’*20)1.处理器能直接访问_________A. 寄存器B. 硬盘C. 主存D. 光盘E. ⾼速缓冲存储器2.把逻辑地址转换成绝对地址的⼯作称为_________A.加载B.重定位C.物理化D.逻辑化3.主存的地址空间常称为_________A. 逻辑地址空间B. 程序地址空间C. 相对地址空间D. 物理地址空间4.动态重定位是在下列哪种情况下完成的()A.作业执⾏前集中⼀次B.作业执⾏过程中集中⼀次C.作业执⾏过程中D.作业执⾏过程中由⽤户完成5.⽀持程序在内存中移动的地址转换机制是()A. 页式地址转换B. 段式地址转换C. 静态重定位D. 动态重定位6.每次分配时总是顺序查找空闲区表,找到第⼀个能满⾜作业长度要求的空闲区,此种分配算法称为()A. 最先适应分配算法B. 最优适应分配算法C. 最坏适应分配算法D. 随机适应分配算法7.在可变分区存储管理中,为了实现主存的空间分配,应设置()A.页表B.段表C.位⽰图 D.空闲区表8.在可变分区存储管理中,某作业完成后要回收其主存空间,该空间可能与相邻空闲区合并,在修改空闲区表时使空闲区数不变且空闲区起始地址不变的情况是()A.⽆上邻空闲区也⽆下邻空闲区B.有上邻空闲区但⽆下邻空闲区C.⽆上邻空闲区但有下邻空闲区D.有上邻空闲区也有下邻空闲区9.在⼀个可变分区存储管理中,最坏适应分配算法宜将空闲区表中的空闲区按下列次序排列的是()A.地址递增B.地址递减C.长度递增D.长度递减10.页式存储管理中的页表由()A. ⽤户建⽴B. 编译程序建⽴C. 操作系统建⽴D. 编辑程序建⽴11.不使⽤快表的纯分页式存储管理时,每读写⼀个数据,要访问主存()A. 1次B. 2次C. 3次D. 4次12.虚拟存储器是_______A.实际上不存在的存储器B.容量扩⼤了的主存C.可提⾼计算机运算速度的设备D.可以容纳总和超过主存容量的多个作业同时运⾏的⼀个地址空间13.在采⽤页式存储管理的系统中()A.不可以把作业分散到⼏个不连续的主存区域B.不需要采⽤移动技术移动作业区C.不需要硬件⽀持D .不采⽤动态重定位的⽅式装⼊作业14.LRU页⾯调度算法时选择先调出的页⾯是()A.最近才使⽤的 B.最久未被使⽤的C.驻留时间最长的 D.驻留时间最短的15.如果处理器有32位地址,则它的虚拟地址空间为()A. 2GBB. 4GBC. 640KBD. 16MB16.采⽤段式存储管理的系统中,若地址⽤24位表⽰,其中8位表⽰段号,则允许每段的最⼤长度是__________A. 224B. 216C. 28D. 232三、名词解释(3 ’*4)1.静态重定位在装⼊⼀个作业时,把作业中的指令地址和数据地址全部转换成绝对地址,这种定位⽅式称为静态重定位。
实验一Linux系统
实验目的:
(1)熟悉Linux操作系统,并尝试在Linux环境下编程。
(2)使用vi编辑器,了解用C语言编写文本处理程序的具体过程。
实验要求:
(1)根据报告册上的提示进行操作,创建自己的目录,以及输入编译和执行C 程序。
(2)使用C语言编写一个词频(限英文文章)统计程序,使之能够给出各个单词在输入文件中的出现次数。
(3)使用C语言编写一个反向打印程序,使之能够按与输入文件中文本行相反的次序来打印(即后出现的文本行先打印)。
问题分析:
1.1实验没有具体要求英语文章是从文件中读出,还是直接由用户从屏幕上输入一篇,因此要根据自己的情况确定读取方式。
1.2统计每个单词出现的次数及频率。
1.3将结果输出到屏幕上,要解决如何不重复输出相同单词出现的频率。
1.4如何把用户输入的文本行以相反的顺序输到屏幕上的算法。
实验程序清单:
#include <string.h>
#include <stdio.h>
void main()
{
char str[500][26]; //定义一个二维字符数组存放单词
const char str1[4]="000"; //定义一个const变量,用于停止输入
const char str2=' '; //定义一个const变量,用于初始化二维数组
int num[500]; //定义一个整型数组,用于单词出现频率的计数
int mark[500]; //定义一个整型数组,用来标记已出现过的单词
int i,j,m,x;
int len;
double q[500]; //定义一个浮点型数组,用来存放出现频率的数值again:
m=0;j=0;i=0;x=0; //对m,j,i,x进行初始化
for(m=0;m<500;m++) //对num,mark,q数组初始化
{
num[m]=0;
mark[m]=0;
q[m]=0;
}
for(m=0;m<500;m++) //对二维数组str进行初始化
{
strcpy(str[m],&str2);
}
printf("请输入英文文章(单词数限制在500以内,每个单词不大于25个字符)\n"); //对用户的引导语句
printf("输入“000”代表文章输入终止!\n"); //对用户的引导语句
for(m=0;m<500;m++) //使用for循环,将用户输入的单词依次放入二维数组{
scanf("%s",str[m]);
if(strcmp(str[m],str1)==0)//直到用户输入000,结束输入
break;
}
for(i=0;i<m;i++) //使用两层for循环将用户输入的单词出现次数放入num数组{
for(j=0;j<m;j++)
{
if(strcmp(str[i],str[j])==0)
{
if(j>i) //当j大于i时
{
mark[i]=1; //标记此时的mark
}
num[i]++; //当两个单词相同,num[i]加1
}
}
q[i]=(double)num[i]/m; //获得单词出现的频率
}
for(i=0;i<m;i++) //在屏幕上输出结果
{
if(mark[i]==0) //当标记为0时
{
printf("%s出现%d次",str[i],num[i]); //打印结果
printf(" 频率为%lf\n",q[i]);
}
}
printf("重新输入按1,其它键退出程序"); //用户输入1时,程序结束;其他任意键继续操作
scanf("%d",&x);
switch(x) //使用switch语句进行判断
{
case 1: //当检测到x=1时
goto again; //运用goto语句返回again操作
break;
default: //否则结束程序
return;
}
}
(2)
include <stdio.h>
int main()
{
int ch=0 ; //初始化为0 ,不然存储字符数据时可以出现问题
char character[1000]; // 定义一个字符数组
int i=0; //用i来对字符计数
printf("请输入需要转换的文本内容:\n"); //提示语
scanf("%c",&ch);
while(i < 1000 && ch != '\n' )// ch读取到换行符的话就表明这一行的结束
{
character[i++]=ch; //把用户输入的字符变量赋给数组character
scanf("%c",&ch);
}
i--;
printf("转换后的文本:"); //提示语
while(i >= 0) //当i大于等于0时,字符以倒序输出到屏幕上printf("%c",character[i--]);
printf("\n");
return 0;
}
运行结果
词频统计结果如下:。