操作系统实验辅导课件

上传人:我*** 文档编号:141782913 上传时间:2020-08-12 格式:PPT 页数:64 大小:536.50KB
返回 下载 相关 举报
操作系统实验辅导课件_第1页
第1页 / 共64页
操作系统实验辅导课件_第2页
第2页 / 共64页
操作系统实验辅导课件_第3页
第3页 / 共64页
操作系统实验辅导课件_第4页
第4页 / 共64页
操作系统实验辅导课件_第5页
第5页 / 共64页
点击查看更多>>
资源描述

《操作系统实验辅导课件》由会员分享,可在线阅读,更多相关《操作系统实验辅导课件(64页珍藏版)》请在金锄头文库上搜索。

1、操作系统实验辅导,2011,内容,Linux实验环境 系统调用 其他问题 实验讲解,Linux实验环境,系统常用命令 编辑器 编译器 调试器,Linux系统常用命令,显示目录文件 ls 执行格式: ls -atFlgR name (name可为文件或目录名称) 例: ls 显示出当前目录下的文件 ls -a 显示出包含隐藏文件的所有文件 ls -t 按照文件最后修改时间显示文件 ls -F 显示出当前目录下的文件及其类型 ls -l 显示目录下所有文件的许可权、拥有者、文件大 小、修改时间及名称 ls -lg 同上 ls -R 显示出该目录及其子目录下的文件,Linux常用命令,建新目录 mk

2、dir 执行格式: mkdir directory-name 例: mkdir dir1新建一个名字为dir1的目录,Linux常用命令,删除目录rmdir 执行格式: rmdir directory-name 或 rm directory-name 例: rmdir dir1 删除目录dir1,但它必须是空目录,否则无法删除 rm -r dir1 删除目录dir1及其下所有文件及子目录 rm -rf dir1 不管是否空目录,统统删除,而且不给出提示,使用时要小心,Linux常用命令,改变工作目录位置 cd 执行格式: cd name 例: cd 改变目录位置至用户login时的workin

3、g directory cd dir1 改变目录位置,至dir1目录 cd user 改变目录位置,至用户的working directory cd . 改变目录位置,至当前目录的上层目录 cd ./user 改变目录位置,至上一级目录下的user目录 cd /dir-name1/dir-name2 改变目录位置,至绝对路径 cd - 回到进入当前目录前的上一个目录,Linux常用命令,显示当前所在目录 pwd 执行格式: pwd,Linux常用命令,删除文件 rm 执行格式: rm filename 例: rm file 删除名字为file的文件,Linux常用命令,复制文件 cp 执行格式

4、: cp -r source destination 例: cp file1 file2 将file1复制成file2 cp file1 dir1 将file1复制到目录dir1 cp /tmp/file1 将file1复制到当前目录 cp /tmp/file1 file2 将file1 复制到当前目录名为 file2 cp r dir1 dir2 (recursive copy)复制整个目 录。,Linux常用命令,移动或更改文件、目录名称 mv 执行格式: mv source destination 例: mv file1 file2 将文件file1,更名为file2 mv file1

5、dir1 将文件file1,移到目录dir1 下 mv dir1 dir2 将目录dir1,更名为dir2,Linux常用命令,查看系统目前的进程 ps 执行格式: ps -aux 例: ps 或ps -x 查看系统中属于自己的process ps -au 查看系统中所有使用者的process ps -aux 查看系统中包含系统内部及所有使用者 的process ps -aux|grep apache 找出系统中运行的所有名称 中带有“apache”串的 process,Linux常用命令,结束或终止进程 kill 执行格式: kill -9 PID (PID为利用ps命令所查出的proces

6、s ID) 例: kill 456 kill -9 456 终止process ID 为456的process,Linux常用命令,命令在线帮助 man 执行格式: man command 例: man ls 查询ls这个指令的用法,vi编辑器的使用,vi的全称是visual editor,它是在Unix/Linux 上被广泛使用的中英文编辑器。 启动vi vi 进入vi编辑器界面,没有为 所编辑的文件命名 vi filename 进入vi编辑器界面,并将所 编辑的文件命名为filename,vi编辑器的使用,vi提供三种工作模式: 输入编辑模式 支持:输入文本信息 命令编辑模式 支持:进行删

7、除、修改等操作信息 命令模式 支持:进行存盘、退出等操作 注意:使用者进入vi后,即处在命令模式下,要输入信息,则要切换至输入模式。,vi编辑器的使用,vi编辑器的使用,命令编辑模式下:,vi编辑器的使用,在命令模式下:,gedit编辑器的使用,gedit是Unix/Linux系统下的另一种中英文文本编辑器,支持窗口模式,更加方便快捷。 启动gedit: gedit 进入gedit编辑器界面, 没有为所编辑的文件命名 gedit filename 进入gedit编辑器界面, 并将所编辑的文件命名为 filename,GNU C编译器的使用,LINUX上可用的C编译器是GNU C编译器(GCC)

8、,一般的Unix下使用的是CC编译器 通常后跟一些选项和文件名来使用GCC编译器。基本用法如下: gcc options filenames 通过命令行选项指定编译过程中的具体操作,GNU C编译器的使用,GCC常用选项 GCC有超过100个的编译选项可用,这些选项中的许多可能永远都不会用到,但一些主要的选项将会频繁使用。很多的GCC选项包括一个以上的字符,因此必须为每个选项指定各自的连字符,并且就像大多数LINUX 命令一样不能在一个单独的连字符后跟一组选项。例如,下面的命令是不同的: gcc -p -g test.c gcc -p test.c 第一条命令告诉GCC编译test.c时为pr

