文档库 最新最全的文档下载
当前位置:文档库 › 湖南大学操作系统实验报告-(1)

湖南大学操作系统实验报告-(1)

湖南大学操作系统实验报告-(1)
湖南大学操作系统实验报告-(1)

实验一中断处理实验报告

一、实习内容

模拟中断事件的处理。

二、实习目的

现代计算机系统的硬件部分都设有中断机构,它是实现多道程序设计的基础。中断机构能发现中断事件,且当发现中断事件后迫使正在处理器上执行的进程暂时停止执行,而让操作系统的中断处理程序占有处理器去处理出现的中断事件。对不同的中断事件,由于它们的性质不同,所以操作系统应采用不同的处理。通过实习了解中断及中断处理程序的作用。本实习模拟“时钟中断事件”的处理,对其它中断事件的模拟处理,可根据各中断事件的性质确定处理原则,制定算法,然后依照本实习,自行设计。

三、实习题目

模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序。

[提示]:

(1) 计算机系统工作过程中,若出现中断事件,硬件就把它记录在中断寄存器中。中断寄存器的每一位可与一个中断事件对应,当出现某中断事件后,对应的中断寄存器的某一位就被置成1。处理器每执行一条指令后,必须查中断寄存器,当中断寄存器内容不为0时,说明有中断事件发生。硬件把中断寄存器内容以及现行程序的断点存在主存的固定单元,且让操作系统的中断处理程序占用处理器来处理出现的中断事件。操作系统分析保存在主存固定单元中的中断寄存器内容就可知道出现的中断事件的性质,从而作出相应的处理。本实习中,用从键盘读入信息来模拟中断寄存器的作用,用计数器加 1 来模拟处理器执行了一条指令。每模拟一条指令执行后,从键盘读入信息且分析,当读入信息=0 时,表示无中断事件发生,继续执行指令;当读入信息=1 时,表示发生了时钟中断事件,转时钟中断处理程序。

(2)假定计算机系统有一时钟,它按电源频率(50Hz)产生中断请求信号,即每隔20毫秒产生一次中断请求信号,称时钟中断信号,时钟中断的间隔时间(20 毫秒)称时钟单位。学生可按自己确定的频率在键盘上键入0或1来模拟按电源频率产生的时钟中断信号。

(3) 中断处理程序应首先保护被中断的现行进程的现场(通用寄存器内容、断点等)现场信息可保存在进程控制块中;然后处理出现的中断事件,根据处理结果修改被中断进程的状态;最后转向处理器调度,由处理器调度选择可运行的进程,恢复现场使其运行。

本实习主要模拟中断事件的处理,为简单起见可省去保护现场和处理器调度的工作。

(4) 为模拟时钟中断的处理,先分析一下时钟中断的作用。利用时钟中断可计算日历时钟,也可作定时闹钟等。

计算日历时钟——把开机时的时间(年、月、日、时、分、秒)存放在指定的称为日历时钟的工作单元中,用一计时器累计时钟中断次数。显然,根据时钟中断的次数和时钟单位(20 毫秒)以及开机时的日历时钟可计算出当前的精确的日历时钟(年、月、日、时、分、秒)。因此,可按需要计算出一个作业装入时的时间,一个作业撤离时的时间,终端用户使用终端的时间,以及其它场合需

要确定的时间。

定时闹钟——对需要定时的场合,例如,处理器调度采用―时间片轮转策略调度时,可把轮到运行的进程的时间片值(以时钟单位计算)送到称为―定时闹钟的工作单元中,每产生一次时钟中断就把定时闹钟值减1,当该值为0时,表示确定的时间已到,起到定时的作用。

(5) 本实习的模拟程序可由两部分组成,一部分是模拟硬件产生时钟中断,另一部分模拟操作系统的时钟中断处理程序。模拟程序的算法如图1-1。其中,保护现场和处理器调度的工作在编程序时可省去。约定处理器调度总是选择被中断进程继续执行。

(6) 按模拟算法设计程序,要求显示或打印开机时间、定时闹钟初值、定时闹钟为0时的日历时钟。确定三个不同的定时闹钟初值,运行设计的程序,观察得到的结果。

四、源程序及程序中使用的数据结构、符号说明

//@start at 2016-10-28-15:46

//@finish at 2016-10-28-19:08

//OSexp1 About interruption

#include

#include

#include

using namespace std;

int main(){

int clock[3];//定时闹钟

int timer[3]={0,0,0};//计时器

int count=0;//计数器

int command;

char cout_time1[30],cout_time2[30];

cout << "开机时间" << endl;

//从1970.1.1 8:00:00开始以秒为单位计时

//time_t:long

time_t time_now = time(NULL);

// time_t time_now = 1;

tm* ptime1=localtime(&time_now);

//输出当前时间

strftime(cout_time1, 30, "%Y年%m月%d日%H:%M:%S", ptime1);

cout<

cout<<"-----------------------------------------------" <

cout << "设置定时闹钟:以秒为时钟单位" << endl;

for(int i=0;i<3;i++){

cout<<"输入第"<

cin>>clock[i];

}

cout<<"-----------------------------------------------" <

cout<<"本程序从键盘输入1或0模拟是否有中断产生的指令(1:有中断0:无中断)"<

while (1){

cout << "执行了一条指令,计数器加1,检测是否有中断发生..." << endl;

count++;

cout<<"读取指令..."<

cin >> command;

if (command == 1)

{

cout<<"有中断产生保护现场..."<

for(int i=0;i<3;i++){

timer[i]++;

clock[i]--;

}

for(int i=0;i<3;i++){

//如果第i个闹钟时间没到

if(clock[i]!=0){

//do nothing

}

else

{

cout<<"-----------------------------------------------" <

cout<<"!!!闹钟"<

time_t time_end = time_now+timer[i];

tm* ptime2=localtime(&time_end);

//输出闹钟响起的时间

strftime(cout_time2, 30, "%Y年%m月%d日%H:%M:%S", ptime2);

cout<<"当前时间为:"<

cout<<"-----------------------------------------------" <

if(i==2)

exit(0);

}

}

}

}

return 0;

}

