linux实验报告四
操作系统实验04 Linux 多进程编程

《操作系统》实验报告实验序号:实验四实验项目名称:实验04 Linux 多进程编程学号1207022103 姓名陈华荣专业、班网络工程实验地点实1-311 指导教师李桂森实验时间2014.10.26一、实验目的及要求1.通过本实验的学习,使学生掌握Linux多进程编程的基本方法。
2.实验内容:利用Linux多进程实现题目所要求的功能。
3.以学生自主训练为主的开放模式组织教学二、实验设备(环境)及要求PC机三、实验内容与步骤1、编写一个显示“HELLO”的c语言程序,并利用GCC编译,然后运行此程序。
(提示:若没有gcc,需先安装gcc编译程序)指令:Apt-get install updateApt-get install gccCd /home/normaluesrTouch helloworld.cVim helloeorld.c在helloworld里编辑进:#include<stdio.h>Int main(){Printf(“helloworld”);Return 0;}然后用gcc进行编译运行:或者直接2、进程的创建:编制一程序,利用系统调用fork()创建两个子进程。
程序运行时,系统中有一个父进程和两个子进程活动,分别让他们显示“A”、“B”和“C”,分析程序运行结果。
3、用ctrl+alt+F2切换到第二个终端(tty2)并使用另外一个用户登录(可利用第二个实验创建的用户登录),然后使用who命令查看用户登录情况。
用ctrl+alt+F1切换到第二个终端(tty1),修改第二步的程序,在每个进程退出前都加上一个sleep(20)的函数来延缓进程的退出,然后运行此程序,立即切换到tty2,使用ps -a命令查看系统运行的进程,观察程序创建的进程都有哪些?pid是多少?4、进程的管道通信:编制一程序,使用系统调用pipe()建立一管道,两个子进程P1和P2分别向管道各写一句话,父进程则从管道中读取出来并显示在屏幕。
linux4

实验(实习)名称常用命令使用实验(实习)日期指导教师专业年级班次姓名学号得分一、实验目的1.掌握C语言编译的基本用法。
2.掌握gdb调试工具的基本用法。
3.理解make工具的功能,学会编制makefile的方法。
二、实验内容1.利用gcc编译C语言程序,使用不同选项,观察并分析显示结果。
2.用gdb调试一个编译后的C语言程序。
3.编写一个有多文件构成的C语言程序,编写makefile,运行make工具进行维护。
三、主要实验步骤1.改写例6.1,使用下列选项对它进行编译:-I,-D,-E,-c,-o,-l。
2.完成对思考题6.5的调试。
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(int argc,char **argv){char *p;int i;p=malloc(60);strcpy(p,"not 30 bytes");printf("p=<%s>\n",p);if(argc==2){if(strcmp(argv[1],"-b")==0)p[0]='a';else if(strcmp(argv[1],"-f")==0){p[0]='b';}}printf("p=<%s>\n",p);free(p);return 0;}运行结果如下:[LinyunGu@localhost subdir]$ ./badprog -bp=<not 30 bytes>p=<aot 30 bytes>[LinyunGu@localhost subdir]$ ./badprog -fp=<not 30 bytes>p=<bot 30 bytes>3.完成对思考题6.6的调试。
linux实验报告

linux实验报告实验目的:通过对Linux操作系统的实践,掌握基本的Linux命令和操作方法,了解Linux操作系统的特点和优势。
实验一:Linux环境搭建在实验一中,我们首先需要搭建Linux操作系统的环境。
根据实验指导书的要求,我们选择了Ubuntu作为实验平台。
通过下载Ubuntu镜像文件,并利用虚拟机软件创建一个虚拟机,将镜像文件安装到虚拟机中。
在安装过程中,我们需要选择合适的分区和网络配置等,并设置root用户的密码。
实验二:基本命令的使用在实验二中,我们主要学习了Linux的基本命令的使用方法。
首先,我们了解了Linux文件系统的结构,包括根目录、用户目录、系统目录等。
然后,通过命令行终端进行一系列的实践操作,比如查看文件内容、创建目录、复制文件等。
这些命令的使用不仅提高了我们的工作效率,同时也增强了对Linux操作系统的理解。
实验三:软件安装与卸载实验三主要涉及到Linux的软件安装与卸载。
我们首先学习了使用APT工具进行软件包管理,通过安装命令行界面的方式安装了一些常用的软件,比如文本编辑器、终端工具等。
此外,我们还学习了如何卸载已安装的软件包,清理不需要的文件,以保持系统的整洁性。
实验四:权限管理在实验四中,我们学习了Linux的权限管理机制。
Linux操作系统采用了基于用户和组的权限模型,通过设置文件和目录的权限,实现对文件的读、写、执行的控制。
我们通过实际操作,创建了新的用户和组,并为不同的用户和组设置了不同的权限。
这样,可以有效地保护系统的文件和数据的安全性。
实验五:网络配置与服务搭建在实验五中,我们主要学习了Linux的网络配置和服务搭建。
通过设置网络接口、IP地址和网关等参数,实现了网络的正常连接。
同时,我们还学习了一些常用的网络命令,比如ping、ssh等。
此外,我们尝试搭建了一个简单的Web服务器,通过浏览器访问,可以查看服务器上的网页。
实验六:系统监控和故障恢复在实验六中,我们学习了Linux的系统监控和故障恢复方法。
linux实验四内核裁减和编译实验报告

