收藏 分享(赏)

西安交大操作系统experiment1(实验1)-免费.ppt

上传人:dreamzhangning 文档编号:3354156 上传时间:2018-10-17 格式:PPT 页数:55 大小:2.34MB
下载 相关 举报
西安交大操作系统experiment1(实验1)-免费.ppt_第1页
第1页 / 共55页
西安交大操作系统experiment1(实验1)-免费.ppt_第2页
第2页 / 共55页
西安交大操作系统experiment1(实验1)-免费.ppt_第3页
第3页 / 共55页
西安交大操作系统experiment1(实验1)-免费.ppt_第4页
第4页 / 共55页
西安交大操作系统experiment1(实验1)-免费.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

1、操作系统课内实验(一),张航 2013.11.4,操作系统实验,什么是操作系统? 操作系统(OS)是用户和计算机之间的界面. 一方面操作系统管理着所有计算机系统资源, 另一方面操作系统为用户提供了一个抽象概念上的计算机. 在操作系统的帮助下, 用户使用计算机时, 避免了对计算机系统硬件的直接操作. 有什么样的操作系统?Windows、Linux、 Unix、Mac,Linux介绍,GPL(General Public License)普通公共许可 GPL的基本含义是你可以随意拷贝和散发根据GPL许可证授权的软件,并且要求你不能阻止其他人做同样的事情。你既不能向他人就软件本身收费,也不能通过进一

2、步的授权来限制他们这样做。从GPL软件衍生出来的作品也必须同样遵循GPL条款的约束。 GNU(Gnu is Not UNIX)自由软件体系计划 Linux从产生到发展一直遵循的是“自由软件”思想 Linux是自由软件,Linux是免费的,Linux的发展(1),Unix的产生MULTiplexed Information and Computing System计划UNICS(Unix)(1971) Linux 是由一位 Linus Torvalds (托瓦兹) 所发展出来的 Unix Like操作系统minix Linux=Linus的kernel Linux发行版本(Distributio

3、n)=内核+外围程序(工具程序、应用程序集),Linux的发展(2),Linux的发行版本 内核版本x.y.z 如2.6.24,其中x为主版本号y为次版本号z为改动较小的末版本号。y为偶数则为稳定版本y为奇数则为开发版本 套件版本 Linux系统内核与应用软件和文档包装起来,并提供安装界面、系统设定及管理工具,这样就构成了发行套件 常见的发行套件版本 Slackware、RedHat、Debian、Ubuntu、Red-flag Linux 、OpenLinux、TurboLinux、Mandrake、BluePoint、CoreLinux、 SuSe等等,Linux的优缺点(1),优点: 所

4、需要的硬件环境需求较低,可以在低档计算机上运作良好 系统本身很小,目前已经有许多嵌入式系统使用linux 提供相关服务 本身是自由免费的,可以由网络上取得或者是以低廉的费用购得 多任务:多个程序可以同时执行 多用户:多个用户可以同时在同一系统之中 多平台:可在许多不同CPUs上运行,不只是Intel. 多处理机:支持SMP 对应用程序内存进行保护,可对付Buffer Overflow 从操作系统级实现了“按需取盘”,只读取要执行的代码 共享页面内存,多个进程共享同一块内存页面,加快运行,Linux的优缺点(2),优点: 使用分页技术的虚拟内存:可使用单独分区或文件作为swap, swap或临时

5、增加,最多可支持128Mx16=2GB虚拟空间 优秀的磁盘缓冲调度功能:尽可能使用空闲内存作磁盘缓冲 动态链接共享库:变量LD_PRELOAD定义自己的程序库,多个程序同时调用的代码只加载一次,由众多程序共享 core dump机制: 提供系统调试功能 支持伪终端设备(pseudo terminal,pty) 支持多个虚拟控制台(Alt+F1-F6,Alt+Arrow),最多可用 64 个 多种CPU支持:Intel已加入对Linux的支持 支持硬件多:HD/FD/Mainboard/SCSI/Audio/CDROM/MO, NIC,ZIP/MO驱动器,Vide等,Linux的优缺点(3),优