流程图:

代码详细说明:

本实验代码结构较为简单,只是简单地获取一个程序起始运行时间,然后接收控制台的指令,对0和1进行判断,达到中断次数时触发闹钟并输出最终时间,控制时间的函数由ctime提供

time_t time_now = time(NULL);

tm* ptime1=localtime(&time_now);

strftime(cout_time1, 30, "%Y年%m月%d日%H:%M:%S", ptime1);

首先生成时间型数据time_now,time型实际上就是long型,然后使用tm*型变量获取当前时间,这个时间是相对于1970年1月1日的偏差,其结构如下:

#ifndef _TM_DEFINED

struct tm {

int tm_sec; /* 秒–取值区间为[0,59] */

int tm_min; /* 分- 取值区间为[0,59] */

int tm_hour; /* 时- 取值区间为[0,23] */

int tm_mday; /* 一个月中的日期- 取值区间为[1,31] */

int tm_mon; /* 月份(从一月开始,0代表一月)- 取值区间为[0,11] */

int tm_year; /* 年份,其值等于实际年份减去1900 */

int tm_wday; /* 星期–取值区间为[0,6],其中0代表星期天,1代表星期一,以此类推*/

int tm_yday; /* 从每年的1月1日开始的天数–取值区间为[0,365],其中0代表1月1日,1代表1月2日,以此类推*/

int tm_isdst; /* 夏令时标识符,实行夏令时的时候,tm_isdst为正。不实行夏令时的进候,tm_isdst为0;不了解情况时,tm_isdst()为负。*/ }

在输出时间时,可以按顺序对上述成员变量做输出,但也可以通过

strftime(cout_time1, 30, "%Y年%m月%d日%H:%M:%S", ptime1);

该语句方便地输出时间,对于末尾时间的处理与当前时间的处理类似,就不赘述了。

五、打印程序运行时的初值和运行结果

运行环境:DevC++ 5.11

控制台运行结果:

由于题目要求设置三个定时闹钟,所以此处要输入三个定时时间,并分别判断是否到达触发条件。在展示的运行结果中,共运行了10条指令,其中有8次中断,2次无中断,不触发中断时只有计数器累加,无计时器的更改。因此只在触发中断的第8次时才会响起闹钟3。

六实验心得

本次实验总的来说较为简单,是为了让我们熟悉计算机内中断处理的过程,即保护现场-处理中断-处理器调度-恢复现场的一系列硬件过程,编写代码的过程中遇到的问题基本都可以在网络上查找到相关的资料,尤其是对ctime的使用之前并未有深入的涉及,但是经历这次实验之后有了更深层次的体会。虽然对于现场保护的部分无法亲自实现,但是还是查阅了资料找到了相关内容的大概方案,总的来说收获还是很大的,希望自己能继续努力,好好完成剩余的几次试验内容。

湖南大学2013年操作系统期末试卷

答案仅为参考 1.Which of the following scheduling alogrithms could result in starvation and why? (1)First-come,first-served (2)Shortest job first (3)Round robin (4)Priority【来自课后习题】 答:最短工作优先调度和优先级调度算法会引起饥饿。优先级调度算法会使某个低优先级进程无穷等待CPU,此时,可能发生两种情况,要么进程最终能进行,要么系统最终崩溃并失去所有未完成低优先级进程。 解决方式——老化,老化是一种技术,以逐渐增加在系统中等待很长时间的进程的优先级。(最短工作优先调度会使工作长度最大的进入无限等待CPU) 2.Can a resource allocation graph (资源分配图) have cycle without deadlock(死锁)? If so,state why and draw a sample graph(画一个死锁点的图); if no,state why not? 答:有死锁,死锁部分为P2-R4-P5-R3。 3.What is the cause of thrashing(颠簸)? How dose the system detect(检测)thrashing? Once it detects thrashing,what can the system do to eliminate(消除)this problem?【来自课后习题】 答:分配的页数少于进程所需的最小页数时发生颠簸,并迫使它不断地页错误。该系统可通过对比多道程序的程度来估计CPU利用率的程度,以此来检测颠簸。降低多道程序的程度可以消除颠簸。 4.某Demand Paging system,拥有逻辑空间64页,每页2KB,拥有物理空间1MB。 (1)写出逻辑地址的格式。 解:11位页内地址,5位页号 (2)若不考虑访问权限等,进程的页表最多有多少项?每项至少有多少位? 解:因为有32个逻辑页面,所以页表有32项。因为有1M/2K= 2的9次方物理块,所以每个页表项至少有9位 (3)如果物理空间减少一半,页表结构应相应作怎样的改变? 解:32项,每项至少需要8位

操作系统实验报告--实验一--进程管理

实验一进程管理 一、目的 进程调度是处理机管理的核心内容。本实验要求编写和调试一个简单的进程调度程序。通过本实验加深理解有关进程控制块、进程队列的概念,并体会和了解进程调度算法的具体实施办法。 二、实验内容及要求 1、设计进程控制块PCB的结构(PCB结构通常包括以下信息:进程名(进程ID)、进程优先数、轮转时间片、进程所占用的CPU时间、进程的状态、当前队列指针等。可根据实验的不同,PCB结构的内容可以作适当的增删)。为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的轮转时间数以及进程需运行的时间片数的初始值均由用户给定。 2、系统资源(r1…r w),共有w类,每类数目为r1…r w。随机产生n进程P i(id,s(j,k),t),0<=i<=n,0<=j<=m,0<=k<=dt为总运行时间,在运行过程中,会随机申请新的资源。 3、每个进程可有三个状态(即就绪状态W、运行状态R、等待或阻塞状态B),并假设初始状态为就绪状态。建立进程就绪队列。 4、编制进程调度算法:时间片轮转调度算法 本程序用该算法对n个进程进行调度,进程每执行一次,CPU时间片数加1,进程还需要的时间片数减1。在调度算法中,采用固定时间片(即:每执行一次进程,该进程的执行时间片数为已执行了1个单位),这时,CPU时间片数加1,进程还需要的时间片数减1,并排列到就绪队列的尾上。 三、实验环境 操作系统环境:Windows系统。 编程语言:C#。 四、实验思路和设计 1、程序流程图

