《Linux操作系统》实验报告模板

合集下载

Linux操作系统实验实验报告

Linux操作系统实验实验报告

L i n u x操作系统实验实验报告Document number:NOCG-YUNOO-BUYTT-UU986-1986UT实验1:安装Linux系统【实验目的和要求】:安装Linux系统,掌握操作系统的系统配置,建立应用环境的过程。

【实验内容】:1、首先在windows系统中安装虚拟机。

在网上找到VMwareWorksttionPro版本,确定安装目录。

一直下一步,不需要太多的说明。

2、图为安装完成后的界面。

3、然后在阿里巴巴开源镜像网站下载centos系统镜像,然后虚拟机创建新的虚拟机,进行一些简单的虚拟机设置,设置了网络链接nat模式等等。

安装完成后的界面实验2:Linux下c语言开发【实验目的】:学会和掌握用c语言开发一个应用程序的全过程,包括,编译,调试等等。

【实验步骤】:首先在系统中查看是否已经安装有gcc,输入查看命令发现没有,于是需要安装gcc。

在centos系统中可以使用比较简便的yum命令。

在之前已经配置好了yum源。

直接输入yuminstallgcc。

回车自动安装程序和需要的依赖包。

因为虚拟机中和电脑很多地方切换使用不方便,所以安装了xshell软件。

图为xshell中的截图。

安装完毕。

然后使用vi或者vim编写运行,在屏幕上打印出hello,world。

实验3:进程创建【实验目的和要求】1.了解进程的概念及意义;2.了解子进程和父进程3.掌握创建进程的方法。

【实验内容】1.子进程和父进程的创建;2.编写附件中的程序实例【实验步骤】一1、打开终端,输入命令,在文件中输入中的代码;2、输入命令,回车后显示无错误;3、输入命令:./1_fork运行程序。

二、1、打开终端,输入命令,在文件中输入中的代码;2、输入命令,回车后显示无错误:3、输入命令:./2_vfork运行程序。

从上面可以看到两次的运行结果不一样。

我们知道write函数是不带缓存的。

因为在fork之前调用write,所以其数据写到标准输出一次。

linux操作系统 实验报告

linux操作系统 实验报告

linux操作系统实验报告Linux操作系统实验报告一、引言Linux操作系统是一种开源的、免费的操作系统,其内核由Linus Torvalds于1991年首次发布。

Linux操作系统具有稳定性高、安全性强、灵活性大等优点,因此在互联网、服务器、嵌入式系统等领域得到广泛应用。

本实验报告将介绍Linux操作系统的基本特点、安装过程以及常用命令的使用。

二、Linux操作系统的基本特点1. 开源性Linux操作系统的内核及相关软件源代码对用户开放,任何人都可以查看、修改和分发。

这使得Linux操作系统具有高度的透明度和可定制性,用户可以根据自己的需求进行定制和优化。

2. 多用户、多任务Linux操作系统支持多用户同时登录,并且可以同时运行多个任务。

这使得多个用户可以在同一台计算机上独立地进行工作,提高了计算机的利用率。

3. 稳定性和安全性Linux操作系统具有良好的稳定性和安全性。

由于其内核的设计和实现方式,Linux操作系统可以长时间运行而不会出现系统崩溃或死机的情况。

同时,Linux操作系统提供了丰富的安全机制,如文件权限控制、用户身份验证等,可以有效保护系统和用户的数据安全。

三、Linux操作系统的安装过程1. 准备安装介质在安装Linux操作系统之前,需要准备一个可启动的安装介质,如光盘或USB闪存驱动器。

这些介质可以从Linux官方网站或其他可信渠道下载。

2. 进入安装界面将安装介质插入计算机,并按下开机键启动计算机。

在启动过程中,选择从安装介质启动。

随后,将进入Linux操作系统的安装界面。

3. 设置安装选项在安装界面中,可以设置安装选项,如语言、时区、键盘布局等。