6、点: 支持多种文件系统:ext2fs非常先进,最多可支持2TB硬盘,文件名长度可过255个字符,可在DOS下安装Linux 支持OSIX任务控制 软件支持,应用软件最多的UNIX 缺点: 指令式的系统管理模式限制了系统的普及 没有特定的支持厂商,与Windows相比较(1),开源 安全性: 微软的Windows出现了250次安全漏洞,其中有39个安全漏洞的危险程度达到了40分或者40分以上。而Red Hat Linux只有46次安全漏洞,其中只有3个安全漏洞的危险程度在40分以上。(2006年) Windows病毒泛滥,没有绝对安全的OS 文件权限的使用,使Linux更安全 高性能 Linux

7、对多核的适用 处理大量数据 任务的自动化,与Windows相比较(2),Linux与Windows的文件系统 Windows的FAT格式和NTFS格式 Linux的整个文件系统就是一棵巨大的树结构。最顶部是/(Root根),所有文件夹、文件和驱动盘都是这个Root的分支。 Linux的文件系统Ext2、Ext3、Ext4,swap,与Windows相比较(3),GUI(Graphical User Interface) Linux是真正的多任务多用户的操作系统 Linux作为服务器 Linux的内存管理(分页与分段)、存储管理等 嵌入式的Linux系统 关于游戏计算机只是一个工具,要用大脑去思

8、考 推荐阅读完全用Linux工作王垠,Ubuntu的安装(1),关于Ubuntu(乌班图) Ubuntu计划强调易用性和国际化,以便能为尽可能多的人所用。 Ubuntu的新发行版本10.10 ,代号Maverick Meerkat(标新立异的的狐獴),每6个月发行一个版本 所有系统相关的任务均需使用Sudo指令这种方式比传统的以系统管理员帐号进行管理工作的方式更为安全 其他派生的版本Kubuntu、Xubuntu,Ubuntu的安装(2),安装方式一: 安装VirtualBox http:/www.virtualbox.org/ 下载ubuntu镜像http:/ 在VirtualBox中新建一

9、个虚拟机,将镜像安装到其上。安装方式二: 使用wubi方式安装ubuntu,需下载镜像和wubi安装工具。,Ubuntu,Ubuntu的升级和软件安装 Ubuntu的包管理系统与Debian的类似,都用Debian apt 超级用户的切换:sudo s 完全不同于Windows的软件安装方法:sudo apt-get install 软件名 更新方法:sudo apt-get update 升级方法:sudo apt-get upgrade 注意源的配置,Linux目录结构(1),Linux目录结构(2),/bin和/sbin 使用和维护UNIX和Linux系统的大部分基本程序都包含在/bin

10、和/sbin里,这两个目录之所以包含bin,是因为可执行的程序都是二进制文件(binary files). /bin目录通常用来存放用户最常用的基本程序,如:login,Shells,文件操作实用程序、系统实用程序、压缩工具 /sbin目录通常存放基本的系统和系统维护程序,如:fsck fdisk mkfs shutdown lilo init 存放在这两个目录中的程序的主要区别是:/sbin中的程序只能由root(管理员)来执行。,Linux目录结构(3),/etc目录一般用来存放程序所需的整个文件系统的配置文件。 /lost+found目录专门用来放那些在系统非正常菪机后重新启动系统时,不

11、知道该往哪里恢复的“流浪”文件的。 /boot目录下面存放着和系统启动有关系的各种文件,包括系统的引导程序和系统核心部分。 /root:系统管理员(root)的主目录。 /home:系统中所有用户的主目录都存放在/home中,它包含实际用户(人)的主目录和其他用户的主目录。 /tmp和/var:这两个目录用来存放临时文件和经常变动的文件。,Linux目录结构(4),/mnt:按照约定,像CD-ROM,软盘,Zip盘等这样的可移动介质都应该安装在/mnt目录下,/mnt目录通常包含一些子目录,每个子目录是某种特定设备类型的一个安装点。例如:/cdrom /floppy /zip /win 如果我

12、们要使用这些特定设备,我们需要用mount命令从/dev目录中将外部设备挂接过来。 /dev:这是一个非常重要的目录,它存放着各种外部设备的镜像文件,其中有一些内容我们是要牢牢记住的。例如第一个软盘驱动器的名字是fd0;第一个硬盘的名字是hda,硬盘中的第一个分区是hda1,第二个分区是hda2;第一个光盘驱动器的名字是hdc;此外,还用modem和其他外设的名字。 /usr:按照约定,这个目录用来存放与系统的用户直接相关的程序或文件,这里面有每一个系统用户的主目录。 /proc:这个目录下面的内容是当前在系统中运行的进程的虚拟镜像,我们在这里可以看到由当前运行的进程号组成的一些目录,还有一个