2、主要程序代码 //PCB结构体 struct pcb { public int id; //进程ID public int ra; //所需资源A的数量 public int rb; //所需资源B的数量 public int rc; //所需资源C的数量 public int ntime; //所需的时间片个数 public int rtime; //已经运行的时间片个数 public char state; //进程状态,W(等待)、R(运行)、B(阻塞) //public int next; } ArrayList hready = new ArrayList(); ArrayList hblock = new ArrayList(); Random random = new Random(); //ArrayList p = new ArrayList(); int m, n, r, a,a1, b,b1, c,c1, h = 0, i = 1, time1Inteval;//m为要模拟的进程个数,n为初始化进程个数 //r为可随机产生的进程数(r=m-n) //a,b,c分别为A,B,C三类资源的总量 //i为进城计数,i=1…n //h为运行的时间片次数,time1Inteval为时间片大小(毫秒) //对进程进行初始化,建立就绪数组、阻塞数组。 public void input()//对进程进行初始化,建立就绪队列、阻塞队列 { m = int.Parse(textBox4.Text); n = int.Parse(textBox5.Text); a = int.Parse(textBox6.Text); b = int.Parse(textBox7.Text); c = int.Parse(textBox8.Text); a1 = a; b1 = b; c1 = c; r = m - n; time1Inteval = int.Parse(textBox9.Text); timer1.Interval = time1Inteval; for (i = 1; i <= n; i++) { pcb jincheng = new pcb(); jincheng.id = i; jincheng.ra = (random.Next(a) + 1); jincheng.rb = (random.Next(b) + 1); jincheng.rc = (random.Next(c) + 1); jincheng.ntime = (random.Next(1, 5)); jincheng.rtime = 0;

操作系统实验报告

操作系统实验报告 ' 学号: 姓名: 指导老师: 完成日期: ~

目录 实验一 (1) 实验二 (2) 实验三 (7) 实验四 (10) 实验五 (15) 实验六 (18) 实验七 (22) \

实验一 UNIX/LINUX入门 一、实验目的 了解 UNIX/LINUX 运行环境,熟悉UNIX/LINUX 的常用基本命令,熟悉和掌握UNIX/LINUX 下c 语言程序的编写、编译、调试和运行方法。 二、实验内容 熟悉 UNIX/LINUX 的常用基本命令如ls、who、pwd、ps 等。 练习 UNIX/LINUX的文本行编辑器vi 的使用方法 熟悉 UNIX/LINUX 下c 语言编译器cc/gcc 的使用方法。用vi 编写一个简单的显示“Hello,World!”c 语言程序,用gcc 编译并观察编译后的结果,然后运行它。 三、实验要求 按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。 四、实验程序 #include <> #include <> int main() { printf ("Hello World!\n"); return 0; } 五、实验感想 通过第一次室验,我了解 UNIX/LINUX 运行环境,熟悉了UNIX/LINUX 的常用基本命令,熟悉和掌握了UNIX/LINUX 下c 语言程序的编写、编译、调试和运行方法。

实验二进程管理 一、实验目的 加深对进程概念的理解,明确进程与程序的区别;进一步认识并发执行的实质。 二、实验内容 (1)进程创建 编写一段程序,使用系统调用fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示“a“;子进程分别显示字符”b“和字符“c”。试观察记录屏幕上的显示结果,并分析原因。 (2)进程控制 修改已编写的程序,将每一个进程输出一个字符改为每一个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。 (3)进程的管道通信 编写程序实现进程的管道通信。使用系统调用pipe()建立一个管道,二个子进程P1 和P2 分别向管道各写一句话: Child 1 is sending a message! Child 2 is sending a message! 父进程从管道中读出二个来自子进程的信息并显示(要求先接收P1,再接收P2)。 三、实验要求 按照要求编写程序,放在相应的目录中,编译成功后执行,并按照要求分析执行结果,并写出实验报告。 四、实验设计 1、功能设计 (1)进程创建 使用fork()创建两个子进程,父进程等待两个子进程执行完再运行。 (2)进程控制 使用fork()创建两个子进程,父进程等待两个子进程分别输出一句话再运行。 (3)进程的管道通信 先创建子进程1,向管道写入一句话,子进程1结束后创建子进程2,向管道写入一句话,最后父进程从管道中读出。 2、数据结构 子进程和管道。 3、程序框图

湖南大学嵌入式系统试卷.pdf