根据实际需要进行选择和设置。

4. 分区和格式化磁盘在安装界面中,可以对硬盘进行分区和格式化操作。

根据实际需求,可以选择使用整个硬盘或者将硬盘分为多个分区。

5. 安装系统在分区和格式化完成后,可以开始安装Linux操作系统。

根据安装界面的提示,选择安装位置和安装选项,然后等待安装过程完成。

linux操作系统实验报告--

linux操作系统实验报告--
2.确定设备的名称:
# cat /var/log/messages
3.挂载fat32的分区:
# mount -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom(加入参数codepage=936和iocharset=cp936是为了支持中文文件名),最终fat32分区被挂载到/mnt/cdrom下。
实验过程:
一.压缩、解压缩命令:
1.在/root目录下建立新目录student:# mkdirstudent
2.进入student目录
# cd student
在student目录下建立目录stu1、stu2,文件test1、test2
# mkdir stu1
# mkdir stu2
# touch test1
④ntfs:Windows文件系统。
⑤hpfs:OS2用的文件系统。
⑥iso9660:CD-ROM光盘的标准文件系统。
确定设备的名称:在Linux操作系统中,设备文件通常都在/dev目录里。可以直接检查/var/log/messages这个文件,在该文件中可以找到计算机开机后系统已辨认出来的设备代号:# cat /var/log/messages
获得系统支持的文件系统类型,使用如下命令:# cat /proc/filesystems
如果系统并不支持要挂载设备的文件系统类型,那可能需要重新编译内核以使其增加对该种文件类型支持。
常用的文件系统有:
①ext3:Linux的文件系统
②ext2:Linux的文件系统
③vfat:Windows的FAT32文件系统,也兼容FAT16的文件系统类型
说明:
shell从字面上翻译是外壳,它是一个壳层,而这个壳层介于用户与操作系统间,负责将用户的命令解释为操作系统可以接受的低级语言,以及将操作系统相应的信息以用户可以了解的方式来显示,如缺少它,则用户与操作系统将完全被阻隔而无法沟通。

Linux操作系统实验报告

Linux操作系统实验报告

实验报告实验名称Linux操作、使用、编程指导教师杨健实验类型验证实验学时2+2 实验时间2007.10.29 1、实验目的和要求1.能够安装某Linux发行版本(例如Red Hat)2.了解Linux的启动过程3.了解Linux文件的组织结构4.熟悉X Window 环境5.练习使用Linux 常用命令6.熟练使用Linux的C语言开发环境7.学习并掌握Linux 编译工具gcc 的使用方法8. 熟练使用Linux的C语言开发环境9. 学习并掌握Linux 编译工具gcc 的使用方法10. Linux操作系统下的熟悉并能够进行进程创建11. 掌握Linux操作系统下的并发进程间同步12. 掌握Linux操作系统下的进程间通信IPC二、实验环境(实验设备)Windows 2000 + VMWare + RedHat Linux 8三、实验原理及内容熟悉了vim的操作,知道它的打开方式,编译方法,和运行方法。

了解了vim的常见的命令。

实验报告pid_t pid; //pid_t是Linux下的进程号类型,也就是Process ID _ Type 的缩写。

其实是宏定义的//unsigned int a类型int data=5;if((pid=fork())<0) /*错误处理,此处的pid的值,可以说明fork调用后,目前执行的是父进程还是子进程*/{printf("fork error\n");exit(0);}else if(pid==0) /*这是新进程*/{data--;printf("child\'s data is:%d\n",data);exit(0);}else /*这是最初的父进程*/{printf("parent\'s data is:%d\n",data);}exit(0);}/*fork函数被调用一次但返回两次。

操作系统-Linux课程实验报告

操作系统-Linux课程实验报告

实验1.1、1.2 Linux Ubuntu的安装、创建新的虚拟机VMWare实验1.3 Shell编程1.实验目的与内容通过本实验,了解Linux系统的shell机制,掌握简单的shell编程技巧。