13、记录当前内存内容的kernel文件。,Linux的基本命令,Linux系统的启动和退出 rootlocalhost /root # shutdown 选项 时间 警告 halt reboot #shutdown now #shutdown +5 “System will shutdown after 5 minutes“ #shutdown r now 重启 (推荐) #shutdown r 2359 & #shutdown h now 关机 (推荐) #shutdown k 3 Warning: System will shutdown ! #halt 系统停机 #reboot 快速重起,L

14、inux文件目录操作命令(1),pwd :显示当前的目录 cd路径:进入目录中cd ls 选项 目录或是文件 :显示目录中的文件 $ ls l $ ls ld xh $ ls as S cp cp -p -r -i 文件 1 文件 2 . 目标文件目录 - i 在覆盖已存在文件时作提示,若回答 y 则覆盖,其他则中止 - p 不仅拷贝文件内容,还有修改时间,存取模式,存取控制表, 但不拷贝UID 及 GID - r 若文件名为目录,则拷贝目录下所有文件及子目录和它们的文件,此时目标必须为目录,Linux文件目录操作命令(2),mv -f -i 文件1 文件2. 目标文件目录 - f 覆盖前不作

15、任何提示 - i 在覆盖已存在文件时作提示,若回答 y 则覆盖,其他则中止 mkdir 目录名 :创建目录 rmdir 目录名 :删除空目录 rm -f -i 文件. 或 rm -r -f -i 目录名. 文件 说明: 用来删除文件或目录 - f 删除文件时不作提示 - r 递归地删除目录及其所有子目录 - i 删除文件之前先作提示 cat显示和连接一个或多个文件至标准输出,Linux文件目录操作命令(3),find name 文件名 :通过文件名查找文件 more将文件显示在终端上,每次一屏 ls |more clear :清屏 man :查看命令帮助 man find -help:当不知道

16、命令如何使用时使用help find -help shell 终端提示符包含当前目录(例如 tuxda10:)。波浪号“”指示位于用户主目录中。,文档备份与压缩命令(1),zip、gzip、unzip、gunzip、tar $ zip file *.txt gzip只能压缩一个文件,所以经常与tar搭配 $gzip -best data.txt $gzip l data.txt.gz $gzip d data.txt.gz unzip 选项 压缩文件名.zip $unzip myfiles.zip $unzip myfiles.zip d mydir $unzip j myfiles.zip

17、tar其实是打包程序。压缩先用tar打包然后用gzip压缩,文档备份与压缩命令(2),tar 主选项 辅选项 文档或目录 主选项 c 创建新的档案文档 x 从档案文档中释放文档 t 列出档案文档的内容,查看已备份了哪些文档 辅助选项 v 周详报告tar处理的文档信息 z 用gzip来压缩/解压缩文档 f 使用档案文档或设备,这个选项通常是必选的 例tar cvf usr.tar /home tar czvf usr.tar.gz /home tar xzvf usr.tar.gz tar tvf usr.tar | more,系统管理命令,&、bg或fg :前台或后台 who 查看有那些用户登

18、录 $who $who -HiT ps 选项 :显示进程 $ps e $ps l $ps al $ps aux kill -signal 进程号 :结束进程 $kill 1330 $kill -15 1330 $kill -9 1330 top :用于显示当前CPU的进程,是一个动态显示过程 Ctrl+L 擦除并且重写屏幕。h或者? 显示帮助画面,给出一些简短的命令总结说明。k 终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。i 忽略闲置和僵死进程。这是一个开关式命令。q 退出程序。按u然后输入用户名,显示用户进程。M键按内存使用率排序,T键按时间排序。

19、,其他命令,date cal write wall last df whoami whereis diff,编程环境,文本编辑器(vim/emacs/gedit)+编译器(gcc)直接使用IDE(apt-get install codeblocks),编程环境之VIM(1),进入vim 进入vi很简单,只需在命令行键入:vi即可。或者也可以直接以vi打开指定文件:vi filename filename是要编辑的文件名。如果文件不存在,则会新建一个 3种工作方式 编辑方式、插入方式和命令方式。使用ESC切换。 基本命令,编程环境之VIM(2),编程环境之VIM(3),编程环境之GCC(1),G

