《计算机操作系统》实验指导书 联系客服

发布时间 : 星期五 文章《计算机操作系统》实验指导书更新完毕开始阅读

专业资料

ctrl+f :后翻页 ctrl+b:前翻页 G : 文件尾

数字G: 数字所指定行

i,I : 插入命令,i 在当前光标处插入, I 行首插入 a,A: 追加命令,a 在当前光标后追加,A 在行末追加

o,O: 打开命令,o 在当前行下打开一行,O在当前行上插入一行 x: 删除光标处字符 dd: 删除当前行 d0: 删除光标前半行 d$: 删除光标后半行

r,R : 替换命令,r 替换当前光标处字符,R从光标处开始替换 /string: 查找字符串 n : 继续查找 N : 反向继续查找 % :查找对应括号 u :取消上次操作

注:以上操作必须在命令方式下进行。

1.2.2 gcc的使用

gcc是linux下的一种c程序编译工具,使用方法如下(有提示符#的情况): 编译: gcc –o filename1 filename.c

其中: filename.c是源文件名,filename1 是目标文件名,o代表object 执行:./filenamel

示例:键入一简单的程序: vi ab.c 按回车键输入以下代码段, #include #include main()

{printf(“aaaa”); }

按ESC键,再按“:WQ”(W是保存,Q是退出) 出现提示符:[root @GGG-LINUX root]# 键入:gcc –o ab ab.c进行编译。 执行:./ab

word完美格式

专业资料

1.2.3主要系统调用函数

1)系统调用fork() 功能:创建一个新的进程. 头文件:#include

说明:本系统调用产生一个新的进程, 叫子进程, 是调用进程的一个复制品. 调用进程叫父进程, 子进程继承了父进程的几乎所有的属性。

(1) 该子进程继承了父进程的程序空间,复制了父进程的数据段和栈段。也就是说

不管是父进程还是子进程,在占有处理机后,都从fork()调用的返回点开始运行;

(2) 调用成功则对父进程返回子进程标识号pid;

(3) 调用成功对子进程返回0, 这也是最方便的区分父子进程的方法。 (4) 若调用失败则返回-1给父进程, 子进程不生成。

注意:如果fork()值>0,>0的数即是子进程号。但这时是父进程占有处理机。

2)系统调用wait(&status) 功能: 等待子进程结束。

(1)当有多个子进程时,任一个子进程结束即将控制返回调用者,并将子进程调用exit (status)时的status值送到&status指针所指单元中。

(2)在控制返回调用者时,同时将所等到的子进程pid作为wait()系统调用函数的返回值。

(3)waitpid(pid,…):等待pid所指定的进程结束。

(4)返回值:等待到一个子进程返回时,返回值为该子进程号;否则返回值为–1。 说明: 允许调用进程(即父进程)取得子进程的状态信息,调用进程将会挂起直到其一个子进程终止。

3)系统调用exit() 功能: 终止进程.

语法: #include void exit(status) int status

功能:调用进程被该系统调用终止。该系统调用发出后,操作系统将从系统中删除调用exit的进程,并将status值传给等待它结束的父进程。 返回值: 无 4)系统调用kill()

功能: 向一个或一组进程发送一个信号。

word完美格式

专业资料

语法:#include int kill(pid, sig); pid_t pid; int sig;

说明:向一个或一组进程发送一个信号,该信号由参数sig指定,为系统给出的信号表中的一个。

Sig是signal的缩写。

返回值: 调用成功则返回0,否则返回-1.

kill -STOP [pid]: 发送SIGSTOP (17,19,23)停止一个进程,而并不消灭这个进程。

kill -CONT [pid]: 发送SIGCONT (19,18,25)重新开始一个停止的进程。 kill -KILL [pid]: 发送SIGKILL (9)强迫进程立即停止,并且不实施清理操作。 kill -9 -1: 终止拥有的全部进程。

SIGKILL和SIGSTOP信号不能被捕捉、封锁或者忽略。 5)系统调用lockf()

功能:应用、检测或删除打开文件的一个POSIX锁 语法:#include

int lockf(int fd, int cmd, off_t len); 说明:

应用、检测或删除打开文件某部分的一个POSIX锁,文件通过fd指明,文件的描述符的请求操作通过cmd指明。 #define F_ULOCK 0 解锁一个区域 #define F_LOCK 1 上锁一个区域 #define F_TLOCK 2 检测并上锁一个区域 #define F_TEST 3 检测一个区域是否上锁

文件上锁区域的请求起始于隐含的偏移并包好len字节,假如len为负,从pos…pos+len-1,这里pos为当前文件位置,假如len为零,则位置从当前文件位置延伸延伸到无限长,包括当前和以后的文件最后的位置。在所有情况下,位置可延伸到以前当前的文件的最后位置。

在Linux中,这称为fcntl(2)的接口(一般会指明lockf 和fcntl的关系)。 6)系统调用pipe() 是用来建立管道的。 语法: #include

int pipe(int fd[2]); 这里fd[1]为写入端,fd[0]为读出端。 功能:从管道里写或从管道里读。

word完美格式

专业资料

第二部分 实验内容

实验一 熟悉LINUX基本命令及编程环境

一、 二、

实验类型 实验目的与任务

本实验为验证性实验。

1)熟悉使用Linux字符界面,窗口系统的常用命令; 2)熟悉运用Linux常用的编程工具; 3)熟悉运用Linux的在线求助系统。 三、

预习要求 用

2)了解进程的概念及进程的状态 3)熟悉c语言程序设计 4)熟悉c语言程序编译过程 四、

实验基本原理

进入Linux操作系统后,控制终端的命令行输入方式下输入各种命令,并显示各种命令操作后的输出结果,操作包括文件操作命令的使用,vi命令的使用以及gcc编译器的使用,详细的各种命令及使用方式见第一部分的介绍。 五、

实验仪器与设备(或工具软件)

实验设备:计算机一台,软件环境要求:安装Red Hat Linux操作系统和gcc编译器。 六、

实验内容

1)使用常用的操作命令ls, cp, rm, mkdir, man, vi等。

2)熟悉怎么编辑一个程序(编辑,调试,运行见),输入一个简单的C程序进行练习,参考练习程序如下: 程序1

word完美格式

1)熟悉一种操作系统的使用和安装,如windows操作系统的安装,DOS系统的使