编制简单的Shell程序,该程序在用户登录时自动执行,显示某些提示信息,如“Welcome to Linux”, 并在命令提示符中包含当前时间、当前目录和当前用户名等基本信息。

2.程序源代码清单#include<stdio.h>#include<sys/wait.h>int main(){printf("Hello Linux\n");int pid;int state;int pfd[2];pipe(pfd);if (fork()==0){printf("In the grep progress\n");dup2(pfd[0],0);close(pfd[0]);close(pfd[1]);execlp("grep","grep","sh",0);perror("exelp grep error");}esle if(fork()==0){printf("In the ps progress\n");dup2(pfd[1],1);close(pfd[0]);close(pfd[1]);execlp("ps","ps","-ef",0);perror("execlp ps -ef");}close(pfd[1]);close(pfd[0]);wait(&state);wait(&state);}实验2.3 内核模块实验步骤:(1).编写内核模块文件中主要包含init_clock(),exit_clock(),read_clock()三个函数。

Linux操作系统第二次实验报告

Linux操作系统第二次实验报告
实验内容及实验记录:
1.打开终端窗口。在当前目录下,创建测试目录*test(其中*为学生姓名拼音首字母组合)。
2.利用ls命令列出文件和目录,确认*test目录创建成功。
3.进入test目录,利用pwd命令查看当前工作目录。
4.利用touch命令,在当前目录创建一个新的空文件*file(其中*为学生姓名拼音首字母组合)。
15.进入*test目录,显示目录中的文件列表。查找当前用户的主目录下的所有名为*file的文件。
16.删除*test子目录下的所有文件。利用rmdir命令删除空目录*test。
17.回到上层目录,利用rm命令删除目录*test和其下所有文件。
指导教师评语:
实验报告
课程名称:Linux操作系统
任课教师:
授课学期:
学生班级:
学生姓名:
实验题目:文件和目录的命令行操作
实验成绩:
指导教师:
实验室:
日期:
节数:2
实验目的:
1.熟悉各类文件操作命令。
2.掌握基于命令行的文件操作。
3.熟悉目录操作命令。
4.掌握基于命令行的目录操作。
实验仪器、物品:已安装好Ubuntu桌面操作系统。
12.删除文件profile,用长格式显示文件lnsprofile和lnhprofile的详细信息,比较文件lnhprofile的链接数的变化。
13.把文件*file(其中*为学生姓名音首字母组合)改名为backupfile。显示当前目录下的文件和目录列表,确认重命名成功。
14.把文件backupfile移动到*test目录下。显示当前目录下的文件和目录列表,确认移动成功。
9.用grep命令在profile文件中对关键字then进行查询,并与上面的结果比较。

linux操作系统实验报告

linux操作系统实验报告

linux操作系统实验报告第一篇:linux操作系统实验报告Linux实验报告一一、实验步骤及内容1.虚拟机软件的安装(1)先准备虚拟机安装包。

(2)更改安装路径:“D: VMwareVMware Workstationvmware.exe”(3)输入序列号:ctrl+v,在安装过程中不能进行复制剪切操作。

(4)不能重新启动,才能继续安装汉化版D: vmwarevmware workstation2.新建一个虚拟机并进行配置(1)单击新建虚拟机虚拟机的类型选择:典型安装选择客户端操作系统:linux虚拟机的名字及位置根据需要网络类型选择:,桥接。

指定的磁盘容量删除软驱:双击floppy—remove虚拟内存设置:双击memory—1024MB设置linux的安装文件:选择安装镜像文件—指定第一个安装文件—就可以啦!之后会提示安装第二个安装文件就进行选择第二个中间鼠标切换用CTRL+ALT。