一填空 (每空1 分,共 20 分) 1.嵌入式微处理器一般可分为嵌入式微控制器、嵌入式数字信号处理器、嵌入式微处理器和嵌入式片上系统四种类型。 2.嵌入式系统体系结构一般具有冯洛依曼和哈佛两种基本形式。 3.嵌入式存储系统一般由高速缓存、内存和外存组成。 4.嵌入式存储系统具有大端格式和小端格式两种数据存放格式。 5从编程的角度看,ARM微处理器的一般有ARM 和THUMB 两种工作状态。 6.嵌入式软件的开发一般分为生成、调试和固化运行三个步骤。 7.嵌入式LINUX的内核有五个组成部分,它们是进程调度、内存管理、 虚拟文件系统、网络接口和进程通信。 8.操作系统是联接硬件与应用程序的系统程序,其基本功能有: I/O资源管理。 9.从嵌入式操作系统特点可以将嵌入式操作系统分为实时操作系统和分时操作系统,其中实 硬实时系统和软实时系统。 1.嵌入式系统是以应用中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功 能、可靠性、成本、体积、功耗严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四部分组成. 2.在嵌入式系统设计过程中,需求分析包括:功能性需求分析和非功能性需求分析。 3.总线按照传输关系分类可分为:主从结构和对等结构。 4.RS-232C的帧格式由四部分组成,包括:起始位、数据位、奇偶校验位和停止位。 5.I/O接口电路数据传送方式有:查询、中断、DMA、I/O通道和I/O处理机方式。 6.实时系统的关键问题是保证系统的实时性;实时操作系统就是指具有实时性、能支持实 时系统工作的操作系统。 7.实时操作系统的评价指标有:任务调度算法、上下文切换时间、确定性、最小内存开销 和最大中断禁止时间。 8.Bootloader主要功能是系统初始化、加载和运行内核程序。 9.进程与线程:进程是①具有独立功能的程序关于某个数据集合上的一次运行活动,是系 统进行资源分配和调度的独立单位。②可与其他程序并发执行的程序,在一个数据集合上的运行的过程。它是系统进行资源分配和调度的独立单位 10.嵌入式系统五层结构:硬件层、引导层、内核层、uI层(userinterface)和应用层 11.目前使用的嵌入式操作系统主要有哪些:Windows CE/Windows Mobile、VxWork、Linux、 uCos、Symbian、QNX 12.ARM微处理器有7种工作模式,它们分为两类非特权模式和特权模式,其中用户模 式属非特权模式。 二简答 (每题5分,共 30 分) 1.简要叙述嵌入式系统的定义。 嵌入式系统是以应用为中心,以计算机技术为基础,并且在软、硬件方面可进行裁剪,适用于应用系统对功能、可靠性、成本、体积、功耗有严格要求的专用计算机系统。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成。 2. 什么是嵌入式实时操作系统?简单叙述其特点。 实时操作系统就是“在给定的时间内提供某种程度的服务,如果在规定的时间内没有得到

嵌入式操作系统实验报告

中南大学信息科学与工程学院实验报告 姓名:安磊 班级:计科0901 学号: 0909090310

指导老师:宋虹

目录 课程设计内容 ----------------------------------- 3 uC/OS操作系统简介 ------------------------------------ 3 uC/OS操作系统的组成 ------------------------------ 3 uC/OS操作系统功能作用 ---------------------------- 4 uC/OS文件系统的建立 ---------------------------- 6 文件系统设计的原则 ------------------------------6 文件系统的层次结构和功能模块 ---------------------6 文件系统的详细设计 -------------------------------- 8 文件系统核心代码 --------------------------------- 9 课程设计感想 ------------------------------------- 11 附录-------------------------------------------------- 12

课程设计内容 在uC/OS操作系统中增加一个简单的文件系统。 要求如下: (1)熟悉并分析uc/os操作系统 (2)设计并实现一个简单的文件系统 (3)可以是存放在内存的虚拟文件系统,也可以是存放在磁盘的实际文件系统 (4)编写测试代码,测试对文件的相关操作:建立,读写等 课程设计目的 操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。 本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统开发的基本技能。 I.uC/OS操作系统简介 μC/OS-II是一种可移植的,可植入ROM的,可裁剪的,抢占式的,实时多任务操作系统内核。它被广泛应用于微处理器、微控制器和数字信号处理器。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌入到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB 。μC/OS-II 已经移植到了几乎所有知名的CPU 上。 严格地说uC/OS-II只是一个实时操作系统内核,它仅仅包含了任务调度,任务管理,时间管理,内存管理和任务间的通信和同步等基本功能。没有提供输入输出管理,文件系统,网络等额外的服务。但由于uC/OS-II良好的可扩展性和源码开放,这些非必须的功能完全 可以由用户自己根据需要分别实现。 uC/OS-II目标是实现一个基于优先级调度的抢占式的实时内核,并在这个内核之上提供最基本的系统服务,如信号量,邮箱,消息队列,内存管理,中断管理等。 uC/OS操作系统的组成 μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。如下图:

电大操作系统本科实验报告

中央广播电视大学计算机科学与技术专业操作系统(本科) 实验报告 院系:_______________ 班级:________ 学生姓名:_____________ 学号:______ 指导教师:________ 完成日期2015年月日

一、实验题目: Linux应用及shell编程 二、实验目的和要求: 目的 1.掌握Linux一般命令格式和常用命令。 2.学会使用vi编辑器建立、编辑文本文件。 3.了解shell的作用和主要分类。 4.学会bash脚本的建立和执行方式。 5.理解bash的基本语法。 6.学会编写简单的shell脚本。 要求 1.登录进入系统,修改个人密码。 2.使用简单命令:date,cal,who,echo,clear等,了解Linux命令格式。 3.进入vi。建立一个文件,如。进入插入方式,输入一个C语言程序的各行内容,故意制造几处错误。最后,将该文件存盘。回到shell状态下。 4.运行,编译该文件,会发现错误提示。理解其含义。 5.利用vi建立一个脚本文件,其中包括date,cal,pwd,ls等常用命令。然后以不同方式执行该脚本。 6.对主教材第2章中的适当例题进行编辑,然后执行。从而体会通配符、引号、输入输出重定向符、成组命令的作用;能正确使用自定义变量、位置参数、环境变量、输入/输出命令;能利用if语句、while语句、for语句和函数编写简单的脚本。 三、实验内容: 1.正确地登录和退出系统。 2.熟悉使用ls,cp,cat,等常用命令。 3.进入和退出vi。利用文本插入方式建立一个文件。