实验四内核裁减和编译一、实验目的1.了解和掌握内核源代码的目录结构;2.了解内核系统配置方式,了解Makefile和config.in脚本文件的作用;3.了解内核各项内容;4.熟悉make命令的使用。
二、实验环境预装redhat9.0(内核版本2.4.x)的PC机一台,XScale嵌入式实验箱一台(已构建嵌入式linux系统),以太网线一根,交叉编译工具链。
三、实验步骤①察看和了解Linux内核的目录及内容;②察看和了解Linux内核的Makefile文件及作用;③察看和了解Linux内核的config.in文件及作用;④使用menuconfig或xconfig察看内核编译选项及作用;⑤开关某些编译选项,自己裁剪一个Linux内核;A.[root @localhost ~]# cd XSBASE/xsbase/Kernel/2.4.18-rmk-pxal-XSBASE[root @localhost 2.4.18-rmk-pxal-XSBASE]# make menuconfigB.设置开发板上的鼠标不能操作。
进入Input Core device,然后敲空格键,取消屏幕上的鼠标操作。
退出时并保存。
C.[root @localhost 2.4.18-rmk-pxal-XSBASE]# make dep[root @localhost 2.4.18-rmk-pxal-XSBASE]# make zImage[root @localhost 2.4.18-rmk-pxal-XSBASE]# cd arch/arm/boot/[root @localhost 2.4.18-rmk-pxal-XSBASE]# cp zImage /tftpD.启动mini终端。
XSBase255> boot[root @XSBASE /root]$ tfp 192.168.0.77ftp>cd /ftp>get /tftp/zImageE.这个时候在重启板子一下,板子就不能执行触摸屏上的鼠标操作了。
linux实验报告总结-共10篇

∣inux实验报告总结(共10篇)(Linux实验报告汇总)(一)Shell 编程一、实验目的:1)掌握在Linux下的C编程基本方法。
2)掌握shell编程方法。
3)掌握dialog图形化编程方法。
二、实验内容1、编写能输出“Hello world!”问候语的C程序,并在终端中编译、执行。
要求记录所使用的命令及结果。
#include stdio.hmain()(printf(Hello world!\n);)2、编写一个C程序并设置其在后台执行,其功能是在一段时间后(可自行设置),在屏幕上显示信息:Time for play!,写出相应的程序、命令及结果。
#include stdio.hmain()(int time=0;printf(请输入等待时间(单位:s):);scanf(%d/&time);sleep(time);printf(Time for play!\n);)3、编写C程序,求1到100之间整数的阶乘和,并对程序进行优化。
写出程序、命令和结果。
#include stdio.hmain()int i;double s = l,sum = 0;for( i= l;i= 100;i++)sum+=s*=i;printf( 1到100之间整数的阶乘和:%f\n,sum);printf( 1到100之间整数的阶乘和:%e\n,sum);}4、编写C程序,根据键盘输入的半径求圆面积,要求在命令行周率(P∣=3∙14,PI=3∙14159,PI=3.14159626 等)进行编使用不同的译,写出程序、命令和结果。
#include stdio.hint main()double r = 0.0 , Area = 0.0;printf(请输入半径:);scanf(%lf, &r);Area = PI * r * r;printf(圆面积:%f∖n, Area);)5、编写shell程序sh.l,完成向用户输出“你好!”的问候语。
LINUX实验报告(4)