3.安装LINUX操作系统(1)要确定鼠标是否在虚拟机的激活状态下:敲回车不需要检测安装文件选择skip进入linux的安装前的配置选项:选择安装的语言—中文简体键盘:--默认鼠标:--默认安装类型:--workstation磁盘分区:--自动分区引导程序:默认网络配置:默认防火墙:无防火墙支持的语言:中文时区:亚洲-上海密码:root123456安装的软件包:全部。

二.在已有虚拟机软件的基础上安装LINUX的技巧。

(1)新建虚拟机—典型安装—linux ,red hat linux---给虚拟机命名,并且指定安装位置d:red hat linux---桥接---10G。

(2)在刚才建立的虚拟机上安装linux系统.(3)配置要安装的linux系统的安装文件iso镜像文件(4)选择配置好linux镜像文件刚才建立的虚拟机,启动虚拟机,开始安装。

三.实验总结充分了解linux系统的安装,学会新建虚拟机,在虚拟机上安装linux系统.和一些简单的技巧并对此门课程有了一定的兴趣。

操作系统Linux系统的使用实验报告1

操作系统Linux系统的使用实验报告1

实验课程名称:《操作系统》实验项目名称L i n u x系统的使用实验成绩实验者专业班级组别同组者实验日期年月日第一部分:实验分析与设计(可加页)一、实验预习报告(实验目的,主要设备、仪器,基本原理、实验步骤等)(可加页)实验目的和要求:Linux键盘命令和字符界面编辑器vi要求:掌握Linux系统键盘命令和vi的使用方法。

⑴熟悉开机后登录Linux系统和退出系统的过程;⑵熟悉Linux字符界面——虚拟终端窗口和shell,练习并掌握常用的Linux操作命令,如ls、cat、ps、df、find、grep、cd、more、cp、rm、mv、mkdir、rm、chmod、chown、passwd、kill、who、ln、control+d/c等;熟悉常用shell的提示符;熟悉图形界面——X-Window(如gnome或KDE)以及字符窗口与图形界面之间的切换(若实验条件允许)。

⑶学习使用Linux的在线求助系统,如man和help命令等。

⑷掌握一种Linux的编辑器,特别是字符界面的vi工具的使用。

⑸用vi编辑一个打印“Hello,I am a C program”字串的C语言程序,然后编译并运行它,记下整个过程。

熟悉gc编译器的使用。

二、实验过程记录(包括实验内容、数据记录、实验现象等)(可加页)1 首先用root创建新的用户如下图1-1所示图1-12 熟悉Linux字符界面——虚拟终端窗口和shell,练习并掌握常用的Linux操作命令,操作如图2-1所示Ls-l命令显示所有文件名字权限,创建时间等。

⑶学习使用Linux的在线求助系统,如man和help命令等。

操作如图3-1图3-1 通过输入help得到一些函数的使用方法和信息⑷掌握一种Linux的编辑器,特别是字符界面的vi工具的使用。

操作如图4-1,4-2所示输入vi yxq.c创建并进入vi编辑器图4-1输入i进入编辑模式,程序编辑完成按Ese键,在如入:wq保存并退出图4-2⑸用vi编辑一个打印“Hello,I am yxq”字串的C语言程序,然后编译并运行它,记下整个过程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程编号:B080103040Linux操作系统实验报告姓名姚柯杰学号******** 班级软工1212 指导教师石凯实验名称Linux操作系统实验开设学期2014-2015第一学期开设时间第11周——第18周报告日期评定成绩评定人石凯评定日期东北大学软件学院实验一熟悉Linux环境一、举例列出常用的shell命令使用方法1.目录操作(1)mkdir abc 创建一个目录abc(2)cd /abc 将工作目录改变到abc(3)cd 改变当前目录到主目录(4)ls 列出当前目录的内容(5)ls -l 输出当前目录内容的长列表,每个目录或文件占一行(6)pwd 显示当前目录的全路径(1)cat mx.c 显示mx.c文件内容(2)more mx.c 分屏显示mx.c内容(3)cat file1 file2 连接file1 和file2(1) cp file1 file2 将文件1复制到文件2(2)mv file1 file2 将文件重命名为file2(3)rm filename 删除文件filename二、通过实例写出Linux下C程序编辑运行过程。