5.建立简单shell脚本并执行它。 四、实验技术和方法: Linux中各种脚本语言 五、实验环境: 虚拟机,ubuntuserver版,shell 六、实验步骤和结果: 1.正确地登录和退出系统。 使用exit命令退出系统 2.熟悉使用cat,cd,cp,ls,mor,rm,vi,who等常用命令。 2.使用vi编写 按:wq存储,并退出 5.建立shell脚本并执行它。 使用VI创建ex1文件,内容含三条命令date/pwd/cd.. 七、实验结果分析: 无 实训3 一、实验题目: 进程管理 二、实验目的和要求: 目的 1.加深对进程概念的理解,明确它与程序的区别,突出理解其动态性特征。

湖南大学数据库实验2

数据库系统概论实验报告 题目交互式SQL 学生姓名刘家宇 学生学号20110801126 专业班级计科一班 指导老师王永恒 完成日期 2014/5/9

一、实验目的 1.熟悉数据库的交互式SQL工具。 2.熟悉通过SQL对数据库进行操作。 3.完成实验要求的上机练习。 二、实验环境及工具 在windows XP环境下,利用MySQL 及其交互式查询工具来熟悉SQL。 三、实验内容 1.在MySQL中建立一个数据库,进行实验所要求的各种操作,所有的SQL操作均 在此建立的新库里进行。 其中对数据库的操作包括: 1) 各类查询操作(单表查询,连接查询,嵌套查询,集合查询)。 2) 各类更新操作(插入数据,修改数据,删除数据)。 2.在MySQL中定义一个视图,进行实验所要求的各种操作,所有的SQL操作均在 此建立的新视图里进行。 其中对数据库的操作包括: 1)视图的定义(创建和删除); 2)视图的查询; 3)视图的更新(注意更新的条件)。 四、实验上机练习 1.创建course ,student ,sc 表:

2.Student 表中插入数据: 3.Student 表中修改数据:

4.Student表中的查询操作: 例:查询选修IS专业的学生的姓名: 5.建立选择“IS”专业的学生的视图: 6.更新视图数据:

五、实验中出现的问题及解决方案 问题: 建立course表的时候输入语句如下: Create table course (cno char(9) primary key, Cname char(20), Cpno char(4), Ccredit smallint, Foreign key cpno references course (cno) ); 出现错误; 解决方法: 查阅相关书籍发现时语法错误,修改如下: Create table course (cno char(9) primary key, Cname char(20), Cpno char(4), Ccredit smallint, Foreign key (cpno) references course (cno) );

湖南大学操作系统期末考试卷2014

1. 什么是多道程序技术,它带来了什么好处? 答:多道程序技术即是指在内存中存放多道作业,运行结束或出错,自动调度内存中另一道作业运行。多道程序主要优点如下: (1)资源利用率高。由于内存中装入了多道程序,使它们共享资源,保持系统资源处于忙碌状态,从而使各种资源得以充分利用。 (2)系统吞吐量大。由于CPU和其它系统资源保持“忙碌”状态,而且仅当作业完成或运行不下去时才切换,系统开销小,所以吞吐量大。 2. 系统调用是OS与用户程序的接口,库函数也是OS与用户程序的接口,这句话对吗?为什么? 答:不正确,系统调用可以看成是用户在程序一级请求OS为之服务的一种手段。而库函数则是在程序设计语言中,将一些常用的功能模块编写成函数,放在函数库中供公共选用。函数库的使用与系统的资源分配并无关系,仍属用户程序而非OS程序,其功能的实现并不由OS完成,且运行时仍在用户状态而非系统状态。 3. Which of the following components of program state are shared across threads in a multithreaded process? a. Register values b. Heap memory c. Global variables d. Stack memory 答:b、c 此处要简单说明原因 4. 下面哪种调度算法会导致饥饿?并说明原因。a. 先到先服务调 度(FCFS) b. 最短作业优先调度(SJF) c. 轮转调度(RR) d. 优先级调度(Priority) 答:b(长作业的可能饥饿)、d(低优先级的可能饥饿) 5. 有结构文件可分为哪几类,其特点是什么? 答:有结构文件可分为以下三类,分别是: (1)顺序文件。它是指由一系列记录,按某种顺序排列所形成的文件。

实时操作系统报告

实时操作系统课程实验报告 专业:通信1001 学号:3100601025 姓名:陈治州 完成时间:2013年6月11日

实验简易电饭煲的模拟 一.实验目的: 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,基于多任务的模式的编程方法。锻炼综合应用多任务机制,任务间的通信机制,内存管理等的能力。 二.实验要求: 1.按“S”开机,系统进入待机状态,时间区域显示当前北京时间,默认模式“煮饭”; 2.按“C”选择模式,即在“煮饭”、“煮粥”和“煮面”模式中循环选择; 3.按“B”开始执行模式命令,“开始”状态选中,时间区域开始倒计时,倒计时完成后进入“保温”状态,同时该状态显示选中,时间区域显示保温时间; 4.按“Q”取消当前工作状态,系统进入待机状态,时间区域显示北京时间,模式为当前模式; 5.按“X”退出系统,时间区域不显示。 6.煮饭时长为30,煮粥时长为50,煮面时长为40. 三.实验设计: 1.设计思路: 以老师所给的五个程序为基础,看懂每个实验之后,对borlandc的操作有了大概的认识,重点以第五个实验Task_EX为框架,利用其中界面显示与按键扫描以及做出相应的响应,对应实现此次实验所需要的功能。 本次实验分为界面显示、按键查询与响应、切换功能、时钟显示与倒计时模块,综合在一起实验所需功能。 2.模块划分图: (1)界面显示: Main() Taskstart() Taskstartdispinit() 在TaskStartDispInit()函数中,使用PC_DispStr()函数画出界面。