首先输入cd /run/media/clz进入U盘分区
拷贝zll文件到a目录下面:cp -R zll ./a
拷贝b目录到a目录:cp -R b ./a
移动zll文件到b:输入mv -i zll ./b
移动目录b到目录a:输入mv -i b ./a
2.文件系统使用实验:
在上面创建的分区中分别使用命令创建目录和文件、拷贝文件和目录、移动文件和目录、删除文件和目录、修改文件和目录的名称、修改文件和目录的权限、查找文件和目录。
创建目录:mkdir -p /run/media/U盘名称/目录名
创建文件:输入vi /run/media/U盘名称/文件名
(3)使用fsck命令和badblocks命令检查文件系统、标注坏扇区;
输入fsck -t /dev/sdb1检查文件系统:
输入badblocks -s -v /dev/sdb1检查坏扇区
(4)使用mount命令装载文件系统。
先输入mkdir -p /mnt/usb建立一个文件作为挂接点,然后输入mount -t vfat/dev/sdb1 /mnt/usb挂载。
实验总结:
一开始对linux的分区命令不是很了解,总是出错,而且U盘也总是挂载不上,最后换了个U盘才挂载上的,还有就是对Linux操作系统的文件和目录管理的操作命令不是很熟,有待加强,自己在课下也需要多加练习。
实验总结:
删除目录a下的zll文件:rm a/zll
删除目录a下的b目录:rm -R a/b
在分区创建zll文件
修改zll文件的名称为cz:mv zll cz
修改目录a的名称为c:mv a c
修改zll文件的权限为可读、可写、可执行:chmod 777 zll
实验四同步与互斥Linux实验报告
实验四同步与互斥【实验目的和要求】1、掌握进程(线程)的同步与互斥。
2、掌握生产者消费者问题的实现方法。
3、掌握多线程编程方法。
【实验内容】实现生产者消费者问题1、有一个仓库,生产者负责生产产品,并放入仓库,消费者会从仓库中拿走产品(消费)。
2、仓库中每次只能入一个(生产者或消费者)。
3、仓库中可存放产品的数量最多10个,当仓库放满时,生产者不能再放入产品。
4、当仓库空时,消费者不能从中取出产品。
5、生产、消费速度不同。
【实验原理】1、信号量mutex提供对缓冲池访问的互斥要求并初始化为1,信号量empty和full分别用来表示空缓冲项和满缓冲项的个数,信号量empty初始化为n,信号量full初始化为0。
2、定义如下结构及数据:定义缓冲区内的数据类型:typedef int buffer_item;缓冲区:buffer_item buffer[BUFFER_SIZE];对缓冲区操作的变量:int in,out;信号量mutex提供了对缓冲池访问的互斥要求:pthread_mutex_t mutex;信号量empty和full分别表示空缓冲顶和满缓冲顶的个数:sem_t empty,full; 可以设定生产者的生产速度及消费者的消费速度:int pro_speed,con_speed;对缓冲区操作的自增函数:#define inc(k) if(k < BUFFER_SIZE) k = k+1;else k=03、并定义了如下实现问题的函数模块:将生产的产品放入缓冲区: int insert_item(buffer_item item)从缓冲区内移走一个产品: int remove_item(buffer_item *item)生产者进程:void *producer(void *param)消费者进程:void *consumer(void *param)生产者结构进程消费者结构进程【程序代码】//sx.c#include<stdio.h>#include<stdlib.h>#include<pthread.h>#include<semaphore.h>#include<time.h>#define inc(k) if(k<BUFFER_SIZE) k=k+1;else k=0#define BUFFER_SIZE 10//缓冲区的大小typedef int buffer_item;//定义缓冲区内的数据类型buffer_item buffer[BUFFER_SIZE];//缓冲区int in,out;//对缓冲区操作的变量pthread_mutex_t mutex;//信号量mutex提供了对缓冲池访问的互斥要求sem_t empty,full;//信号量empty和full分别表示空缓冲顶和满缓冲顶的个数int pro_speed,con_speed;//可以设定生产者的生产速度及消费者的消费速度int insert_item(buffer_item item){//将生产的产品放入缓冲区buffer[in]=item;printf("******insert缓冲池第%d号******\n",in);inc(in);}int remove_item(buffer_item *item){//从缓冲区内移走一个产品*item = buffer[out];printf("******remove缓冲池第%d号******\n",out);inc(out);}void *producer(void *param){//生产者进程buffer_item item;int num = 0;while(1){sleep(rand()%(16-pro_speed));printf("\n******第%d次生产******\n",++num);printf("******等待empty信号******\n");sem_wait(&empty);printf("******等待解锁******\n");pthread_mutex_lock(&mutex);printf("******上锁,准备生产******\n");item = rand()%1000+1;printf("******生产产品%d*******\n",item);insert_item(item);printf("*******解锁******\n");printf("******第%d次生产结束*******\n\n",num); pthread_mutex_unlock(&mutex);sem_post(&full);}}void *consumer(void *param){//消费者进程buffer_item item;int num = 0;while(1){sleep(rand()%(16-con_speed));printf("\n******第%d次消费*****\n",++num); printf("******等待full信号******\n");sem_wait(&full);printf("******等待解锁******\n");pthread_mutex_lock(&mutex);printf("******上锁,准备消费******\n"); remove_item(&item);pthread_mutex_unlock(&mutex);sem_post(&empty);printf("******消费产品%d*******\n",item);printf("*******解锁******\n");printf("******第%d次消费结束*******\n\n",num); }}int main()//主函数{pthread_t tid1,tid2;pthread_attr_t attr1,attr2;srand(time(NULL));pthread_mutex_init(&mutex,NULL);//初始化sem_init(&empty,0,BUFFER_SIZE);sem_init(&full,0,0);in=0;out=0;printf("***********************\n");printf("********开始!***********\n");printf("***********************\n");printf("生产者速度(1-15):\n");scanf("%d",&pro_speed);printf("消费者速度(1-15):\n");scanf("%d",&con_speed);pthread_attr_init(&attr1);pthread_create(&tid1,&attr1,producer,NULL);pthread_attr_init(&attr2);pthread_create(&tid2,&attr2,consumer,NULL);sleep(100);printf("*******程序over*******\n");return 0;}【实验步骤】编写程序代码gedit sx.c,再对代码进行编译gcc sx.c –o sx –lpthread,编译无错误,进行运行./sx,根据提示要求进行填写生产者和消费速度,观察消费者和生产者进程。
linux实验报告4
计算机科学系实验报告课程名称Linux系统班级实验名称C程序指导教师姓名学号日期2014年11月25日一、实验目的1.了解的C程序作用2.了解些linux下的C的函数二、实验环境Win7下vm虚拟机,Linux操作系统三、实验内容1.简单的C程序2.信号,内存分配与文件管理等C程序四、实验心得makefile定义了一系列的规则来指定整个工程的编译过程, makefile带来的好处就是—“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
通过本次实验基本掌握了makefile的使用和编写规则,对其运行原理还不太了解,在今后的学习中将继续学习。
进程与信号是多线程编程及其异步、同步机制的基础。
通过本次实验,了解如何在程序中启动与停止其他的进程,如何使得进程发送与接收消息,以及如何避免僵尸进程。
只掌握其中一小部分,今后将学习更多的。
1、makecd mf1 (进入mf1文件夹)cat makefile (查看makefile文件内容)make (第一次运行make)make (第二次运行make)touch b.hmake (第二次运行make)rm 2.omake (第四次运行make)2、cat makefile1 (查看makefile文件内容)make –f makefile13、make CC=c89 –f Makefile24、make install5、.PHONY : cleancat makefile2make –f makefile2 clean6、cd mf3cat hello.cmake helloRm helloMake CC=gcc CFLAGS=“-Wall -g”hello1.system函数2、替换进程映像exec系列函数3、复制进程映像fork函数4、等待一个进程Wait函数5、信号6、发送信号kill。
LINUX实验四报告
一、实验目得
掌握Linux系统中常用命令得作用与命令中各选项得作用、
二、实验环境
安装了fedora17系统得计算机一台
三、实验过程(实验步骤、记录、数据、分析、结果)
1.查瞧当前系统下用户Shell定义得环境变量得值。
2.定义变量AK得值为200,并将其显示在频幕上。
3.定义变量AM得值为100,并使用test命令语句比较其值就是否大于150。
4.创建一个简单得Shell程序,其功能为显示计算机主机名以及显示系统日期与时间、
5.使用for语句创建一个shell程序,其功能为1+2+3+4+5+……n、
6.使用until语句创建一个shell程序,其功能为计算1~10得平方。
按步骤依次写出命令包括运行结果(可截屏)
1。
查瞧当前系统下用户Shell定义得环境变量得值、
2. 定义变量AK得值为200,并将其显示在频幕上、
3、定义变量AM得值为100,并使用test命令语句比较其值就是否大于150、
4。
创建一个简单得Shell程序,其功能为显示计算机主机名以及显示系统日期与时间。
5、使用for语句创建一个shell程序,其功能为1+2+3+4+5+……n、
6.ﻩ使用until语句创建一个shell程序,其功能为计算1~10得平方。
四、实验总结
(掌握了什么知识,实验中遇到得问题及解决方法)
在实验中,我掌握了创建shell程序得语法:#!/bin/bash与chmod u+x 文件名
也了解了shell定义得环境变量,并且掌握了test语句得用法,数字得比较,循环控制中得for语句、un til语句得用法。
实验4 实验名Linux常见命令。
linux系统使用实验报告
linux系统使用实验报告Linux 系统使用实验报告一、实验目的本次实验旨在深入了解和熟悉 Linux 操作系统的基本操作、命令行使用以及系统配置,掌握常见的文件管理、进程管理、用户权限管理等功能,提高对 Linux 系统的实际应用能力。
二、实验环境1、操作系统:Ubuntu 2004 LTS2、实验工具:终端模拟器(Terminal)三、实验内容与步骤(一)系统登录与基本命令1、启动计算机,选择 Ubuntu 操作系统,输入用户名和密码登录系统。
2、打开终端模拟器,熟悉常用的基本命令,如`ls` (列出当前目录下的文件和文件夹)、`cd` (切换目录)、`mkdir` (创建新目录)、`rmdir` (删除空目录)等。
(二)文件管理1、在用户主目录下创建一个名为`experiment` 的文件夹,使用`mkdir experiment` 命令。
2、进入该文件夹,使用`cd experiment` 命令。
3、在`experiment` 文件夹中创建一个文本文件`filetxt` ,使用`touch filetxt` 命令。
4、使用`vi` 或`nano` 编辑器打开`filetxt` 文件,输入一些文本内容,并保存退出。
5、查看文件的内容,使用`cat filetxt` 命令。
6、复制文件,使用`cp filetxt file_copytxt` 命令。
7、移动文件,使用`mv filetxt/`命令将文件移动到上级目录。
8、删除文件,使用`rm file_copytxt` 命令。
(三)进程管理1、运行一个后台进程,例如`ping &`,然后使用`jobs` 命令查看后台进程。
2、将后台进程切换到前台,使用`fg %1` (其中%1 为后台进程的编号)命令。
3、终止进程,使用`Ctrl + C` 组合键终止正在运行的进程。
4、查看系统当前运行的进程,使用`ps aux` 命令。
(四)用户权限管理1、创建一个新用户,使用`sudo adduser username` 命令,其中`username` 为新用户的用户名。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
一、实验名称:实验4 bash常用功能
二、实验目的及要求
掌握bash的基本操作方式,包括tab键、别名及历史命令的使用掌握简单的shell脚本编辑方法。
三、实验环境
硬件环境:计算机
软件环境:linux操作系统
四、实验内容及方法
bash常用功能
1 将命令”ls -l|more”的别名设为lm
2 列出目前系统中有哪些别名?
3 列出我们曾经执行过的命令。
4 列出目前最近的5条命令
5 执行第10笔命令
6 列出系统中以c为开头的命令
7 使用上下箭头调用刚才执行过的命令
8 列出当前目录下以.bash开头的所有文件
9 列出目前的shell环境下的所有环境变量与其内容
10 建内容为date的shell文件my.sh,并执行该文件
五、实验原理及实验步骤
1 将命令”ls -l|more”的别名设为lm
alias lm=’ls -l|more’
2 列出目前系统中有哪些别名?
alias
3 列出我们曾经执行过的命令。
history
4 列出目前最近的5条命令
history 5
5 执行第10笔命令
!10
6 列出系统中以c为开头的命令
c[tab][tab]
7 使用上下箭头调用刚才执行过的命令
↑↓
8 列出当前目录下以.bash开头的所有文件
ls -al .bash[tab][tab]
9 列出目前的shell环境下的所有环境变量与其内容
env
10 建内容为date的shell文件my.sh,并执行该文件
vi my.sh
输入:date
chmod 744 my.sh
./my.sh
六、实验过程及实验结果
建内容为date的shell文件my.sh,并执行该文件vi my.sh
输入:date
chmod 744 my.sh
./my.sh。