在终端命令下输入vi filename 命令,这里我输入vi helloworld.c 创建并打开helloworld.c 文件按i进入编辑模式,输入下列code:# include <stdio.h>void main(void){Printf(“hello world!\n”);}输入:wq保存退出输入cc helloworld.c编译,在输入./a.out运行三、实验总结在实验一中,我初步对linux有了初步的了解,能熟练目录和文件进行操作,并且能用linux进行基本简单的基于c的编程。

师傅领进门,修行在个人,算是通过这个实验进入了linux的门。

实验二文件操作一、实现CP命令实现思路:提取出源路径和目标路径到函数中,放于定义的两个int变量,定义缓冲区buf,对两个变量进行判断,如果符合要求打开读取源文件信息存于缓冲区,然后写到目标文件中,关闭两个文件以实现等同cp效果。

此处以hello。

C文件为源文件,目标文件1.c。

在调试cp命令中,由于一开始并未定义缓冲区,导致程序出错,后假如缓冲区,程序得以正常运行。

二、实现ls命令实现思路:调用dirent.h来实现打开目录流,定义变量,随后对变量进行判定用opendir、readdir 打开并读取目录流,将值传递给另一个变量,打印出来。

编译源程序并运行:在实现ls命令中使用man手册查找需要的dir等目录流信息,man是个强大的命令,在编程的过程中由于疏忽一开始并未假如判断条件,有些突发情况会难以处理,最后通过课件修过过来。

三、设备文件操作鼠标对应的设备文件是 /dev/input/mice实验三进程间通信(一)进程的创建(必做题)编写一段程序,使用系统调用fork( )创建两个子进程,在系统中有一个父进程和两个子进程活动。

让每个进程在屏幕上显示一个字符;父进程显示字符“a”,子进程分别显示字符“b”和“c”。

试观察记录屏幕上的显示结果,并分析原因。

创建一个新的子进程。

其子进程会复制父进程的数据与堆栈空间。

Fork成功则在父进程会返回新建立的子进程pid,而在新建立的子进程中则返回0。

如果fork失败则直接返回-1。

所以在循环条件上出现上述情况。

修改已编写的程序,将每个进程的输出由单个字符改为一句话,再观察程序执行时屏幕上出现的现象,并分析其原因。

(必做题)子进程创建成功,到下一个while,第二个子进程成功到最后循环,输入parents1-500,随后返回继续上面子进程的循环输出。

【思考题】1.系统是怎样创建进程的?答:在UNIX系统中,只有0进程是在系统引导时被创建的,在系统初启时由0进程创建1进程,以后0进程变成对换进程,1进程成为系统中的始祖进程。

UNIX利用fork( )为每个终端创建一个子进程为用户服务,每个终端进程又可利用fork( )来创建其子进程,从而形成一棵进程树。

2.当前运行的程序(主进程)的父进程是什么?建立如下的c文件来获取pid得到这三个进程pid,可见父进程的pid是5182。

(二)信号量机制实验【实验内容】1.编写一段程序,使用系统调用fork( )创建两个子进程,再用系统调用signal( )让父进程捕捉键盘上来的中断信号(即按ctrl+c键),当捕捉到中断信号后,父进程用系统调用kill( )向两个子进程发出信号,子进程捕捉到父进程发来的信号后,分别输出下列信息后终止:Child process 1 is killed by parent!Child process 2 is killed by parent!父进程等待两个子进程终止后,输出以下信息后终止:Parent process is killed!实验要求:⑴运行程序并分析结果。

⑵如果把signal(SIGINT,stop)放在①号和②号位置,结果会怎样并分析原因。