9、of命令建立剖析(profile)信息并且把调试信息加入到可执行文件里。第二条命令告诉GCC只为gprof命令建立剖析信息。,GNU C编译器的使用,GCC常用选项 当不用任何选项编译一个程序时,GCC将建立(假定编译成功)一个名为a.out的可执行文件。例如, gcc test.c 编译成功后,当前目录下就产生了一个a.out文件。 也可用-o选项来为即将产生的可执行文件指定一个文件名来代替a.out。例如: gcc o count count.c 此时得到的可执行文件就不再是a.out,而是count。,GNU C编译器的使用,执行文件 格式: ./可执行文件名 例:./a.out ./c

10、ount,gdb调试工具的使用,LINUX包含了一个叫gdb的GNU调试程序。gdb是一个用来调试C和C+程序的强有力调试器。它使你能在程序运行时观察程序的内部结构和内存的使用情况。它具有以下一些功能: 监视程序中变量的值; 设置断点以使程序在指定的代码行上停止执行; 一行行的执行代码。,gdb调试工具的使用,为了使gdb正常工作,必须使你的程序在编译时包含调试信息。调试信息里包含你程序里的每个变量的类型和在可执行文件里的地址映射以及源代码的行号。gdb利用这些信息使源代码和机器码相关联。 在编译时用 g 选项打开调试选项。,gdb调试工具的使用,调试命令,gdb调试工具的使用,应用举例 (1

11、)设有一源程序 test.c (2)编译,gcc -ggdb o greet greet.c (3)gdb greet ,出现提示符(gdb),此时可在提示符下输入gdb的命令了,如: (gdb)run (gdb)list (4)退出调试状态,返回系统提示符下, (gdb)quit,实验中用到的系统调用,字面上讲,系统调用(也称为“syscall”)就是一条类似于“add”或者“jump”的指令。从更高的层面上讲,系统调用是用户级程序要求操作系统为它做某些事情的途径。 首先,用户程序为系统调用设置参数。其中一个参数是系统调用编号(稍后对此进行详述)。注意,所有这些都是由库函数自动完成的,除非您

12、是使用汇编编程。参数设置完成后,程序执行“系统调用”指令。这个指令会导致一个异常:产生一个事件,这个事件会致使处理器跳转到一个新的地址,并开始执行那里的代码。,实验中用到的系统调用,举例说明: fork( ) 创建进程 stdio.h wait( )等待子进程运行结束 stdio.h exit( )终止进程的执行 stdio.h lockf(files,function,size) 锁定文件 unistd.h kill( ) 发送信号 signal.h signal( ) 预置对信号的处理方式 signal.h 注意:程序中用到系统调用的时候,要包含相关的头文件 如: #include ,实验

13、中用到的系统调用,fork( ) #include pid_t fork(void); 创建一个新进程。 系统调用格式: pid=fork( ) 参数定义:int fork( ) fork( )返回值意义如下: 0:在子进程中,pid变量保存的fork( )返回值为0,表示当前进程是子进程。 0:在父进程中,pid变量保存的fork( )返回值为子进程的id值(进程唯一标识符)。 -1:创建失败。,实验中用到的系统调用,如果fork( )调用成功,它向父进程返回子进程的PID,并向子进程返回0,即fork( )被调用了一次,但返回了两次。此时OS在内存中建立一个新进程,所建的新进程是调用for

14、k( )父进程(parent process)的副本,称为子进程(child process)。子进程继承了父进程的许多特性,并具有与父进程完全相同的用户级上下文。父进程与子进程并发执行。,实验中用到的系统调用,核心为fork( )完成以下操作: 为新进程分配一进程表项和进程标识符 进入fork( )后,核心检查系统是否有足够的资源来建立一个新进程。若资源不足,则fork( )系统调用失败;否则,核心为新进程分配一进程表项和唯一的进程标识符。 检查同时运行的进程数目 超过预先规定的最大数目时,fork( )系统调用失败。 拷贝进程表项中的数据 将父进程的当前目录和所有已打开的数据拷贝到子进程表

15、项中,并置进程的状态为“创建”状态。 子进程继承父进程的所有文件 对父进程当前目录和所有已打开的文件表项中的引用计数加1。 为子进程创建进程上、下文 进程创建结束,设子进程状态为“内存中就绪”并返回子进程的标识符。 子进程执行 虽然父进程与子进程程序完全相同,但每个进程都有自己的程序计数器PC(注意子进程的PC开始位置),然后根据pid变量保存的fork( )返回值的不同,执行了不同的分支语句。,实验中用到的系统调用,wait( ) #include 等待子进程运行结束。如果子进程没有完成,父进程一直等待。wait( )将调用进程挂起,直至其子进程因暂停或终止而发来软中断信号为止。如果在wai

16、t( )前已有子进程暂停或终止,则调用进程做适当处理后便返回。 系统调用格式: int wait(status) int *status; 其中,status是用户空间的地址。它的低8位反应子进程状态,为0表示子进程正常结束,非0则表示出现了各种各样的问题;高8位则带回了exit( )的返回值。exit( )返回值由系统给出。,实验中用到的系统调用,核心对wait( )作以下处理: 首先查找调用进程是否有子进程,若无,则返回出错码; 若找到一处于“僵死状态”的子进程,则将子进程的执行时间加到父进程的执行时间上,并释放子进程的进程表项; 若未找到处于“僵死状态”的子进程,则调用进程便在可被中断的优先级上睡眠,等待其子进程发来软中断信号时被唤醒。,实验中用到的系统调用,exi

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号