苏州大学操作系统实验1

合集下载

苏州科技大学操作系统实验

苏州科技大学操作系统实验

.. . …科技学院电子信息实验中心实验报告课程操作系统学号姓名徐金玮班级计算机专业计算机科学与技术指导教师妮学年/ 学期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、可以分配给多个进程的设备是。

操作系统原理实验报告

操作系统原理实验报告
《操作系统原理》 实验报告
2012 软件工程(嵌入式)
学号:____________ 姓名:____________
苏州大学计算机科学与技术学院 2015 年 3 月
目录
操作系统原理实验报告
一、实验环境............................................................................................ 1
5
操作系统原理实验报告 6
操作系统原理实验报告 7
操作系统原理实验报告 8
操作系统原理实验报告
实验二、进程间的通信
实验环境:
实验环境一:Windows 平台
实验时间:
6 小时
实验目的:
初步了解 windows 环境下进程间通信的机制,掌握如何利用消息、共享内存 和剪贴板三种进程间通信机制中的任意 2 种进行通信的原理,并利用 win32API 函数编写实例程序。
[提示] 1、从 root 注册进系统,可以通过用户图形界面中的菜单创建用户组并为用
户分配注册号,也可以通过 shell 命令创建用户组,创建用户组的 shell 命令格式
2
操作系统原理实验报告
如下:
groupadd -g group_ID group_name
为用户分配注册号的 shell 命令格式如下:
usermod options login_ID
其中,任选项 options 可以为如下内容:
-c comment
表示注释信息
-d pathname
表示当前目录
-g group_ID
表示主用户组名
-G supplementary_group_ID 表示主用户组的增补组名

苏州大学872数据结构与操作系统考研真题试题2004—2014年

苏州大学872数据结构与操作系统考研真题试题2004—2014年

苏州大学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:。

苏州大学操作系统概念第一章

苏州大学操作系统概念第一章
1.11
系统启动
? 引导程序 (Bootstrap program) ? 在打开电源或重启时被装载 ? 通常位于 ROM 或EPROM中, 称为 Firmware ( 固件) ? 初始化系统中的所有部分 ? 装入操作系统内核并开始运行
1.12
计算机系统操作
? I/O 和 CPU 可以并发运行 ? 每个设备控制器负责一种特定类型的设备 ? 每个设备控制器有一个本地缓冲 ? CPU 在内存和本地缓冲之间移动数据 ? I/O 操作则是从设备到控制器的本地之间执行 ? 设备控制器告诉CPU通过调用中断来完成操作
完成 ? 设备状态表(Device-status table)包括每个I/O设备的类
型、地址和状态
1.21
两种I/O方法
Synchronous 同步
Asynchronous 异步
1.22
3、计算机系统体系结构
无操作系统计算机
1.24
单处理器系统
? 单核处理器系统 ? 一个CPU ? 一个CPU一个Core
? 多核处理器系统 ? 一个CPU ? 一个CPU多个核,一个核即一个处理器
? 2核 ? 4核 ? 8核
1.25
Intel Xeon E7
1.26
多处理器系统
? 多处理器系统:有多个紧密通信的处理器的系统 ? 并行系统(Parallel System) ? 紧耦合系统(Tightly Coupled System)。
主程序的下一条指令
1.16
存储结构
? 主存(Main memory) - CPU可以直接访问的唯一大型 存储介质
? RAM ? 易失性
? 二级存储器(Secondary storage) -主存的扩展提供了 非易失的存储容量

苏州大学操作系统概念第12章资料

苏州大学操作系统概念第12章资料
6.19
C-SCAN
提供比SCAN算法更为均匀的等待时间 磁头从磁盘一段移到另一端,随着移动不断的处理请求。不 过,当磁头移到另一端时,马上返回到磁盘开始,返回时并 不处理请求 将柱面当作一个环链,将最后柱面和第一柱面相连 总的磁头移动为383柱面
6.20
C-SCAN
6.21
C-LOOK
C-SCAN的一种变形 磁头只移动到一个方向上最远的请求为止。接着,它马上回 头,而不是继续到磁盘的尽头 总的磁头移动为323柱面
磁盘控制器
6.4
磁盘示意图
6.5
地址映射关系
逻辑地址:(逻辑块号p,块内偏移o) 物理地址:(柱面c,道t,扇区s,扇区内偏移o)
Q1 p / 每道扇区数
s
c Q1 / 每柱面道数
t
6.6
磁盘特性
磁盘旋转速度:60 – 250转/秒 磁盘传输速率(Transfer rate): 在磁盘和计算机间传输数 据的速率。 定位时间/随机访问时间(Positioning time,randomaccess time):
光盘根本不使用磁。它们使用特殊材料,可以被激光所改 变
6.40
可写光盘
读写盘上的数据可以多次被修改 WORM盘只能被写一次 铝薄膜盘片夹在两个玻璃或塑料盘片间 当写一位时,驱动器使用激光在铝薄膜上烧一小孔。信息 可以被删除但不能被修改 WORM盘是可靠的、经久的 只读盘,如CD-ROM和DVD,从生产厂家出来时就有数据 了
20
Synch Byte
Track #
Head #
Sector#
CRC
Bytes 1 2 1 1 3
Synch Byte
Data
CRC
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一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;
}
运行结果
词频统计结果如下:。

相关文档
最新文档