⑶该程序段前面部分用了两个wait(0),为什么?⑷该程序段中每个进程退出时都用了语句exit(0),为什么?程序代码:# include<stdio.h>#include<stdlib.h># include<signal.h># include<unistd.h>#include<sys/types.h>#include<sys/wait.h>int wait_mark;void waiting(),stop();void main(){ int p1, p2;signal(SIGINT,stop);while((p1=fork())==-1);if(p1>0){//while((p2=fork())= =-1);if(p2>0){ //wait_mark=1;waiting(0);kill(p1,10);kill(p2,12);waiting();waiting();printf("parent process is killed!\n");exit(0);}else{wait_mark=1;signal(12,stop);waiting();lockf(1,1,0);printf("child process 2 is killed by parent!\n");lockf(1,0,0);exit(0);}}else{wait_mark=1;signal(10,stop);waiting();lockf(1,1,0);printf("child process 1 is killed by parent!\n");lockf(1,0,0);exit(0);}}void waiting(){while(wait_mark!=0);}void stop(){wait_mark=0;}(1)当按下ctrl+c中断进程时,程序将执行,父进程打印消息,父进程kill 子进程,子进程1收到消息上锁,打印消息,然后解锁关闭进程,随后子进程2同样操作,在kill子进程后父进程打印消息,中断自身进程。

(2)运行后表面并没有任何改变,在两处加入代码之后,偶尔会出现需要在中断第一次进程后需要进行第二次中断。

在添加两个中段接受指令后,会先执行关于子进程的代码片段。

(3)答:父进程为子进程收尸,防止僵尸程序出现。

(4)答:在调用处强行退出程序,运行一次程序就结束。

(三)进程的管道通信实验(四)【实验内容】1.编制一段程序,实现进程的管道通信。

使用pipe()建立一条管道线。

两个子进程p1和p2分别向管道各写一句话:Child 1 is sending message!Child 2 is sending message!而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。

实验要求:运行程序并分析结果。

2.在父进程中用pipe()建立一条管道线,往管道里写一句话,两个子进程接收这句话。

定义缓冲区,创建管道,随后创建进程,将父进程的消息写进缓冲去写进管道再传给写进子进程,子进程接受。

定义一个管道,父进程传递消息到管道,随后创建两个子进程接收这个消息,然后结束进程。

实验小结:再这个实验中一开始打算将两个子进程分开判断,但是常常最后出现结果不是出现僵尸进程就是跳过其中一个子进程结束,最后我觉得既然两个进程同时创建,不如直接将他们一起进行判断。

(四)消息的发送与接收实验【实验内容】1.消息的创建、发送和接收。

使用系统调用msgget( ),msgsnd( ),msgrev( ),及msgctl( )编制一长度为1k的消息发送和接收的程序。

<参考程序>①client.c#include <sys/types.h>#include <sys/msg.h>#include <sys/ipc.h>#define MSGKEY 75struct msgform{ long mtype;char mtext[1000];}msg;int msgqid;void client(){int i;msgqid=msgget(MSGKEY,0777);for(i=10;i>=1;i--){msg.mtype=i;printf(“(client)sent\n”);msgsnd(msgqid,&msg,1024,0);}exit(0);}main( ){client( );}②server.c#include <sys/types.h>#include <sys/msg.h>#include <sys/ipc.h>#define MSGKEY 75struct msgform{ long mtype;char mtext[1000];}msg;int msgqid;void server( ){msgqid=msgget(MSGKEY,0777|IPC_CREAT); do{msgrcv(msgqid,&msg,1030,0,0);printf(“(server)received\n”);}while(msg.mtype!=1);msgctl(msgqid,IPC_RMID,0);exit(0);}main( ){ server( );}1.列出调试通过程序的清单,分析运行结果。

首先运行client.c创建打开消息队列75,往消息对列中传递消息10-1,然后运行serve.c,打开消息队列75,然后接收其中的消息直到消息为假(不存在),退出进程。

相关文档
最新文档