(2)按键查询与响应: Main() Taskstart() 在TaskStart()函数中,用if (PC_GetKey(&key) == TRUE)判断是否有按键输入。然后根据key 的值,判断输入的按键是哪一个;在响应中用switch语句来执行对应按键的响应。 (3)切换功能: l计数“C”按 键的次数 M=l%3 Switch(m) M=0,1,2对应于煮饭,煮粥,煮面,然后使用PC_DispStr()函数在选择的选项前画上“@”指示,同时,在其余两项钱画上“”以“擦出”之前画下的“@”,注意l自增。 四.主要代码: #include "stdio.h" #include "includes.h" #include "time.h" #include "dos.h" #include "sys/types.h" #include "stdlib.h" #define TASK_STK_SIZE 512 #define N_TASKS 2 OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; OS_STK TaskStartStk[TASK_STK_SIZE]; INT8U TaskData[N_TASKS];

操作系统实验报告

操作系统实验报告 集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

实验二进程调度1.目的和要求 通过这次实验,理解进程调度的过程,进一步掌握进程状态的转变、进程调度的策略,进一步体会多道程序并发执行的特点,并分析具体的调度算法的特点,掌握对系统性能的评价方法。 2.实验内容 阅读教材《计算机操作系统》第二章和第三章,掌握进程管理及调度相关概念和原理。 编写程序模拟实现进程的轮转法调度过程,模拟程序只对PCB进行相应的调度模拟操作,不需要实际程序。假设初始状态为:有n个进程处于就绪状态,有m个进程处于阻塞状态。采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统释放资源,唤醒处于阻塞队列队首的进程。 程序要求如下: 1)输出系统中进程的调度次序; 2)计算CPU利用率。 3.实验环境 Windows操作系统、VC++6.0 C语言 4设计思想: (1)程序中进程可用PCB表示,其类型描述如下:

