实验一Linux的安装1、实验目的(1)了解硬盘分区的概念和方法;(2)掌握硬盘的分区规划;(3)掌握Linux操作系统的安装和配置过程。2、实验设备一台pc机、RedHatLinux7.2以上版本、VMwareWorkstationv5.53、实验原理Linux可以以多种方式安装在PC机上:(1)独立分区安装、(2)DOS分区安装和(3)虚拟机VMWare下安装。鉴于VMware下安装对原来系统影响较小且不影响本实验目的,因此采用VMWare下安装方式。4、实验步逐(1)在WindowsXP下安装VMware5.5(2)配置虚拟机(3)启动虚拟机(4)启动Linux安装过程(5)安装过程配置(6)安装后配置(7)第1次启动VMWare下Linux操作系统5、实验记录(1)记录详细安装过程(2)安装过程中出现的问题及其解决措施实验2Linux基本操作1、实验目的(1)复习Linux基本命令。(2)掌握常用Linux命令2、实验内容(1)练习命令行模式下的常用命令:man:命令帮助ALT-Fx:虚终端切换常用命令:cat、Ls、ps、chmod、kill、ln、cp、mv、rm、cd、pwd、mkdir、chown、who、w、wc、whoami、date、uname等(2)编辑器vi的使用:使用vi建立并修改一个文本文件(3)档案管理rpm、gzip、tar等命令(4)网络命令telnet、ftp、talk3、实验记录1、在实验过程中,注意记录实验现象2、使用过程体会、心得、技巧4、实验截图(1)常用命令:(2)Vi编辑器的使用(3)档案管理实验3Linux系统管理1、实验目的(1)掌握Linux基本系统管理命令(2)掌握基本管理方法(3)初步了解Linux中与系统管理相关的有关配置文件2、实验内容(1)用户管理adduser、useradd、passwd等观察:/etc/passwd文件(2)文件系统管理df、du命令使用mount、umount命令使用:安装usb盘或者光盘,查看分析/etc/fstab文件(3)存储器free:了解存储器使用情况(4)关机halt、shutdown–h、init0reboot、shutdown-rnow并比较它们之间的差别(5)网络配置netconfig的使用(6)启动配置/etc/inittab:查看、修改并观察其响应3、实验记录(1)在实验过程中,注意记录实验现象(2)使用过程体会、心得、技巧(1)用户管理adduser、useradd、passwd等(2)文件系统管理df、du命令使用mount、umount命令使用:安装usb盘或者光盘,/etc/fstab文件(3)存储器(4)关机halt、shutdown–h、init0reboot、shutdown-rnow并比较它们之间的差别halt:---------------halt会先检测系统的runlevel。若runlevel为0或6,则关闭系统,否则即调用shutdown来关闭系统。shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。reboot重新开机。Halt实际上调用了shutdown-h,shutdown命令安全地将系统关机,-h指定延时时间,init0改变的是系统的级别。Reboot调用shutdown。Shutdown-h指定延时时间。(5)网络配置(6)启动配置把里面中间的id从5改成3,表示将启动方式由图形化界面改成命令行启动(想用图形化界面的话,改成5即可):系统重新启动后的界面:实验4LinuxShell程序设计1、实验目的(1)掌握Linuxshell程序运行方法(2)掌握LinuxShell程序基本语法(3)了解Linux环境变量(3)编写简单Linuxshell程序2、实验内容(1)查看/etc/.profile文件:相当于DOS下autoexe.bat(2)通配符“*”、“?”、“[]”的使用$ls[a-c]*和$ls[a,m,t]*命令(3)重定向和管道的使用ls|morecattest.txt(4)变量$lookup=/usr/mydir$echo$lookup$exportlookup:让进程使用(5)编辑并运行以下程序(shell程序控制结构)1fortest#!/bin/bashforainxyzdoechonowa=$adone2fortest1#!/bin/bashforadoechonowa=$adone3functest#!/bin/bashsetup(){echosetup…}do_date(){date}chgdir(){cd$1}do_datesetupchgdir4paramtest#!/bin/bashechofilename:$0echoarguments:$*echonumberarg:$#echoarg2:$2shiftechonumberarg:$#echoarg2:$2sethello,everoneechoargs:$*echoarg2:$25untiltest#!/bin/bashnumber=0until(test$number–gt5)doecho“$number”number=`expr$number+1`done3、实验要求(1)每个shell程序事例运行多遍,并给不同参数(2)详细记录程序调试及运行结果(1)查看/etc/.profile文件:相当于DOS下autoexe.bat(2)通配符的使用$ls[a-c]*和$ls[a,m,t]*命令(3)重定向和管道的使用ls|morecatfile1.txt(4)变量(5)编辑并运行程序1fortest#!/bin/bashforainxyzdoechonowa=$adone2fortest1#!/bin/bashforadoechonowa=$adone3functest#!/bin/bashsetup(){echosetup…}do_date(){date}chgdir(){cd$1}do_datesetupchgdir4paramtest#!/bin/bashechofilename:$0echoarguments:$*echonumberarg:$#echoarg2:$2shiftechonumberarg:$#echoarg2:$2sethello,everoneechoargs:$*echoarg2:$25untiltest#!/bin/bashnumber=0until(test$number–gt5)doecho“$number”number=`expr$number+1`done实验5Linux高级程序设计1、实验目的(1)了解Linux操作系统下应用程序开发流程(2)掌握gun工具链的使用(3)了解Linux高级编程技巧(例如IPC机制、系统调用等)2、实验内容(1)编写一个简单的C语言程序,编写Makefile文件。了解编译过程,并用gdb进行调试。(2)以下任选其一:1.编写一个多进程通信程序,采用MessageQueue或sharedMemory或者MapedFile机制进行通信2.编写一个多线程程序(pthread),实现2程同步互斥3、实验要求(1)写出源程序,并编译运行(2)详细记录程序调试及运行结果(1)图1:编写hello.c文件Print.c图2:编写print.c文件Makefile图3:编写Makefile文件图4:用gcc编译用gdb调试以及运行结果(2)以下任选其一:1,编写一个多进程通信程序,采用MessageQueue或sharedMemory或者MapedFile机制进行通信2,编写一个多线程程序(pthread),实现2程同步互斥#includestdio.h#includepthread.h#defineBUFFER_SIZE16structprodcons{//缓冲区相关数据结构intbuffer[BUFFER_SIZE];pthread_mutex_tlock;intreadpos,writepos;pthread_cond_tnotempty;pthread_cond_tnotfull;};voidinit(structprodcons*b){pthread_mutex_init(&b-lock,NULL);pthread_cond_init(&b-notempty,NULL);pthread_cond_init(&b-notfull,NULL);b-readpos=0;b-writepos=0;}voidput(structprodcons*b,intdata){pthread_mutex_lock(&b-lock);if((b-writepos+1)%BUFFER_SIZE==b-readpos){pthread_cond_wait(&b-notfull,&b-lock);}b-buffer[b-writepos]=data;b-writepos++;if(b-writepos=BUFFER_SIZE)b-writepos=0;pthread_cond_signal(&b-notempty);pthread_mutex_unlock(&b-lock);}intget(structprodcons*b){intdata;pthread_mutex_lock(&b-lock);if(b-writepos==b-readpos){pthread_cond_wait(&b-notempty,&b-lock);}data=b-buffer[b-readpos];b-readpos++;if(b-readpos=BUFFER_SIZE)b-readpos=0;pthread_cond_signal(&b-notfull);pthread_mutex_unlock(&b-lock);returndata;}#defineOVER(-1)structprodconsbuffer;void*producer(void*data){intn;for(n=0;n10000;n++){printf(%d---\n,n);put(&buffer,n);}put(&buffer,OVER);returnNULL;}void*consumer(void*data){intd;while(1){d=get(&buffer);if(d==OVER)break;printf(---%d\n,d);}returnNULL;}intmain(void){pthread_tth_a,th_b;void*retval;init(&buffer);pthread_create(&th_a,NULL,producer,0);pthread_create(&th_b,NULL,consumer,0);pthread_join(th_a,&retval);pthread_join(th_b,&retval);return0;}实验6:Linux内核i实验目的(1)了解Linux操作系内核(2)掌握内核编译和内核升级方法(3)了解有关内核编程ii实验内容(1)内核配置和编译(课后完成)(2)察看/proc内存文件系统下的文件,写出每个目录内容(3)编写一个简单的字符虚拟设备程序(以模块方式编译、加载、使用)Iii实验记录及心得(1)内核配置和编译(课后完成)(2)察看/proc内存文件系统下的文件,写出每个目录内容proc文件系统是动态从系统内核读出所需信息并提交的。它的目录结构如下:目录名称目录内容apm高级电源管理信息cmdline内核命令行Cpuinfo关于Cpu信息Devices可以用到的设备(块设备/字符设备)Dma使用的DMA通道Filesystems支持的文件系统Interrupts中断的使用IoportsI/O端口的使用Kcore内核核心印象Kmsg内