OS-实验六
实验六 数据安全性实验
实验六数据安全性实验实验目的和要求:加深对数据安全性的理解,掌握SQL SERVER中有关用户、角色及操作权限的管理方法。
实验内容:1. 建立教学数据库teaching2. 建立教学数据库的三个基本表:S (S#, SNAME, AGE, SEX) 学生(学号,姓名,年龄,性别)SC (S#, C#, GRADE ) 选修(学号,课程号,成绩)C (C#, CNAME, TEACHER) 课程(课程号,课程名,任课教师)3.输入数据基本表C的数据4. 数据修改、删除1)把C2课程的非空成绩提高10%。
2)在SC表中删除课程名为PHYSICS的成绩的元组。
3)在S和SC表中删除学号为S8的所有数据。
5. 计算每个学生有成绩的课程门数、平均成绩。
6. 创建一个登录用户(1)打开企业管理器中的安全性文件夹,右击其中的登录文件夹,在弹出的菜单中选择“新建登录”选项后,就会出现一个登录属性对话框,在常规选项卡中输入用户名(login1),选择该用户的安全认证模式,选择默认数据库和默认语言。
如使用SQL SERVER安全认证模式,可以直接在名称栏中输入新登录名,并在下面的栏目中输入登录密码。
(2)选择数据库访问选项卡,确定用户能访问的数据库为教学数据库teaching,操作完成后,单击“确定”按钮,完成创建登录用户的工作。
7. 创建新的数据库用户在企业管理器中扩展SQL服务器及数据库文件夹。
右击用户文件夹,弹出的菜单中选择“新建数据库用户”项,会出现新建数据库用户属性对话框。
在对话框的登录名栏中选择一个SQL服务器登录用户名(login1),并在它下面的用户名栏中输入数据库用户名u2,单击“确定”按钮完成。
8.使用GRANT语句,把对基本表S、SC、C的使用权限授给用户u2。
并用REVOKE 语句回收权限。
实现数据转换实验内容:1)利用DTS的功能导出数据。
2)利用DTS的功能导入数据。
3)利用DTS设计器导入、导出数据。
os课程设计死锁
os课程设计死锁一、教学目标本课程的教学目标是使学生掌握操作系统中死锁的概念、原因、类型及避免方法。
通过本课程的学习,学生应能够:1.理解死锁的定义及其在操作系统中的重要性。
2.识别导致死锁的四个必要条件。
3.区分死锁与饥饿、活锁的区别。
4.分析具体实例中的死锁问题,并提出解决方案。
5.应用死锁理论知识,解决实际操作系统问题。
二、教学内容本课程的教学内容主要包括:1.死锁的定义与基本概念:介绍死锁的定义、特点及在操作系统中的含义。
2.死锁的四个必要条件:分析并理解导致死锁的四个必要条件,即互斥条件、占有和等待条件、不剥夺条件、循环等待条件。
3.死锁的类型与避免方法:介绍死锁的不同类型,如资源分配图、资源分配矩阵等,并学习死锁避免算法,如银行家算法、资源请求算法等。
4.死锁的实际案例分析:分析实际操作系统中的死锁案例,如Linux、Windows等操作系统中的死锁问题,探讨解决方案。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括:1.讲授法:通过讲解死锁的基本概念、原因及避免方法,使学生掌握理论知识。
2.案例分析法:分析实际操作系统中的死锁案例,使学生能够将理论知识应用于实际问题。
3.实验法:安排实验课程,让学生动手实践,加深对死锁理论知识的理解。
4.讨论法:学生进行分组讨论,分享学习心得,互相答疑解惑。
四、教学资源为了支持本课程的教学,我们将提供以下教学资源:1.教材:《操作系统原理与实践》等教材,为学生提供理论知识的系统学习。
2.参考书:推荐《现代操作系统》、《操作系统设计与实现》等参考书,丰富学生的知识体系。
3.多媒体资料:提供教学PPT、视频讲座等多媒体资料,帮助学生更好地理解课程内容。
4.实验设备:提供计算机实验室,让学生进行实际操作,增强实践能力。
五、教学评估本课程的评估方式包括以下几个方面:1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的课堂表现,占总评的30%。
OS-homework-6
实验六实验名称:管道通信实验报告:实验要求:1.阅读以下程序:#include <unistd.h>#include <stdio.h>#include <stdlib.h>main(){int filedes[2];char buffer[80];if(pipe(filedes)<0) //创建一个新管道err_quit(“pipe error”);if(fork()>0){char s[ ] = “hello!\n”;close(filedes[0]); //关闭读write(filedes[1],s,sizeof(s)); //从父进程写入管道close(filedes[1]); //在退出程序前关闭写}else{close(filedes[1]); //关闭写read(filedes[0],buffer,80); //从管道读并且保存在buffer中printf(“%s”,buffer);close(filedes[0]);}}编译并运行程序,分析程序执行过程和结果,注释程序主要语句。
2.阅读以下程序:#include<sys/types.h>#include<sys/stat.h>#include<fcntl.h>main(){char buffer[80];int fd;unlink(FIFO); //(如果有FIFO文件,先删掉)mkfifo(FIFO,0666); //创建一个FIFO文件if(fork()>0){char s[ ] = “hello!\n”;fd = open (“FIFO”,O_WRONL Y); //此处是文件名FIFO加上引号write(fd,s,sizeof(s));close(fd);}else{fd= open(FIFO,O_RDONL Y);read(fd,buffer,80);printf(“%s”,buffer);close(fd);}}编译并运行程序,分析程序执行过程和结果,注释程序主要语句。
实验6 基于UCOS的GPIO使用
实验六基于UC/OS的GPIO使用一、实验目的1. 掌握UC/OS的基本运行机制2. 会使用UC/OS的邮箱传递信息二、实验设备(1)PC机一台ARM-CORTEX-M3教学实验开发平台一套(2)Windows xp 系统和编译软件KEIL三、实验内容1.运行UC/OS的基本任务,同时新建按键检测任务和LED显示任务。
2.使用消息邮箱传递按键键值给LED显示任务。
四、实验步骤1.软件安装(1)安装嵌入式软件目录里的winrar340.exe(2) 解压缩文件:mdk3.50绿色版.rar到当前文件夹下,并复制到C盘,覆盖C盘原来的KEIL文件夹。
(3)解压缩嵌入式软件目录里的Setup_JLinkARM_V406b.zip,并安装。
(4)打开C:\Keil\UV3\Uv3.exe(建议创建Uv3.exe快捷方式到桌面)(5)注册KEIL软件(已在课堂上详细讲解)2.硬件连线说明:(1) 实验前,先把所有拨码开关置为off,之后把本次实验用到的拨码开关置为on;(2) 实验结束后,把所有拨码开关置为off;(3) 本次实验的所使用实验板上的硬件资源如下图中黄色圆圈所示,短接相应跳线、把相应拨码开关拨到on的位置。
(4) 连接JLINK的排线到电路板(5) 使用USB线连接电路板到计算机的USB口,给电路板供电,同时把J11的V_USB侧使用跳线帽短接;连接JLINK的USB线到计算机的USB口。
3. 运行UC/OS的基本任务,同时新建按键检测任务和LED显示任务。
(1) 打开C:\Keil\UV3\Uv3.exe(2) 在UV3界面下,使用打开project的方式,打开文件:实验6\基于ucos的按键检测点亮LED灯\EvalBoards\ST\STM3210B-LK1\RVMDK\APP\ STM3210B-LK1-OS.Uv2(3) 重新编译,下载运行程序,观察LED灯的变化(4)按下按键1-4,观察LED灯变化(5)自己修改程序,建立其他任务,观察实验结果。
操作系统实验心得(精选多篇)
操作系统实验心得(精选多篇)第一篇:操作系统实验心得每一次课程设计度让我学到了在平时课堂不可能学到的东西。
所以我对每一次课程设计的机会都非常珍惜。
不一定我的课程设计能够完成得有多么完美,但是我总是很投入的去研究去学习。
所以在这两周的课设中,熬了2个通宵,生物钟也严重错乱了。
但是每完成一个任务我都兴奋不已。
一开始任务是任务,到后面任务就成了自己的作品了。
总体而言我的课设算是达到了老师的基本要求。
总结一下有以下体会。
1、网络真的很强大,用在学习上将是一个非常高效的助手。
几乎所有的资料都能够在网上找到。
从linu某虚拟机的安装,到linu某的各种基本命令操作,再到gtk的图形函数,最后到文件系统的详细解析。
这些都能在网上找到。
也因为这样,整个课程设计下来,我浏览的相关网页已经超过了100个(不完全统计)。
当然网上的东西很乱很杂,自己要能够学会筛选。
不能决定对或错的,有个很简单的方法就是去尝试。
就拿第二个实验来说,编译内核有很多项小操作,这些小操作错了一项就可能会导致编译的失败,而这又是非常要花时间的,我用的虚拟机,编译一次接近3小时。
所以要非常的谨慎,尽量少出差错,节省时间。
多找个几个参照资料,相互比较,慢慢研究,最后才能事半功倍。
2、同学间的讨论,这是很重要的。
老师毕竟比较忙。
对于课程设计最大的讨论伴侣应该是同学了。
能和学长学姐讨论当然再好不过了,没有这个机会的话,和自己班上同学讨论也是能够受益匪浅的。
大家都在研究同样的问题,讨论起来,更能够把思路理清楚,相互帮助,可以大大提高效率。
3、敢于攻坚,越是难的问题,越是要有挑战的心理。
这样就能够达到废寝忘食的境界。
当然这也是不提倡熬夜的,毕竟有了精力才能够打持久战。
但是做课设一定要有状态,能够在吃饭,睡觉,上厕所都想着要解决的问题,这样你不成功都难。
4、最好在做课设的过程中能够有记录的习惯,这样在写实验报告时能够比较完整的回忆起中间遇到的各种问题。
比如当时我遇到我以前从未遇到的段错误的问题,让我都不知道从何下手。
OS课程简介
课程名称:操作系统原理(修订)Operating System Principles课程代码:总学时/学分:64/4(其中含实验学时:14)要求具备知识和能力:已修课程为,微机原理与接口技术(80/5),C程序设计语言(80/5),C++程序设计语言(52/4),数据结构与算法(84/5)适用专业:计算机科学与技术,网络工程专业学生课程目的:本课程目的是使学生掌握现代计算机操作系统的基本原理、基本设计方法及实现技术,具有分析现行操作系统和设计、开发实际操作系统的基本能力。
课程内容:操作系统是当代计算机软件系统的核心,是计算机系统的基础和支撑,它管理和控制着计算机系统中的所有软、硬件资源,可以说操作系统是计算机系统的灵魂。
操作系统课程是计算机专业学生必须学习和掌握的基础课程, 是计算机应用人员深入了解和使用计算机的必备知识, 是进行系统软件开发的理论基础,也是计算机科学与技术专业的一门理论性和实践性并重的核心主干课程。
操作系统课程主要介绍操作系统的设计方法和实现技术,讲授众多操作系统的设计精髓及操作系统最新技术。
包括操作系统各组成部分的概述,互斥性和同步性,处理器实现,调度算法,存储管理,设备管理,文件系统以及网络与分布式操作系统。
教材和重要参考书:教材:汤小丹,梁红兵,哲凤屏,汤子瀛. 计算机操作系统(第三版). 西安:西安电子科技大学出版社. 2007年5月(新世纪计算机类本科规划教材.部级优秀教材)。
参考书:[1]张尧学,史美林,张高. 计算机操作系统教程(第3版). 北京:清华大学出版社[2](荷)ANDREW S. TANENBAUM. 陈向群,马洪兵. 现代操作系统(第2版). 北京:机械工业出版社, 2005年6月[3](美)ANDREW S.TANENBAUM, ALBERT S.WOODHULL. 陈渝,谌卫军译. 操作系统设计与实现(第三版). 北京:电子工业出版社,2007年3月[4]陈向群杨芙清. 操作系统教程(第二版). 北京:北京大学出版社, 2006年6月[5]ABRAHAM SILBERSCHATZ,PETER BAER GALVIN,GREG GAGNE. 郑扣根译. 操作系统概念(第六版翻译版). 北京:高等教育出版社, 2004年1月[6](美)WILLIAM STALLINGS. 陈渝译. 操作系统——精髓与设计原理(第五版).北京:电子工业出版社, 2006年2月考核方式:本课程为考试课。
《OS》课程介绍
(第2版) 邹恒明 机械工业出版社
《计算机操作系统教程》张尧学 史美林
清华大学出版社
《计算机操作系统》徐甲同等 西安电科大
出版社
《操作系统原理》(第四版) 庞丽萍
华中
科技大学出版社
九、推荐参考书书和学习网站
操作系统网上学习系统
/upload/
三、为什么要学操作系统
深入到操作系统内部,理解并掌握操作系
统的基本原理、设计方法和实现技术 ----打开计算机系统的“汽车前盖” ;
掌握、理解操作系统的基本理论,具备开
发核心系统软件的技能,设计操作系统或 者修改现有的系统;
三、为什么要学操作系统
选用、购买、使用合适的操作系统,我们
并不总使用Windows;
各种命令:dir
copy del
format
WINDOWS、UNIX 等提供多任务或多用户环
境
系统调用:例如INT指令
你知道操作系统不能做什么吗?
不做天气预报
不做房屋设计 不是编译工具、不是编辑工具
总之,操作系统不直接解决具体应用 问题,也不负责编辑、编译源程序...
操作系统能做什么?
《操作系统原理》
----课程介绍----
一、认识操作系统
以下这些软件,哪些是操作系统?
DOS
LINUX WORD UNIX IOS 一个C语言源程序
WINDOWS TURBO-C FOXPRO VI MAC-OS-X
流行过的操作系统
微软:Windows系列(以前的MS-DOS)
UNIX家族:Solaris, AIX, HP UX, SVR4,
四学习操作系统的关注点操作系统提供一种折衷权衡软件操作系统程序和其他程序的相互关系操作系统的资源管理包括系统安全和方便用户的两大角色五涉及到计算机科学的领域计算机体系结构软件设计程序设计语言数据结构与算法信息安全计算机网络六本课程的先修课程序设计数据结构汇编语言计算机组成原理七本课程的主要内容介绍操作系统的基本概念基本结构及运行环境
计算机组成原理编程实验
实验五 类型转换和移位操作运算(第 3 章)
实验目的: 了解高级语言中数据类型的转换和移位操作结果, 从而能更好地理解指令系统设 计和计算机硬件设计所需满足的要求和需要考虑的问题。 实验要求: ,编程实现以下各种操作: (1) 给定一个 short 型数据 -12345,分别转换为 int、unsigned short、unsigned int、float 类型的数据; (2)给定一个 int 型数据 2147483647, 分别转换为 short、 unsigned short、 unsigned int、float 类型的数据; (3)给定一个 float 型数据 123456.789e5,转换成 double 型数据; (4)给定一个 double 型数据 123456.789e5,转换成 float 型数据; (5) 按 short 和 unsigned short 类型分别对-12345 进行左移 2 位和右移 2 位操作。 要求分别用十进制和十六进制形式打印输出以上各种操作的结果。 实验报告: 1. 给出源程序(文本文件)和执行结果。 2. 根据实验结果,回答下列问题。 (1) 无符号数和带符号整数的扩展操作方式是否相同?各是如何进行的? (2) 补码整数(如 int 型数)是否总能转换为等值的 float 类型数据?为什么? (3) float 型数据是否总能转换成等值的 double 型数据?为什么? (4) 长数被截断成短数后可能发生什么现象?为什么? (5) C 语言中移位操作规则与操作对象的数据类型有关吗? (6) 左移 2 位和右移 2 位操作分别相当于扩大和缩小几倍? 报告提交截止日期:5 月 10 日
实验三 浮点数的表示(第 2 章)
实验目的:了解 IEEE 754 浮点数在机器中的应用,特别是一些特殊值的处理。 实验要求:通过编程得出 float 和 double 类型的精度(即十进制有效位的位数) ; 编程检查“-8.0/0” 、 “sqrt(-4.0) ”的运算结果。 实验报告: 1. 给出源程序(文本文件)和执行结果。
操作系统课程实验报告-实验六文件系统
hierarchy, filesCompareOutput = diffDir(sys.argv[1], sys.argv[2])
print('{0}\n 比较文件结构:\n{0}'.format(' '*10)) PrintHierarchy(hierarchy) print() if len(filesCompareOutput) != 0:
subname[1])
# 合并结果
filesCompareOutput += subCompareOutput
sameFileHierarchy.append(('{0}'.format(name),
subFileHierarchy))
elif ( os.path.isfile(subname[0])
华南理工大学 操作系统课程实验报告
实验概述
【实验目的及要求】
加深对 linux 文件系统的理解。 实现一个“difftree”命令,其功能是比较两个目录下的文件结构和文件信 息。当在命令行方式下执行“difftree <dir1> <dir2>”命令时,能够比较目录 dir1 和 目录 dir2 是否具有相同的结构,对相同的部分,进一步比较相同文件名的 文件内容。列出比较的文件系统结构图。 本实验是对单个文件比较的扩展,设计中需要考虑目录操作。
for item in hierarchy: if isinstance(item, tuple): print(' '*level*3 + ' ' + item[0] + '/') PrintHierarchy(item[1], level+1) else: print(' '*level*3 + ' ' + item)
中山大学《操作系统原理》
中山大学信息科学与技术学院计算机科学系 中山大学信息科学与技术学院计算机科学系课程教学大纲《操作系统原理》课程教学大纲课程名称:操作系统原理类别:专业必修课授课对象:本科生总学时:72学时适用专业:计算机科学与技术/信息安全开课学期:第五学期编写人员:丘静玉审核人员:印鉴编写日期:2006年4月一、教学目的操作系统是配置在计算机硬件上的第一层软件,其他所有的系统软件和应用软件都必须依赖于操作系统的支持。
《操作系统原理》是计算机学科各相关专业的重要的必修课程之一,它在计算机知识结构中有着极其重要的地位和作用,可为学生较全面地建立起关于计算机系统的概念。
学生通过学习本课程应该达到以下目标:1.掌握操作系统的基本概念、原理、技术和方法,深入了解操作系统在计算机系统中的地位及作用,以及它与硬件和其它软件之间的关系,进而了解操作系统控制整个计算机系统执行的全过程,具有操作系统的整体概念。
2.能用程序设计语言编写、调试和运行操作系统的主要算法和功能模块。
3.了解一个以上主流操作系统的实现技术,熟练掌握应用。
4.获取知识的同时,掌握学科的基本规律及研究方法,初步培养自我拓展知识和运用知识的能力。
总之,本课程要求学生全面地了解和掌握操作系统的目标、作用和模型,从资源管理的角度领会操作系统的功能和实现过程,使学生系统科学地受到分析问题和解决问题的训练,提高运用理论知识解决实际问题的能力,鼓励并初步培养学生的研究精神和能力。
二、教材选择1. 教学内容概述《操作系统原理》讲述操作系统的基本概念、原理和方法,其课程内容应包含《中国计算机科学与技术学科课程2002》(简称CCC2002)里列举的知识体系:CS-OS1至8。
从资源管理的角度来说,课程内容主要围绕操作系统的几个基本功能展开:(1) 操作系统概述:介绍操作系统的基本概念、目标、功能、发展历史和类型、操作系统的主要成就以及现代操作系统的特点等。
(2) 处理器管理:在进程概念的基础上讨论进程描述、进程控制、进程同步和互斥、死锁、饿死、线程、处理器调度等问题。
OS实验六——精选推荐
OS实验六《操作系统》实验报告实验三进程管理及进程通信⼀.实验⽬的利⽤Linux提供的系统调⽤设计程序,加深对进程概念的理解。
体会系统进程调度的⽅法和效果。
了解进程之间的通信⽅式以及各种通信⽅式的使⽤。
⼆.实验准备复习操作系统课程中有关进程、进程控制的概念以及进程通信等内容(包括软中断通信、管道、消息队列、共享内存通信及信号量概念)。
熟悉本《实验指导》第五部分有关进程控制、进程通信的系统调⽤。
它会引导你学会怎样掌握进程控制。
阅读例程中的程序段。
三.实验⽅法⽤vi 编写c 程序(假定程序⽂件名为prog1.c)编译程序$ gcc -o prog1.o prog1.c 或$ cc -o prog1.o prog1.c运⾏$./prog1.o四.实验内容及步骤⽤v i编写使⽤系统调⽤的C语⾔程序。
1.编写程序。
显⽰进程的有关标识(进程标识、组标识、⽤户标识等)。
经过5 秒钟后,执⾏另⼀个程序,最后按⽤户指⽰(如:Y/N)结束操作。
编译运⾏结果:2.编写程序。
实现⽗进程创建⼀个⼦进程。
体会⼦进程与⽗进程分别获得不同返回值,进⽽执⾏不同的程序段的⽅法。
编译运⾏:思考:⼦进程是如何产⽣的?⼜是如何结束的?⼦进程被创建后它的运⾏环境是怎样建⽴的?答:⼦进程由fork()函数创建,通过exit()函数⾃我结束,⼦进程被创建后核⼼将为其分配⼀个进程表项和进程标识符,检查同时运⾏的进程数⽬,并且拷贝进程表项的数据,由⼦进程继承⽗进程的所有⽂件。
3.编写程序。
⽗进程通过循环语句创建若⼲⼦进程。
探讨进程的家族树以及⼦进程继承⽗进程的资源的关系。
程序如下:编译运⾏:思考:①画出进程的家族树。
⼦进程的运⾏环境是怎样建⽴的?反复运⾏此程序看会有什么情况?解释⼀下。
183922472248 2252 22542249 2251 22532250每⼀次运⾏返回的进程号都不相同,但是都符合家族进程树,出现这样的情况是由于系统本⾝就是随机分配进程号的。
os实验报告
华北电力大学实验报告||实验名称 EOS操作系统实验课程名称操作系统||专业班级:网络1202 学生姓名:李忠明学号:************ 成绩:指导教师:王德文实验日期:2.2生成项目2.3执行项目在OS Lab中选择“调试”菜单中的“开始执行(不调试)”,可以执行刚刚生成的2. 在“调试”菜单中选择“启动调试”,Windows3. 激活Windows控制台应用程序的窗口,可以看到窗口中没有输出任何内容,调试命令2. 输入调试命令r后按回车,显示当前CPU中各个通用寄存器的值,其中表示IP寄存器的值为0xfff0。
3. 输入调试命令xp /1024b 0x0000,查看开始的1024个字节的物理内存。
在物理内存的值都为0,说明BIOS中断向量表还没有被加载到此处。
查看EOS启动后的进程和线程的信息:1)在控制台中输入命令“pt”后按回车。
2)输出的进程和线程信息如下图所示6. 查看有应用程序运行时进程和线程的信息:1)待 EOS启动完毕,在EOS控制台中输入命令“hello”后按回车。
此时Hello.exe应用程序就开始执行。
2)迅速按Ctrl+F2切换到控制台2,并输入命令“pt”后按回车。
输出的进程和线程信息如下图所示四、实验总结通过本次试验,对操作系统的启动有了一定了解,对后面的实验有了最基本的认识,实验过程中只要对照课本就可以很好地完成,需要细心操作。
实验三进程的创建一、实验目的及要求练习使用EOS API函数CreateProcess创建进程,掌握创建进程的方法,理解程序和进程的区别,调试跟踪CreateProcess函数的执行过程,了解进程的创建过程,理解进程是资源的分配单位。
二、所用仪器、设备OS Lab实验环境三、实验原理四、实验方法与步骤1.启动OS Lab、新建一个EOS Kernel项目,用debug和release模式分别生成项目,新建EOS应用程序项目;2.练习使用控制台命令创建EOS应用程序的进程3.调试CreateProcess函数4.调试PsCreateProcess函数5.练习通过编程的方式创建应用程序的多个进程去在源代码文件NewTwoProc.c提供的源代码基础上进行修改,要求使用hello.exe同时创建5个进程。
计算机操作系统实训资料
计算机操作系统实验(训)指导书学院:电子信息工程学院班级:13计算机科学与技术本01班学号:姓名:指导教师:西安思源学院电子信息工程学院前言操作系统是计算机科学与技术专业的一门重要的专业课,是一门实践性很强的技术课程。
掌握操作系统原理、熟悉操作系统的使用是各层次计算机软硬件开发人员必不可少的基本技能。
操作系统课程讲授理论原理比较容易,而如何指导学生进行实践则相对较难,导致学生不能深刻地理解操作系统的本质,也不能在实际中应用所学的操作系统理论知识及操作系统所提供的功能来解决实际问题。
本实验课程在操作系统原理课程教学中占有重要地位,目的是让学生及时掌握和巩固所学的基本原理和基础理论,加深理解。
提高学生自适应能力,为将来使用和设计各类新的操作系统打下基础。
一般来说,学习操作系统分为以下几个层次:1.学习并掌握操作系统的基本概念及原理,了解操作系统的实现机制。
2.掌握常用操作系统的使用、操作和维护,成为合格的系统管理员。
目前最常用的操作系统主要有UNIX、Linux、Windows等等。
3.通过分析操作系统源代码,掌握修改、编写操作系统的能力。
开放源代码的操作系统Linux的出现为我们提供了机遇。
操作系统本身的构造十分复杂,如何在有效的时间内,使学生既能了解其实现原理又能对原理部分进行有效的实践,是操作系统教学一直在探索的内容。
本实验课程以Windows和Linux操作系统为主要平台,从基本原理出发,通过几个实验,使学生能对操作系统的基本原理有更深入的了解,为将来从事操作系统方面的研究工作打下一定的基础。
目录实验一Windows的用户界面 (4)实验二Windows2003的任务与进程管理器 (6)实验三Linux使用环境 (10)实验四Linux进程管理、内存管理、设备管理 (13)实验五Windows2003内存管理 (16)实验六目录和文件管理 (19)实验七用户与组群管理 (21)实验一Windows的用户界面一、实验目的(1)熟悉Windows的GUI界面和命令控制界面(2)学习并熟悉Windows的命令行解释器及常用命令(3)理解批处理文件及批处理文件的使用二、实验理论基础及教材对应关系1、实验理论基础:(1)W indows的命令解释器及字符用户界面。
os实验指导书(+实验提示)
操作系统实验指导书主编:杜俊俐计算机学院操作系统课程组2010年2月 20日前言操作系统是计算机系统中的核心系统软件,负责控制和管理整个系统的资源并组织用户协调使用这些资源,是计算机高效的工作。
操作系统课程是计算机科学与技术专业核心课程。
由于操作系统是最优秀、最复杂和最庞大的软件之一,所以,真正领会操作系统课程所介绍的感念、原理、方法和技巧等,是十分困难的。
经验表明,学习尤其是真正体会和掌握操作系统的最好方式是对它进行充分的实验。
为此,培养计划中为操作系统课程安排了16学时实验。
为了更好地发挥实验深入理解课程知识的学习作用及知识应用的实践方法,将课程中重要知识点设计成七个实验。
通过这些实验有助于学生全面、透彻的理解操作系统原理中的核心知识。
目录第一章、概述 (4)第二章、实验要求及注意事项 (5)第三章、实验项目 (6)实验一:进程创建与撤消 (6)实验二:进程调度 (7)实验三:进程通信 (8)实验四:分区式储器管理 (9)实验五:请求页式存储管理 (10)实验六:磁盘调度算法 (11)实验七:磁盘文件操作 (12)第四章、参考文献 (13)附录A:实验报告规范 (14)第一章、概述操作系统课程是计算机科学与技术专业核心课程。
《高级语言程序设计》、《数据结构》等课程为其前趋课程。
该课程理论性强,难以理解。
通过课程的实验,能帮助学生深透理解并真正领会操作系统课程所介绍的感念、原理、方法和技巧等。
实验学时为16,共分七个实验分别进行。
实验一:进程创建与撤消、实验二:进程调度、实验三:进程通信、实验四:分区式储器管理、实验五:请求页式存储管理、实验六:磁盘调度算法、实验七:磁盘文件操作。
其中实验五需4学时,其余均为2学时。
这七个实验对操作系统原理中的进程管理、存储器管理、文件系统等重要知识进行训练。
实现语言为Visual C++ 6.0,系统平台为Windows。
第二章、实验要求及注意事项实验环境要求:硬件:普通PC386以上微机;软件:windows操作系统;开发语言:Visual C++ 6.0;实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习报告、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果,实验后认真书写符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸和封面装订整齐,按时上交。
实验六线程的创建与调度剖析
OS实验六学号:姓名:座位号实验六线程的创立与调度一、实验目的1、线程是操作系统中最重要的概念之一。
现代操作系统为了增加程序的并发度,减少进程转换中系统的时空开销,几乎都引入了线程。
线程,也叫轻量级进程,引入线程后,仍以进程为单位分配系统资源,但处理机却是以线程为单位进行指派。
通过该实验,让学生体会线程的存在,了解线程与进程的关系,学习线程的创立与终止方法。
二、实验预习1、什么是线程?为什么要建立线程?一个线程一般有几种不同的状态?答:线程具有许多传统进程所具有的特征,所以又称为轻型进程或进程元,作为调度和分派的根本单位。
建立线程的目的是为了使多个程序能够并发执行,以提高资源利用率和系统吞吐量。
线程在运行时具有三种根本状态:执行状态,表示线程已获得处理机而正在运行;就绪状态,表示线程已具备了各种执行条件,只须再获得CPU便可立即执行;阻塞状态,表示线程在执行中因某事件受阻而处于暂停状态。
2、线程的实现方式有哪几种?操作系统是根据什么来感知线程的存在的?答:线程的实现方式有用户级线程和内核支持线程以及实现了这两种类型的线程三种。
内核支持线程〔KST〕:又称为内核级线程〔KIT〕,在OS中的所有进程,无论是系统进程还是用户进程,都是在操作系统内核的支持下运行的,是和内核紧密相关的。
当前大多数OS都支持内核支持线程。
用户级线程〔ULT〕:用户级线程是和内核无关的,对于设置了用户级线程的系统,其调度仍是以进程为单位进行的。
用户级线程的主要缺点有系统调用的阻塞问题和进程中仅有一个线程能够执行。
组合方式:在组合方式线程系统中,内核支持多个内核支持线程的建立、调度和管理,同时,也允许用户应用程序建立、调度和管理用户级线程。
操作系统是根据线程控制块〔TCB〕来感知线程的存在的。
三、实验内容和要求实验要求:写出实验过程和实验结果,给出实验结论。
实验内容:1.通过SPY++工具来查看系统中的进程和线程;查看进程和线程的关系以及它们的优先级等信息。
实验6 并发程序实验_进程互斥
实验6 并发程序实验_进程互斥一、背景知识:1、进程树:在UNIX系统中,只有0进程是在系统引导时被创建的,在系统初启时由0进程创建1进程,以后0进程变成对换进程,1进程成为系统中的始祖进程。
UNIX利用fork( )为每个终端创建一个子进程为用户服务,如等待用户登录、执行SHELL命令解释程序等,每个终端进程又可利用fork( )来创建其子进程,从而形成一棵进程树。
可以说,系统中除0进程外的所有进程都是用fork( )创建的。
2、所涉及的系统调用fork( ) :功能:创建一个新进程。
系统调用格式:pid=fork( )参数定义:int fork( )fork( )返回值意义如下:0:在子进程中,pid变量保存的fork( )返回值为0,表示当前进程是子进程。
>0:在父进程中,pid变量保存的fork( )返回值为子进程的id值(进程唯一标识符)。
-1:创建失败。
如果fork( )调用成功,它向父进程返回子进程的PID,并向子进程返回0,即fork( )被调用了一次,但返回了两次。
此时OS在内存中建立一个新进程,所建的新进程是调用fork( )父进程(parent process)的副本,称为子进程(child process)。
子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。
父进程与子进程并发执行。
核心为fork( )完成以下操作:(1)为新进程分配一进程表项和进程标识符进入fork( )后,核心检查系统是否有足够的资源来建立一个新进程。
若资源不足,则fork( )系统调用失败;否则,核心为新进程分配一进程表项和唯一的进程标识符。
(2)检查同时运行的进程数目超过预先规定的最大数目时,fork( )系统调用失败。
(3)拷贝进程表项中的数据将父进程的当前目录和所有已打开的数据拷贝到子进程表项中,并置进程的状态为“创建”状态。
(4)子进程继承父进程的所有文件对父进程当前目录和所有已打开的文件表项中的引用计数加1。
实验六 终端技术对讯号品质的影响
實驗六終端技術對訊號品質的影響一、原理說明終端技術的目的在於提供一個完全阻抗匹配的傳輸環境以確保訊號的品質(signal integrity)。
當訊號在印刷電路板佈線(PCB trace)上傳輸時必有起點及終點,起點為使用邏輯閘的輸出端有其輸出阻抗而終點為輸入端亦有其輸入阻抗,一個輸出端可能推動好幾個輸入端。
若要考慮阻抗匹配的問題時相當複雜,很幸運的是在訊號的工作頻率不高時不需要考慮阻抗匹配的問題,即可獲得很好的訊號品質。
但是電路板的工作頻率越來越高,已經高到必須正視訊號品質的問題,否則設計的電路會因系統內的雜訊干擾太多而影響電路的正常工作以至於發生誤動作,因此在高速電路裏阻抗匹配的做法在電路設計階段就必須仔細考慮,然而電路太複雜要很完美的完成阻抗匹配不太容易,終端匹配技術就應運而生。
其主要目的為儘可能的達成阻抗匹配以減少訊號的反射現象的發生或降低因反射產生高頻成分的雜訊造成的串音干擾。
但必須注意的是如果選擇錯誤的終端技術,非但不能減少反射的現像同時更會造成更多的串音及電源干擾雜訊以至於降低系統雜訊的容忍度。
常見的幾種終端技術為:1.並連終端技術(End Termination)。
2.戴維寧終端技術(Thevenin Termination)。
3.串連終端技術(Source Termination)。
4.交流終端技術(AC Termination)。
5.二極體終端技術(Diode Termination)。
以下針對這幾種終端技術的做法及其優缺點說明如下:1.並連終端技術(End Termination)一般並連終端技術是在訊號的輸入端(即遠端)並連電阻,依其並連至地或電源端可概分為三種做法:(1)並連電阻到地(2) 並連電阻到電源端(3)同時並連電阻到地及電源端,又稱為戴維寧終端技術。
(1)並連電阻到地的終端技術:圖6.1為並連電阻到地的接法,在訊號的接收端;即遠端並連一圖6.1 並連電阻到地的接法與傳輸線阻抗相同大小之電阻至接地端,這種接法的特性為(a) 驅動端的波形傳輸會全部降在這條線上。
《操作系统课程》实验(实训)指导大纲
《操作系统课程》实验(实训)指导大纲课程编号:G611SG0004课程性质:学科基础课适用专业:计算机科学与技术网络工程数字媒体实验学时:16实验教材:自编符合《认证标准》:具有运用工程基础知识和本专业基本理论知识解决问题的能力,具有系统的工程实践学习经历;完成本课程实验(实训)总软件最少行数: 2000实验成绩评价方法:学生每完成一个实验项目,要求独立认真的填写实验报告。
实验指导教师将根据学生完成实验的态度和表现,结合填写的实验报告评定实验成绩,成绩的评定按百分制评分。
老师根据平时实验的分数之和取平均分,得出综合成绩。
实验(实训)内容:实验一操作系统安装及熟练使用(一)实验目的熟悉Windows//Linux操作系统的安装过程与安装方法,并掌握该操作系统所提供的用户接口环境,并为后续实验做好编程环境准备。
(二)实验项目内容1、熟悉Windows//Linux操作系统的安装过程与安装方法,并掌握该操作系统所提供的用户接口环境,通过系统提供的用户管理程序、查看系统中的用户情况、进程、线程、内存使用情况等,学会使用它进行监视进程的状况、系统资源的使用情况及用户情况。
并为后续实验做好编程环境准备。
2、用C语言编写一小段程序,使其可以通过某个系统调用来获得OS提供的某种服务。
(三)主要仪器设备一台PC机(四)实验室名称计算机中心实验室(五)实验报告撰写(撰写的格式采用教务处所提供的样本见附件)......实验二编程模拟进程间的同步和互斥(一)实验目的通过实验加强对进程同步和互斥的理解,并掌握进程(线程)的创建和调用方法。
学会使用信号量解决资源共享问题。
学生可以自己选择在Windows或Linux系统下编写。
代码不得少于200行。
(二)实验项目内容1.以下为Linux系统下参考程序,请编译、运行并观察程序的输出,并分析实验结果,写出实验报告。
#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<time.h>#include<sys/types.h>#include<sys/wait.h>#include<linux/sem.h>#define NUM_PROCS 5#define SEM_ID 250#define FILE_NAME "/tmp/sem_aaa"#define DELAY 4000000void update_file(int sem_set_id, char *file_path, int number){struct sembuf sem_op;FILE *file;//等待信号量的数值变为非负数,此处设为负值,相当于对信号量进行P操作sem_op.sem_num=0;sem_op.sem_op=-1;sem_op.sem_flg=0;semop(sem_set_id,&sem_op,1);//写文件,写入的数值是当前进程的进程号file=fopen(file_path,"w");if(file){//临界区fprintf(file,"%d\n",number);printf("%d\n",number);fclose(file);}//发送信号,把信号量的数值加1,此处相当于对信号量进行V操作sem_op.sem_num=0;sem_op.sem_op=1;sem_op.sem_flg=0;semop(sem_set_id,&sem_op,1);}//子进程写文件void do_child_loop(int sem_set_id,char *file_name){ pid_t pid=getpid();int i,j;for(i=0;i<3;i++){update_file(sem_set_id,file_name,pid);for(j=0;j<4000000;j++);}}int main(int argc,char **argv){int sem_set_id; //信号量集的IDunion semun sem_val; //信号量的数值,用于semctl()int child_pid;int i;int rc;// 建立信号量集,ID是250,其中只有一个信号量sem_set_id=semget(SEM_ID,1,IPC_CREAT|0600);if(sem_set_id==-1){perror("main: semget");exit(1);}//把第一个信号量的数值设置为1sem_val.val=1;rc=semctl(sem_set_id,0,SETVAL,sem_val);if(rc==-1){perror("main:semctl");exit(1);}//建立一些子进程,使它们可以同时以竞争的方式访问信号量for(i=0;i<NUM_PROCS;i++){child_pid=fork();switch(child_pid){case -1:perror("fork");case 0: //子进程do_child_loop(sem_set_id,FILE_NAME);exit(0);default: //父进程接着运行break;}}//等待子进程结束for(i=0;i<NUM_PROCS;i++){int child_status;wait(&child_status);}printf("main:we're done\n");fflush(stdout);return 0;}2.写一程序模拟PV操作同步机构,且用PV操作解决生产者——消费者问题。
实验六常见维生素的质量检测
实验六常见维生素的质量检测一、实验目的1.认识维生素的种类,了解其特性,运用科学分析方法进行质量控制;2.熟悉不同维生素的结构、其理化性质和临床上常用的剂型;3.掌握运用物理、化学等方法对维生素进行定性和定量检测。
二、实验意义维生素(Vitamin)是机体必须而又无法自行生产的一系列微量营养成分,为一般通过饮食摄取的有机化合物的统称。
与糖类、蛋白质及脂肪等其他营养物质不同,维生素不能产生能量、组成细胞,但是它们对生物体的新陈代谢起着重要的调节作用。
各种维生素的生理活性不同。
机体缺乏维生素会导致严重的健康问题,适量摄取维生素可保持健康,但摄取过量却会导致中毒。
现在医学上发现的维生素可分为:脂溶性维生素和水溶性维生素。
其中,脂溶性维生素主要有维生素A、维生素D、维生素E和维生素K;水溶性维生素,主要是B族维生素、维生素C、维生素H、维生素M和维生素PP等。
本实验涉及的常见维生素及其性质如下:1.维生素A:室温为淡黄色油溶液或结晶与油的混合物,60℃时为澄清溶液;无臭;在空气中易氧化,遇光易变质。
(1)在三氯甲烷、乙醚、环己烷或石油醚能任意混合,在乙醇中微溶,在水中不溶(结构式等见下表)。
维生素AD胶丸制剂使用油溶剂,内容物溶于有机溶剂而不溶于水,提示维生素A是脂溶性维生素。
(2)药理作用为:维持正常视力,预防夜盲症;维持上皮细胞组织健康;促进生长发育;增加对传染病的抵抗力;预防和治疗干眼病。
(3)《中国药典》(2010版)中收载的制剂有:维生素A软胶囊;维生素AD软胶囊;维生素AD 滴剂。
2.维生素B1:为白色结晶或结晶性粉末;有微弱的特臭,味苦;干燥品在空气中迅即吸收约4%的水分。
在水中易溶,在乙醇中微溶,在乙醚中不溶(结构式等见下表)。
(1)维生素B1的衍生物硫色素具有溶于异丁醇显强烈的蓝色荧光的性质,故可用作专属检测分析,原理为:维生素B1的分子结构中噻唑环在碱性介质中可被高铁氰化钾等氧化剂氧化,再与嘧啶环上的氨基(-NH 2)缩合生成具有荧光的硫色素(于异丁醇中显强烈蓝色荧光)。
实验六外观模式的建模方式
实验六一、实验目的1、熟练掌握外观模式的建模方式2、掌握如何应用外观模式编程解决具体问题3、熟练掌握代码模式的建模方式4、掌握如何应用代码模式编程解决具体问题二、实验器材1、计算机一台2、JCreator软件实验内容1、在计算机主机(MainFrame)中,只需要按下主机的开机按钮(on()),即可调用其他硬件设备和软件的启动方法,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘(HardDisk)的读取(read())、操作系统(OS)的载入(load())等,如果某一过程发生错误则计算机启动失败。
使用外观没事模拟该过程,绘制类图并编程实现。
2、应用软件所提供的桌面快捷方式是快速启动应用程序的代理,桌面快捷方式一般使用一张小图片(Picture)来表示,通过调用快捷方式的run() 方法将调用应用软件(Applictation)的run()方法。
使用代理模式模拟该过程,试绘制类图并编程实现。
三、实验结果关注淘宝店530213程序代码:(1)外观模式代码public class Computer {private CPU cpu;private HardDisk hardDisk;private Memory memory;private OS os;public Computer() {this.cpu = new CPU();this.hardDisk = new HardDisk();this.memory = new Memory();this.os = new OS();}public void on(){try {memory.check();cpu.run();hardDisk.read();os.load();System.out.println("计算机启动成功!");} catch (Exception e) {System.out.println(e.getMessage());System.out.println("计算机启动失败!");}}}////////////////////////////////////////////////////public class CPU {public void run(){Random random = new Random();if(random.nextInt()%10 == 0) {throw new RuntimeException("CPU success!");}System.out.println("CPU fail!");}}//淘宝店530213////////////////////////////////////////////////////public class HardDisk {public void read(){Random random = new Random();if(random.nextInt()%10 == 0) {throw new RuntimeException("Harddisk success!");}System.out.println("Harddsik fail!");}}////////////////////////////////////////////////////public class Memory {public void check(){Random random = new Random();if(random.nextInt()%10 == 0) {throw new RuntimeException("Memory success!");}System.out.println("Memory fail!");}}/////////////////////关注淘宝店530213///////////////////////////public class OS {public void load(){Random random = new Random();if(random.nextInt()%10 == 0) {throw new RuntimeException("OS success!");}System.out.println("OS fail!");}}////////////////////////////////////////////////public class Test {public static void main(String[] args) {Computer computer = new Computer();computer.on();}}(2)代理模式代码package com.puter.pojo;public interface Application {void run();}package com.puter.pojo;public class Picture implements Application{Application application = new RealApplication();@Overridepublic void run() {application.run();}}package com.puter.pojo;public class RealApplication implements Application{ @Overridepublic void run() {System.out.println("运行该应用程序!");}}package com.puter.test;import com.puter.pojo.Application;import com.puter.pojo.Picture;public class Test {public static void main(String[] args) {Application p = new Picture();p.run();}}结果截图:记住淘宝店530213五、实验体会。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六内存管理
一、实验目的
操作系统的发展使得系统完成了大部分的内存管理工作。
对于程序员而言,这些内存管理的过程完全透明不可见。
因此,程序员开发时从不关心系统如何为自己分配内存,而且永远认为系统可以分配给程序所需要的内存。
在程序开发时,程序员真正需要做的就是:申请内存、使用内存、释放内存。
通过本次实验:
1、掌握内存管理常用命令和系统调用;
2、在Windows下,使用性能监视器来观察内存(管理)工作情况并作出解释;
3、掌握动态存储分配相关函数malloc、free等。
二、实验内容
1.编写程序完成以下功能:
1)申请一块内存空间
2)复制字符串“hello”到分配的内存
3)打印出该字符串及内存地址
4)释放申请的内存空间
2.相关函数
1)内存动态分配函数
#include <alloc.h>
void *malloc(size_t size)
该函数分配指定大小size个字节的内存空间,成功时返回分配内存的指针(即所分配内存的地址)。
该内存区域没有清空。
2)void free(void * addr);
该函数释放由malloc()分配的内存,addr是要释放内存空间的起始地址,并且addr必须是被以前malloc( )调用返回的。
void *malloc(size_t size);
void free(void *p);
Struct elem *p;
p = (struct elem*)malloc(sizeof(struct elem))
void free(p);
四、实验结果
1.程序清单
2.运行结果及说明
附:与内存分配、回收有关的程序。
下列程序功能是:申请内存、使用内存以及释放一块内存
#include <stdio.h>
#include <string.h>
#include <malloc.h>
int main(void)
{ char * str;
if((str=(char*)malloc(10))==NULL)
{ printf("not enough memory to allocate buffer\\n");
exit(1); }
strcpy(str,"hello");
printf("string is %s\\n",str);
free(str);
return 0;
}
malloc函数的进一步说明:
malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。
调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。
然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。
接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上。
调用free函数时,它将用户释放的内存块连接到空闲链上。
到最后,空闲链会被切成很多的小内存片段,如果这时用户申请一个大的内存片段,那么空闲链上可能没有可以满足用户要求的片段了。
于是,malloc函数请求延时,并开始在空闲链上翻箱倒柜地检查各内存片段,对它们进行整理,将相邻的小空闲块合并成较大的内存块。
如果无法获得符合要求的内存块,malloc函数会返回NULL指针,因此在调用malloc动态申请内存块时,一定要进行返回值的判断。