20、CC的语法: gcc 选项 源文件 目标文件 常用选项介绍 -c 编译生成目标文件 -E 只做预处理而不编译 -g 在生成的目标文件中添加调试信息,所谓调试信息就是源代码和指令之间的对应关系,在gdb调试和objdump反汇编时要用到这些信息 -Idir dir是头文件所在的目录 -o outfile outfile是输出文件的文件名 -O O2 各种编译优化选项 -Wall 打印所有的警告信息 -w 不生成任何警告信息,编程环境之其他,GDB(调试程序) GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。在编译程序时必须要加上-g选项! GNU Make 用于自动维护大型的工程

21、,实验一:用户接口实验,实验目的 理解面向操作命令的接口Shell。 学会简单的shell编码。 理解操作系统调用的运行机制。 掌握创建系统调用的方法。 实验内容 控制台命令接口实验理解面向操作命令的接口shell和进行简单的shell编程。 系统调用实验理解操作系统调用的运行机制,Shell(1),Shell的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive),Shell还有一种执行命令的方式称为批处理(Batch),用户事先写一个Shell脚本(Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条

22、地敲命令。Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程序从脚本中一行一行读取并执行这些命令,相当于一个用户把脚本中的命令一行一行敲到Shell提示符下执行。,Shell(2),UNIX系统上有很多种Shell:sh(Bourne Shell):由Steve Bourne开发,各种UNIX系统都配有sh。 csh(C Shell):由Bill Joy开发,随BSD UNIX发布,它的流程控制语句很像C语言,支持很多Bourne Shell所不支持的功能:作业控制,命令历史,命令行编辑。ksh(Korn Shell):由David

23、Korn开发,向后兼容sh的功能,并且添加了csh引入的新功能,是目前很多UNIX系统标准配置的Shell,在这些系统上/bin/sh往往是指向/bin/ksh的符号链接。 tcsh(TENEX C Shell):是csh的增强版本,引入了命令补全等功能,在FreeBSD、Mac OS X等系统上替代了csh。 bash(Bourne Again Shell):由GNU开发的Shell,主要目标是与POSIX标准保持一致,同时兼顾对sh的兼容,bash从csh和ksh借鉴了很多功能,是各种Linux发行版标准配置的Shell,在Linux系统上/bin/sh往往是指向/bin/bash的符号链

24、接36。虽然如此,bash和sh还是有很多不同的,一方面,bash扩展了一些命令和参数,另一方面,bash并不完全和sh兼容,有些行为并不一致,所以bash需要模拟sh的行为:当我们通过sh这个程序名启动bash时,bash可以假装自己是sh,不认扩展的命令,并且行为与sh保持一致。 用户的默认Shell设置在/etc/passwd文件中,Bash,当登录Linux或者打开一个xterm时,当前默认的Shell就是Bash。从产生来看,Bash是GNU Project的Shell。bash(Bourne Again SHell)是自由软件基金会发布的 Bourne Shell 的兼容程序。它包

25、含了许多其他优秀shell 的良好特性,功能十分全面。很多 Linux 版本都提供 bash。 Bash在处理自己的脚本时,先找到需要处理的命令名称,进而在当前用户的缺省命令目录当中找到对应的命令,这些缺省目录一般是/usr/bin; /bin/; /sbin。在执行这些命令时,先使用进程分叉系统调用fork(),再使用exec()来执行这些命令。 为什么使用脚本 shell 脚本可以控制引导过程和很多其他系统功能。要理解并操纵系统行为,需要对 shell 编程有基本的了解。 Shell 编程和其他编程语言相比,学习起来相对容易。 shell 脚本在几乎所有类似 UNIX 的操作系统中运行,且

26、不需要适应其他平台。 使用 shell 脚本也存在一些缺点: Shell 脚本和其他脚本语言相比运行缓慢。 Shell 脚本需要占用很多 CPU 资源。,Shell脚本可以仅仅是保存在文件中的命令集合 vi test.shtimedf uptime 执行脚本 bash test.sh ./test.sh,Shell如何执行命令,用户在命令行输入命令后,一般情况下Shell会fork并exec该命令,但是Shell的内建命令例外,执行内建命令相当于调用Shell进程中的一个函数,并不创建新的进程。 以前学过的cd、alias、umask、exit等命令即是内建命令,凡是用which命令查不到程序

27、文件所在位置的命令都是内建命令,内建命令没有单独的man手册,要在man手册中查看内建命令,应该$ man bash-builtins,执行脚本,首先编写一个简单的脚本,“#!/bin/sh“。在UNIX下,所有的可执行Script,不管是那一种语言,其开头都是“#!“,例如Perl是 “#!/usr/bin/perl“,tcl/tk是“#!/usr/bin/wish“,看您要执行的Script程式位置在那里。您也可以用“#! /bin/bash“、“#!/bin/tcsh“等等,来指定使用特定的Shell。,给这个脚本文件加上可执行权限,执行脚本./script.sh sh ./script

28、.sh,Shell脚本的执行过程,交互Shell(bash)fork/exec一个子Shell(sh)用于执行脚本,父进程bash等待子进程sh终止。 sh读取脚本中的cd 命令,调用相应的函数执行内建命令,改变当前工作目录为上一级目录。 sh读取脚本中的ls命令,fork/exec这个程序,列出当前工作目录下的文件,sh等待ls终止。 ls终止后,sh继续执行,读到脚本文件末尾,sh终止。 sh终止后,bash继续执行,打印提示符等待用户输入。,实验二:进程管理实验,实验目的 加深对进程概念的理解,明确进程和程序的区别。 进一步认识并发执行的实质。 分析进程争用资源的现象,学习解决进程互斥的

29、方法。 了解Linux系统中进程通信的基本原理 实验内容 编制实现软中断通信的程序 使用系统调用fork()创建两个子进程,用系统调用signal()使父进程捕捉到中断信号,父进程接受到中断信号后用系统调用kill()向子进程发送软中断。子进程接收到中断信号后将信息输出到屏幕 Child process 1 is killed by parent ! Child process 2 is killed by parent ! 父进程调用wait()函数等待两个子进程终止后,输入以下信息,结束进程执行: Parent process is killed! 编制实现进程的管道通信的程序 使用系统调

30、用pipe()建立一条管道线,两个子进程分别向管道写一句话: Child process 1 is sending a message! Child process 2 is sending a message! 而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。,系统调用 是一种进入系统空间的办法。通常,在OS的核心中都设置了一组用于实现各种系统功能的子程序,并将他们提供给程序员使用。 系统调用和普通函数的区别 运行于不同的状态 通过软中断切断 系统调用的实现机制 设置系统调用号 处理系统调用 Linux系统调用实现机制 中断 指计算机在执行期间,系统内发生任何非寻常的或非预期的急

31、需处理事件,使得CPU不得不暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后再返回原来被中断处继续执行的进程。 软中断 对硬中断的一种模拟,软中断必须等到接收进程执行时才能生效 陷阱 软件产生的中断,指处理机和内存内部产生的中断,它包括程序运算引起的各种错误 异常,相关函数,fork函数-用于创建一个新进程(子进程) int fork(); 正确返回: 等于0,创建子进程,从子进程返回的ID值。 等于1,从父进程返回的子进程的进程ID值。 错误返回:等于-1,创建失败。 wait()函数-用来控制父进程与子进程的同步 在父进程中调用wait()函数,则父进程被阻塞,进入等待

32、队列,等待子进程结束。当子进程结束时,产生一个终止状态字,系统会向父进程发出SIGCHLD信号。当接到信号后,父进程提取子进程的终止状态字,从wait()函数返回继续执行原来的程序。 exit()函数-在正常终止时,exit()函数返回进程结束状态 kill()函数-删除执行中的程序或者任务kill(int PID,int IID); Signal()函数-允许调用进程控制软中断信号的处理 pipe()函数-用于创建一个管道 pipe(int fp2); 其中,fp2是供进程使用的文件描述符数组,fp0用于写,fp1用于读。 正确返回:0,调用成功 错误返回:-1,调用失败。,管道通信,管道,是指用于连接一个读进程和一个写进程,以实现它们之间信息的共享文件又称pipe文件。 互斥 对管道进行加锁 同步 当写进程把一定数量的数据写入pipe后,便去睡眠等待,直到读进程取走数据后,再把它唤醒。反之亦然。 判断对方是否存在 只有确定写进程和读进程都存在的情况下,才能通过管道进行通信,谢谢观赏!,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报