structPCB_type { intpid;//进程名 intstate;//进程状态 2——表示“执行”状态 1——表示“就绪”状态 0——表示“阻塞”状态 intcpu_time;//运行需要的CPU时间(需运行的时间片个数) } 用PCB来模拟进程; (2)设置两个队列,将处于“就绪”状态的进程PCB挂在队列ready中;将处于“阻塞”状态的进程PCB挂在队列blocked中。队列类型描述如下: structQueueNode{ structPCB_typePCB; StructQueueNode*next; } 并设全程量: structQueueNode*ready_head=NULL,//ready队列队首指针 *ready_tail=NULL,//ready队列队尾指 针

30天自制操作系统日志第5天

操作系统实验日志 一、实验主要内容 1、接收启动信息和结构体 在上一章中,xsize和ysize的值都是直接赋值为320*200,但实际上我们需要从asmhead.nas 先前保存下来的值中去。即: 不然的话,当画面模式改变时系统就不能正确运行。所以试着用指针取得图像模式:void HariMain(void) { char *vram; int xsize, ysize; short *binfo_scrnx, *binfo_scrny; int *binfo_vram; init_palette(); /*设定调色板*/ binfo_scrnx = (short *) 0x0ff4;

binfo_scrny = (short *) 0x0ff6; binfo_vram = (int *) 0x0ff8; xsize = *binfo_scrnx; ysize = *binfo_scrny; vram = (char *) *binfo_vram; for(;;) { io_hlt(); /*執行naskfunc里的_io_hlt*/ } } 诶这样是不是说就可以改变画面模式了?于是天真的我: 保存运行一下,以为画面会显示坐标在左上角的320*200,结果发现画面显示错误,forget about it。诶然后发现结构体里这个在汇编里没有定义,可能作者以后讲? 哦先说结构体 可以看做结构体是将一堆变量集中声明,然后作为新的变量用于其他场合。 结构体的运用: (1)先声明结构体: 如上图 (2)后定义结构体变量:struct BOOTINFO abc; 或者定义结构体指针变量:struct BOOTINFO *binfo; 这里binfo表示指针变量后应该首先给指针赋值,可写成:Binfo = (struct

操作系统课后习题答案

3.1论述长期、中期、短期调度之间的区别。 答:短期调度:在内存作业中选择准备执行的作业,并未他们分配CPU。 中期调度:被用于分时系统,一个交换方案的实施,将部分运行程序移出内存,之后,从中断处继续执行。 长期调度:确定哪些作业调入内存以执行。 区别:它们区别在于执行频率。短期调度必须经常调用一个新进程,由于在系统中,长期调度处理移动的作业时,并不频繁被调用,可能在进程离开系统时才被唤起。 3.2描述内核在两个进程间进行上下文切换的过程。 答:进程关联是由进程的PCB来表示的,它包括CPU寄存器的值和内存管理信息等。当发生上下文切换时,内核会将旧进程的关联状态保存在其PCB中,然后装入经调度要执行的新进程的已保存的关联状态。上下文切换还必须执行一些确切体系结构的操作,包括刷新数据和指令缓存。 3.4使用图3.24所示的程序,说明LINE A可能输出什么。 答:输出:PARENT:value=5; 父进程中value初始值为5,,value+=15发生在子进程,输出发生在父进程中,故输出value 的值为5。 3.5下面设计的优点和缺点分别是什么?系统层次和用户层次都要考虑。 a.同步和异步通信 b.自动和显式缓冲 c.复制传送和引用传送 d.固定大小和可变大小信息 答:a.同步和异步通信:同步通信的影响是它允许发送者和接收者之间有一个集合点。缺点是阻塞发送时,不需要集合点,而消息不能异步传递。因此,消息传递系统,往往提供两种形式的同步。 b.自动和显式缓冲:自动缓冲提供了一个无限长度的队列,从而保证了发送者在复制消息时不会遇到阻塞,如何提供自动缓存的规范,一个方案也许能保存足够大的内存,但许多内存被浪费缓存明确指定缓冲区的大小。在这种状况下,发送者不能在等待可用空间队列中被阻塞。然而,缓冲明确的内存不太可能被浪费。 c.复制发送和引用发送:复制发送不允许接收者改变参数的状态,引用发送是允许的。引用发送允许的优点之一是它允许程序员写一个分布式版本的一个集中的应用程序。 d.固定大小和可变大小信息:一个拥有具体规模的缓冲可容纳及已知数量的信息缓冲能容纳的可变信息数量是未知的。信息从发送者的地址空间被复制至接受进程的地址空间。更大的信息可使用共享内存传递信息。 4.1举两个多线程程序设计的例子,其中多线程的性能比单线程的性能差。 答:a.任何形式的顺序程序对线程来说都不是一个好的形式。例如一个计算个人报酬的程序。 b.一个“空壳”程序,如C-shell和korn shell。这种程序必须密切检测其本身的工作空间。如打开的文件、环境变量和当前工作目录。

操作系统实验报告-中南大学

操作系统原理试验报告 班级: 学号: 姓名:

实验一:CPU调度 一、实验内容 选择一个调度算法,实现处理机调度。 二、实验目的 多道系统中,当就绪进程数大于处理机数时,须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作。 三、实验题目 1、设计一个按优先权调度算法实现处理机调度的程序; 2、设计按时间片轮转实现处理机调度的程序。 四、实验要求 PCB内容: 进程名/PID; 要求运行时间(单位时间); 优先权; 状态: PCB指针; 1、可随机输入若干进程,并按优先权排序; 2、从就绪队首选进程运行:优先权-1/要求运行时间-1 要求运行时间=0时,撤销该进程 3、重新排序,进行下轮调度 4、最好采用图形界面; 5、可随时增加进程; 6、规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可自动从后备 队列调度一作业进入。被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。 7、每次调度后,显示各进程状态。 实验二:内存管理 一、实验内容 主存储器空间的分配和回收 二、实验目的 帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。 三、实验题目 在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。

四、实验要求 1、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表; 表目内容:起址、长度、状态(未分/空表目) 2、结合实验一,PCB增加为: {PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针} 3、采用最先适应算法分配主存空间; 4、进程完成后,回收主存,并与相邻空闲分区合并 .1、Vo类说明(数据存储结构) 进程控制块PCB的结构: Public class PCB{ //进程控制块PCB,代表一个进程 //进程名,作为进程的标识; private String name; //要求运行时间,假设进程运行的单位时间数; private int time; //赋予进程的优先权,调度时总是选取优先数小的进程先执行; private int priority; //状态,假设有“就绪”状态(ready)、“运行”状态(running)、 //“后备”状态(waiting)、“挂起”状态(handup) private String state; //进程存放在table中的位置 private int start; //进程的大小 private int length; //进程是否进入内存,1为进入,0为未进入 private int isIn; //进程在内存中的起始位置 private int base; //进程的大小 private int limit; //一些get和set方法以及构造器省略… };

湖南大学计算机基础试题题库及答案

大学计算机基础》试题题库及答案 一、单选题练习 1.完整的计算机系统由(C)组成。 A.运算器、控制器、存储器、输入设备和输出设备 B.主机和外部设备 C.硬件系统和软件系统 D.主机箱、显示器、键盘、鼠标、打印机 2.以下软件中,(D)不是操作系统软件。A.WindowsxpB.unixC.linuxD.microsoftoffice 3.用一个字节最多能编出(D)不同的码。 A.8个 B.16个 C.128个 D.256个 4.任何程序都必须加载到(C)中才能被CPU执行。 A.磁盘 B.硬盘 C.内存 D.外存 5.下列设备中,属于输出设备的是(A)。 A.显示器B.键盘C.鼠标D.手字板 6.计算机信息计量单位中的K代表(B)。 A.102 B.210 C.103 D.28 7.RAM代表的是(C)。 A.只读存储器 B.高速缓存器 C.随机存储器 D.软盘存储器 8.组成计算机的CPU的两大部件是(A)。 A.运算器和控制器B.控制器和寄存器C.运算器和内存D.控制器和内存 9.在描述信息传输中bps表示的是(D)。 A.每秒传输的字节数B.每秒传输的指令数 C.每秒传输的字数D.每秒传输的位数 10.微型计算机的内存容量主要指(A)的容量。 A.RAM B.ROM C.CMOS D.Cache 11.十进制数27对应的二进制数为(D)。 A.1011B.1100C.10111D.11011 12.Windows的目录结构采用的是(A)。 A.树形结构B.线形结构C.层次结构D.网状结构 13.将回收站中的文件还原时,被还原的文件将回到(D)。 A.桌面上B.“我的文档”中C.内存中D.被删除的位置 14.在Windows的窗口菜单中,若某命令项后面有向右的黑三角,则表示该命令项(A)。A.有下级子菜单B.单击鼠标可直接执行 C.双击鼠标可直接执行D.右击鼠标可直接执行 15.计算机的三类总线中,不包括(C)。 A.控制总线B.地址总线C.传输总线D.数据总线 16.操作系统按其功能关系分为系统层、管理层和(D)三个层次。 A.数据层B.逻辑层C.用户层D.应用层 17.汉字的拼音输入码属于汉字的(A)。 A.外码B.内码C.ASCII码D.标准码 18.Windows的剪贴板是用于临时存放信息的(C)。 A.一个窗口B.一个文件夹C.一块内存区间D.一块磁盘区间

嵌入式实时操作系统实验报告

嵌入式实时操作系统实验报告 任务间通信机制的建立 系别计算机与电子系 专业班级***** 学生姓名****** 指导教师 ****** 提交日期 2012 年 4 月 1 日

一、实验目的 掌握在基于嵌入式实时操作系统μC/OS-II的应用中,任务使用信号量的一般原理。掌握在基于优先级的可抢占嵌入式实时操作系统的应用中,出现优先级反转现象的原理及解决优先级反转的策略——优先级继承的原理。 二、实验内容 1.建立并熟悉Borland C 编译及调试环境。 2.使用课本配套光盘中第五章的例程运行(例5-4,例5-5,例5-6),观察运行结果,掌握信号量的基本原理及使用方法,理解出现优先级反转现象的根本原因并提出解决方案。 3.试编写一个应用程序,采用计数器型信号量(初值为2),有3个用户任务需要此信号量,它们轮流使用此信号量,在同一时刻只有两个任务能使用信号量,当其中一个任务获得信号量时向屏幕打印“TASK N get the signal”。观察程序运行结果并记录。 4. 试编写一个应用程序实现例5-7的内容,即用优先级继承的方法解决优先级反转的问题,观察程序运行结果并记录。 5.在例5-8基础上修改程序增加一个任务HerTask,它和YouTask一样从邮箱Str_Box里取消息并打印出来,打印信息中增加任务标识,即由哪个任务打印的;MyTask发送消息改为当Times为5的倍数时才发送,HerTask接收消息采用无等待方式,如果邮箱为空,则输出“The mailbox is empty”, 观察程序运行结果并记录。 三、实验原理 1. 信号量 μC/OS-II中的信号量由两部分组成:一个是信号量的计数值,它是一个16位的无符号整数(0 到65,535之间);另一个是由等待该信号量的任务组成的等待任务表。用户要在OS_CFG.H中将OS_SEM_EN开关量常数置成1,这样μC/OS-II 才能支持信号量。

操作系统实验报告

《操作系统原理》实验报告 实验项目名称:模拟使用银行家算法判断系统的状态 一、实验目的 银行家算法是操作系统中避免死锁的算法,本实验通过对银行家算法的模拟,加强对操作系统中死锁的认识,以及如何寻找到一个安全序列解除死锁。 二、实验环境 1、硬件:笔记本。 2、软件:Windows 7 , Eclipse。 三、实验内容 1.把输入资源初始化,形成资源分配表; 2.设计银行家算法,输入一个进程的资源请求,按银行家算法步骤进行检查; 3.设计安全性算法,检查某时刻系统是否安全; 4.设计显示函数,显示资源分配表,安全分配序列。 四、数据处理与实验结果 1.资源分配表由进程数组,Max,Allocation,Need,Available 5个数组组成; 实验采用数据为下表: 2.系统总体结构,即菜单选项,如下图

实验的流程图。如下图 3.实验过程及结果如下图所示

1.首先输入进程数和资源类型及各进程的最大需求量 2.输入各进程的占有量及目前系统的可用资源数量 3.初始化后,系统资源的需求和分配表 4.判断线程是否安全

5.对线程进行死锁判断 五、实验过程分析 在实验过程中,遇到了不少问题,比如算法无法回滚操作,程序一旦执行,必须直接运行到单个任务结束为止,即使产生了错误,也必须等到该项任务结束才可以去选择别的操作。但总之,实验还是完满的完成了。 六、实验总结 通过实验使我对以前所学过的基础知识加以巩固,也对操作系统中抽象理论知识加以理解,例如使用Java语言来实现银行家算法,在这个过程中更进一步了解了银行家算法,通过清晰字符界面能进行操作。不过不足之处就是界面略显简洁,对于一个没有操作过计算机的人来说,用起来可能还是有些难懂。所以,以后会对界面以及功能进行完善,做到人人都可以看懂的算法。

操作系统实验一中断处理

实习一中断处理 一、实习内容 模拟中断事件的处理。 二、实习目的 现代计算机系统的硬件部分都设有中断机构,它是实现多道程序设计的基础。中断机 构能发现中断事件,且当发现中断事件后迫使正在处理器上执行的进程暂时停止执行,而让操作系统的中断处理程序占有处理器去处理出现的中断事件。对不同的中断事件,由于它们的性质不同,所以操作系统应采用不同的处理。通过实习了解中断及中断处理程序的作用。本实习模拟“时钟中断事件”的处理,对其它中断事件的模拟处理,可根据各中断事件的性质确定处理原则,制定算法,然后依照本实习,自行设计。 三、实习题目 模拟时钟中断的产生及设计一个对时钟中断事件进行处理的模拟程序。 [提示]: (1) 计算机系统工作过程中,若出现中断事件,硬件就把它记录在中断寄存器中。中 断寄存器的每一位可与一个中断事件对应,当出现某中断事件后,对应的中断寄存器的某一位就被置成―1‖。 处理器每执行一条指令后,必须查中断寄存器,当中断寄存器内容不为―0‖时,说明有中断事件发生。硬件把中断寄存器内容以及现行程序的断点存在主存的固定单元,且让操作系统的中断处理程序占用处理器来处理出现的中断事件。操作系统分析保存在主存固定单元中的中断寄存器内容就可知道出现的中断事件的性质,从而作出相应的处理。 本实习中,用从键盘读入信息来模拟中断寄存器的作用,用计数器加1 来模拟处理器 执行了一条指令。每模拟一条指令执行后,从键盘读入信息且分析,当读入信息=0 时,表示无中断事件发生,继续执行指令;当读入信息=1 时,表示发生了时钟中断事件,转时钟中断处理程序。 (2)假定计算机系统有一时钟,它按电源频率(50Hz)产生中断请求信号,即每隔20 毫秒产生一次中断请求信号,称时钟中断信号,时钟中断的间隔时间(20 毫秒)称时钟单

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