操作系统-Linux课程实验报告材料
- 格式:doc
- 大小:1.88 MB
- 文档页数:37
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操作系统的实践,掌握基本的Linux命令和操作方法,了解Linux操作系统的特点和优势。
实验一:Linux环境搭建在实验一中,我们首先需要搭建Linux操作系统的环境。
根据实验指导书的要求,我们选择了Ubuntu作为实验平台。
通过下载Ubuntu镜像文件,并利用虚拟机软件创建一个虚拟机,将镜像文件安装到虚拟机中。
在安装过程中,我们需要选择合适的分区和网络配置等,并设置root用户的密码。
实验二:基本命令的使用在实验二中,我们主要学习了Linux的基本命令的使用方法。
首先,我们了解了Linux文件系统的结构,包括根目录、用户目录、系统目录等。
然后,通过命令行终端进行一系列的实践操作,比如查看文件内容、创建目录、复制文件等。
这些命令的使用不仅提高了我们的工作效率,同时也增强了对Linux操作系统的理解。
实验三:软件安装与卸载实验三主要涉及到Linux的软件安装与卸载。
我们首先学习了使用APT工具进行软件包管理,通过安装命令行界面的方式安装了一些常用的软件,比如文本编辑器、终端工具等。
此外,我们还学习了如何卸载已安装的软件包,清理不需要的文件,以保持系统的整洁性。
实验四:权限管理在实验四中,我们学习了Linux的权限管理机制。
Linux操作系统采用了基于用户和组的权限模型,通过设置文件和目录的权限,实现对文件的读、写、执行的控制。
我们通过实际操作,创建了新的用户和组,并为不同的用户和组设置了不同的权限。
这样,可以有效地保护系统的文件和数据的安全性。
实验五:网络配置与服务搭建在实验五中,我们主要学习了Linux的网络配置和服务搭建。
通过设置网络接口、IP地址和网关等参数,实现了网络的正常连接。
同时,我们还学习了一些常用的网络命令,比如ping、ssh等。
此外,我们尝试搭建了一个简单的Web服务器,通过浏览器访问,可以查看服务器上的网页。
实验六:系统监控和故障恢复在实验六中,我们学习了Linux的系统监控和故障恢复方法。
国开电大操作系统 Linux系统使用实验报告实验一:Linux系统使用实验目的:熟悉Linux系统环境,掌握常用命令,了解如何使用帮助,掌握文件和目录操作。
实验器材:Linux平台。
实验内容:1.了解Gnome图形界面。
2.以root用户登录Linux系统,创建自己的帐号。
3.执行常见命令。
4.使用特殊控制进行命令行编辑。
5.使用man命令查找特定的帮助信息。
6.Linux系统文件和目录的操作。
实验步骤:1.了解Gnome图形界面1) 类似于Windows任务栏。
2) 类似于Windows桌面和资源管理器。
3) 类似于Windows下方任务栏。
4) 使用Ctrl+Shift变换输入法,其中智能拼音最常用。
5) 使用Ctrl+Alt+F1~F6可以从图形界面切换到tty1~tty6中的一个Terminal文字界面。
6) 使用Ctrl+Alt+F7可以从Terminal文字界面切换到图形界面。
在文字界面增加用户成功。
7) Linux文件系统目录基本结构:Linux文件系统是多级树形结构。
典型Linux文件系统大致的结构如下:根目录bin常用的Linux命令目录usr用户目录dev设备文件lib用于系统开发的库文件etc系统管理用的配置文件tmp临时文件目录2.以root用户登录Linux系统,创建自己的帐号。
在系统安装过程中可以创建以下两种帐号:1)root--超级用户帐号(系统管理员),使用这个帐号可以在系统中做任何事情。
2)普通用户--这个帐号供普通用户使用,可以进行有限的操作。
一般的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操作系统实验报告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系统.和一些简单的技巧并对此门课程有了一定的兴趣。
实验课程名称:《操作系统》实验项目名称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语言程序,然后编译并运行它,记下整个过程。
∣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实验系统实验报告Linux实验系统实验报告一、引言Linux实验系统是一个基于Linux操作系统的实验平台,旨在提供一个实践学习的环境,帮助学生深入了解Linux操作系统的原理和应用。
本实验报告旨在总结和分析我在使用Linux实验系统进行实验时的经验和收获。
二、实验环境1. 硬件环境:我使用的是一台配备Intel Core i5处理器和8GB内存的个人电脑。
2. 软件环境:我下载并安装了Linux实验系统的最新版本,该版本基于Ubuntu操作系统,并预装了一系列常用的开发工具和软件包。
三、实验内容1. 实验一:Linux基础命令的使用在这个实验中,我通过终端窗口使用了一些常用的Linux命令,如ls、cd、mkdir、rm等。
通过实际操作,我熟悉了Linux文件系统的结构和基本操作,掌握了如何在Linux中创建、删除和移动文件夹,以及如何查看文件和文件夹的属性。
2. 实验二:Shell脚本编程这个实验要求我们使用Shell脚本编写一个简单的程序,实现对指定文件夹中所有文件进行备份的功能。
通过这个实验,我学会了如何使用Shell编程语言,掌握了一些基本的语法和命令,比如if语句、for循环和cp命令。
我还学会了如何将Shell脚本保存为可执行文件,并在终端中运行。
3. 实验三:网络配置与管理这个实验主要涉及Linux系统的网络配置和管理。
我学会了如何配置网络接口,包括设置IP地址、子网掩码和网关。
我还学会了如何使用ping命令测试网络连接,以及如何使用ifconfig命令查看和管理网络接口的状态。
通过这个实验,我对Linux系统的网络配置有了更深入的了解。
四、实验收获通过使用Linux实验系统进行实验,我获得了以下收获:1. 对Linux操作系统有了更深入的了解:通过实际操作,我对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` 为新用户的用户名。
LINUX操作系统实验报告姓名班级学号指导教师2011 年05月16 日实验一在LINUX下获取帮助、Shell实用功能实验目的:1、掌握字符界面下关机及重启的命令。
2、掌握LINUX下获取帮助信息的命令:man、help。
3、掌握LINUX中Shell的实用功能,命令行自动补全,命令历史记录,命令的排列、替换与别名,管道及输入输出重定向。
实验内容:1、使用shutdown命令设定在30分钟之后关闭计算机。
2、使用命令“cat /etc/”设置为别名named,然后再取消别名。
3、使用echo命令和输出重定向创建文本文件/root/nn,内容是hello,然后再使用追加重定向输入内容为word。
4、使用管道方式分页显示/var目录下的内容。
5、使用cat显示文件/etc/passwd和/etc/shadow,只有正确显示第一个文件时才显示第二个文件。
实验步骤及结果:1.用shutdown命令安全关闭系统,先开机在图形界面中右击鼠标选中新建终端选项中输入命令Shutdown -h 302、使用命令alias将/etc/文件设置为别名named,左边是要设置的名称右边是要更改的文件。
查看目录下的内容,只要在终端输入命令即可。
取消更改的名称用命令unalias命令:在命令后输入要取消的名称,再输入名称。
3.输入命令将文件内容HELLO重定向创建文本文件/root/nn,然后用然后再使用追加重定向输入内容为word。
步骤与输入内容HELLO一样,然后用命令显示文件的全部内容。
4.使用命令ls /etc显示/etc目录下的内容,命令是分页显示。
“|”是管道符号,它可以将多个命令输出信息当作某个命令的输入。
5实验二文件和目录操作命令实验目的:1、掌握LINUX下文件和目录的操作命令,如pwd、cd、ls、touch、mkdir、rmdir、cp、mv、rm等。
2、掌握LINUX下建立链接文件的方法。
实验内容:1、使用命令切换到/etc目录,并显示当前工作目录路径。
操作系统实验报告(Linux版)网络142 豹 142999实验一观察Linux进程状态一、实验目的在本实验中学习Linux操作系统的进程状态,并通过编写一些简单代码来观察各种情况下,Linux进程的状态,进一步理解进程的状态及其转换机制。
二、实验环境硬件环境:计算机一台,局域网环境;软件环境:Linux Ubuntu操作系统,gcc编译器。
(四)查看“不可中断阻塞”状态(D)创建一个C程序,如uninter_status.c,让其睡眠30s代码:#include<unistd.h>#include<stdio.h>int main(){int i=0,j=0,k=0;for(i=0;i<1000000;i++){for(j=0;j<1000000;j++){k++;k--;}}}实验结果:(二)查看“暂停”状态(T)运行run_status进程,其进入R状态:代码同上:(三)查看“可中断阻塞”状态(S)创建一个C程序,如interruptiblie_status.c,让其睡眠30s 编译,后台运行该程序(后接&符号),并使用ps命令查看运行状态代码:#include<unistd.h>#include<stdio.h>int main(){sleep(30);return;}实验结果:(四)查看“不可中断阻塞”状态(D)创建一个C程序,如uninter_status.c,让其睡眠30s编译,后台运行该程序(后接&),并使用ps命令查看运行状态代码:#include<unistd.h>#include<stdio.h>int main(){if(vfork()==0)sleep(300);return;}}实验结果:(五)查看“僵尸”进程(Z)创建一个C程序,如zombie_status.c,在其中创建一个子进程,并让子进程迅速结束,而父进程陷入阻塞编译,后台运行该程序(后接&),并使用ps命令查看运行状态(30s)代码:#include<unistd.h>#incldue<stdio.h>int main(){if(fork()){sleep(300);}}实验结果:实验二观察Linux进程/线程的异步并发执行一、实验目的通过本实验学习如何创建Linux进程及线程,通过实验,观察Linux进程及线程的异步执行。
一、设计题目进程管理及理解和增加Linux系统调用二、设计时间和地点设计时间:2011年12月26日——2011年12月29日设计地点:装备制造学院B座502机房三、设计目的和要求(1)加深对进程概念的理解,明确进程和程序的区别。
(2)进一步认识并发执行的实质。
(3)分析进程争用资源的现象,学习解决互斥的方法。
(4)了解Linux系统中进程通信的基本原理。
(5)弄清进程管理在操作系统中的地位和作用。
(6)初步揭开Linux内核的神秘“面纱”,为今后深入学习内核原理打下基础。
(7)弄清系统调用原理,以及操作系统在处理每个系统调用的时候,用户态怎样切入核心态?又怎样从核心态返回到用户态的?四、设计内容(1)实验准备a. 基本头文件<sys/types.h>:类型头文件,定义了基本的系统数据类型。
<unistd.h>:定义了各种符号常数和类型,并声明了各种函数。
<stdio .h>带缓冲的标准输入输出!<stdlib.h>头文件即standard library标准库头文件b.vi编辑器的基本使用[root@localhost ~]# vi filenameCommand 模式是vi默认模式,如果我们处于其它命令模式时,当我们按ESC键后,接着再输入:号时,vi会在屏幕的最下方等待我们输入命令;:w 保存;:w filename 另存为filename;:wq! 保存退出;:wq! filename 注:以filename为文件名保存后退出;:q! 不保存退出;c.gcc的基本使用1、直接编译gcc filename.c -o filename2、分步编译进行预编译# gcc -E hello.c -o hello.i生成目标代码# gcc -c hello.i -o hello.o链接成可执行文件# gcc hello.o -o hellod.U盘的挂载与卸载先要为外挂点新建一个子目录,一般外挂点的子目录都是建立在/mnt里面的,也建在那里,当然也可以建在/目录下,名字可以自己定,就取名为usb,终端下的命令如下:mkdir /mnt/usb然后接上U盘了,在终端下输入mount /dev/sdb1 /mnt/usb命令并击Enter删除挂起点,方法是:umount /dev/sdb1 /mnt/usb 或 umount /dev/sdb1(2)设计内容1、进程的创建编写一段程序,使用系统调用fork()创建两个子进程。
linux操作系统实验报告书(1)一.实验名称:Linux基本命令的使用二.实验目的:1.进一步练习Linux登录和退出的方法2.练习与目录和文件操作相关的Linux命令:cd:切换目录mkdir:建立一个新目录cp:文件拷贝ls:显示目录及文件的内容mv:更改文件名称cat、more、less:浏览文件内容chmod:更改文件或目录的访问权限rm:删除文件rmdir:删除目录三.实验内容:1.登录进入Linux 系统。
2.将工作目录切换到根目录,用ls命令查看根目录下的内容,尝试使用-a,-l,-F,-A,-lF等不同选项并比较不同之处。
3.在家目录下建立一个名为test的新目录,将工作目录切换到test下,然后将/tmp下的文件lesson.log拷贝到该目录下,并将lesson.log用mv命令改名为:TestRenName.txt。
4.用cat命令浏览文件TestRenName.txt的内容,用more命令进行浏览翻页操作。
再用less命令浏览文件TestRenName.txt的内容。
5.用ls命令查看test下的文件的权限,并更改文件TestRenName.txt的权限为:只允许自己读写,不允许其他用户访问。
用ls命令查看更改后的结果后再将文件TestRenName.txt的权限更改为系统默认的权限:-rw-r--r--。
6.用rm命令删除test目录下的所有文件,再用rmdir命令删除test目录。
7.用logout命令退出系统。
四.结果分析:五.实验心得*********************************************************************linux操作系统实验报告书(2)一.实验名称:Linux基本命令的使用二.实验目的:1. 掌握监视系统的几个Linux基本命令:PS--查看系统的进程tty--查看当前使用的终端df--查看系统的文件系统的空间使用情况du--查看具体某个文件和目录的磁盘空间的占用情况free--查看使用的内存资源的情况2. 掌握Linux下的联机帮助手册的使用3. 掌握Linux命令的简要帮助的获取方法4. 掌握一些其他常用的Linux命令:cal--显示日历date--显示系统的日期和时间clear--清屏find--查找文件uname--查看系统信息who--查看其他登录的用户which--查看命令的全路径tar--Linux下的压缩与解压缩命令三.实验内容:1.使用ps查看系统的进程运行情况,使用不同的命令选项并比较显示结果的差别;查看当前系统已安装的文件系统的空间使用情况;查看用户的家目录占用了多少空间;查看使用的内存资源的情况.2.查看ls命令的详细使用方法,查看ps命令的详细使用方法.3.获取ls命令的简要帮助信息,获取ps命令的简要帮助信息.4.用cal命令显示日历,用date命令显示系统的日期和时间,用clear清除屏幕,用find命令在系统中查找文件ch1.doc,用uname命令查看系统的信息,用who 命令查看其他登录的用户,用which命令查看一些命令的全路径,用tar命令来压缩test目录下的所有后缀为doc的文件到文件doc.tar.gz中,将doc.tar.gz 复制到用户的家目录并展开压缩文件.四.结果分析:1. 要查看系统的进程运行情况可使用ps命令:[stu@cs-linux stu]$ psPID TTY TIME CMD4442 pts/0 00:00:00 bash11683 pts/0 00:00:00 ps第一列中的PID表示进程编号,第二列中的TTY表示提交该进程的终端号,第三列中的TIME表示该进程已运行的时间,第四列中的CMD表示该进程所对应的命令.如果要显示进程更详细的信息,可以使用参数ps u:[stu@cs-linux stu]$ ps uUSER PID %CPU %MEM VSZ RSSTTY STAT START TIME COMMAND501 4442 0.0 0.3 5560 784 pts/0 S 09:45 0:00 bash501 11684 0.0 0.2 2592 644 pts/0 R 10:16 0:00 ps -uUSER表示进程拥有者,%CPU表示CPU时间的占用比例,%MEM表示内存的占用比例,VSZ表示进程的大小,RSS表示常驻内存部分大小,START表示进程的启动时间.如果要用长格式显示系统进程的信息,可以使用参数ps l:[stu@cs-linux stu]$ ps lFS UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME C MD4 S 501 4174 4173 0 75 0 - 1389 wait4 pts/0 00:00:00 bash0 R 501 4201 4174 0 80 0 - 776 - pts/0 00:00:00 ps要查看当前系统已安装的文件系统的空间使用情况,使用命令df:[stu@cs-linux stu]$ df文件系统1K-块已用可用已用% 挂载点/dev/hda7 9574520 2833764 6254392 32% /none 111472 0 111472 0% /dev/shm/dev/hda5 30701232 13538096 17163136 45% /mnt/hdd要查看用户的家目录占用了多少空间,先将工作目录切换到家目录,再使用命令du:[stu@cs-linux stu]$ du12 ./.kde/Autostart16 ./.kde8 ./.xemacs4 ./test64 .以上结果表示家目录公占用64KB的空间.要查看使用的内存资源的情况,应使用命令free:[stu@cs-linux stu]$ freetotal used free shared buffers cached Mem: 222948 216688 6260 0 17832 92792 -/+ buffers/cache: 106064 116884Swap: 514040 0 514040以上结果表示系统内存及交换空间使用情况.2. 查看ls命令的详细使用方法,使用命令man ls:[stu@cs-linux stu]$ man ls(.......显示内容省略)查看ps命令的详细使用方法,使用命令man ps:[stu@cs-linux stu]$ man ps(.......显示内容省略)3. 获取ls命令的简要帮助信息,可使用命令ls --help:[stu@cs-linux stu]$ ls --help(.......显示内容省略)获取ps命令的简要帮助信息,可使用命令ps --help:[stu@cs-linux stu]$ ps --help(.......显示内容省略)4. 要显示日历可使用命令cal:[stu@cs-linux stu]$ cal六月2004日一二三四五六1 2 3 4 56 7 8 9 10 11 1213 14 15 16 17 18 1920 21 22 23 24 25 2627 28 29 30以上用命令cal不加任何参数时显示当月日历,如果要指定查看某年某月的日历,可以加[月][年]参数,如要查看2004年8月:[stu@cs-linux stu]$ cal 08 2004八月2004日一二三四五六1 2 3 4 5 6 78 9 10 11 12 13 1415 16 17 18 19 20 2122 23 24 25 26 27 2829 30 31要显示系统的日期和时间,可使用命令date:[stu@cs-linux stu]$ date五6月18 11:23:23 CST 2004表示当前时间为2004年6月18日星期五11:23:23.用clear命令清除屏幕,之后将把已前显示的结果清除:[stu@cs-linux stu]$ clear用find命令在系统中查找文件ch1.doc,应首先退出到根目录下,在使用命令find ch1.doc:[stu@cs-linux /]$ cd /[stu@cs-linux /]$ find / -name "ch1.doc"find: /home/wb: 权限不够/home/stu/test/ch1.doc结果表示找到的文件在/home/stu/test/目录下.用uname命令查看系统的信息:[stu@cs-linux /]$ unameLinux用who命令查看其他登录的用户:[stu@cs-linux /]$ whostu tty1 Jun 18 14:22root pts/0 Jun 18 14:23 (:0.0)用which命令查看一些命令的全路径,如查看命令ls和ps的全路径:[stu@cs-linux /]$ which lsalias ls='ls --color=tty'/bin/ls[stu@cs-linux /]$ which ps/bin/ps用tar命令来压缩test目录下的所有后缀为doc的文件到文件doc.tar.gz中,如下:[stu@cs-linux test]$ tar cvf doc.tar.gz *.docch1.docch2.doc[stu@cs-linux test]$ lsch1.doc ch2.doc doc.tar.gz sesson.txt使用命令加参数cvf来打包所有后缀为doc的文件,参数c表示建立新文档,参数v表示在处理过程中显示相关信息,参数f表示以文件方式打包.现test目录下共有doc文件2个,所以显示ch1.doc,ch2.doc.打包后用ls命令查看,发现多了一个doc.tar.gz文件,表明操作成功.将doc.tar.gz复制到用户的家目录并展开压缩文件:[stu@cs-linux test]$ cd ..[stu@cs-linux stu]$ cp test/doc.tar.gz doc.tar.gz[stu@cs-linux stu]$ tar xvf doc.tar.gz *.docch1.docch2.doc[stu@cs-linux stu]$ lsch1.doc ch2.doc doc.tar.gz test第三行的参数x表示解包文件.五.实验心得这一章主要学习了Linux下的一些关于监视系统的命令以及一些常用辅助命令,对于一个Linux的系统管理员,掌握这些命令的使用是非常重要的,因为这些命令不仅可以让系统管理员了解到系统的运行情况,还可以了解到磁盘及内存的占用情况,以便系统管理员根据情况作出相应调整。
操作系统实验报告(一)Linux基本操作与编程(验证性 2学时)1、实验目(de):1)熟悉Linux操作系统(de)环境和使用.2)了解LINUX系统(de)安装过程.(注:表示可选择)3)掌握Linux环境下(de)命令操作.2、实验内容:(1)完成LINUX系统(de)登录,启动终端.进行下列操作并记录结果(要求:结果以屏幕截图表示).1)运行pwd命令,确定你当前(de)工作目录.2)利用以下命令显示当前工作目录(de)内容: ls –l3)运行以下命令: ls –al4)使用mkdir命令建立一个子目录subdir.5)使用cd命令,将工作目录改到根目录(/)上.6)使用ls-l命令列出/dev(de)内容.7)使用不带参数(de)命令cd改变目录,然后用pwd命令确定你当前(de)工作目录是哪里8)使用命令cd ../..,你将工作目录移到什么地方(2)在LINUX下查看你(de)文件.1)利用cd命令,将工作目录改到你(de)主目录上.2)将工作目录改到你(de)子目录subdir,然后运行命令: date > file1 将当前日期和时间存放到新建文件file1中.3)使用cat命令查看file1文件(de)内容.4)利用man命令显示date命令(de)用法: man date5)将date命令(de)用法附加到文件file1(de)后面:man date >> file16)利用cat命令显示文件file1(de)内容.7)利用ls -l file1命令列出文件file1(de)较详细(de)信息.运行ls -l/bin 命令显示目录(de)内容.8)利用ls -l/bin|more命令行分屏显示/bin目录(de)内容.9)利用cp file1 fa命令生成文件file1(de)副本.然后利用ls -l命令查看工作目录(de)内容.10)用cd命令返回你(de)主目录,输入命令ls –l后,解释屏幕显示(de)第一列内容(de)含义.(3)编写能输出“Hello world”问候语(de)C程序,并在终端中编译、执行.要求记录所使用(de)命令及结果.操作步骤:1)在文本编辑器中,编写C程序如下:include ""main(){ printf("hello"); }2) 在终端中,用gcc命令进行编译,生成可执行文件a.gcc –o a3) 在终端中执行a (de)命令如下:./a(4)编写一个程序:显示信息“Time for Play”,并能在后台运行一段时间(自定义)后,弹出信息提醒用户.要求记录所使用(de)命令及结果.(提示:使用sleep(s)函数)3、实验结果分析:(对上述实验内容中(de)各题结果,进行分析讨论.并回答下列问题)(1)进程包括哪些特征间断性, 失去封闭性, 不可再现性, 动态性, 并发性, 独立性(2)在Linux中,如何设置前、后台命令和程序(de)执行命令后直接加 & ,这个命令就在后台执行;正在运行(de)命令,使用Ctrl+z ,就挂起; jobs命令,可以现实后台,包括挂起(de)命令;使用 bg %作业号就可以把挂起(de)命令在后台执行;使用 fg %作业号就可以把后台命令调到前台(3)你所使用(de)Linux系统(de)内核版本是多少用什么命令查看内核版本目前你所了解(de)各发行版本(de)情况如何Linux version (gcc version (Red Hat (GCC) ) 1 SMP Tue Jan 2911:48:01 EST 2013(4)你对Linux系统有什么认识linux是一款开放性(de)操作系统,也可以说成是开放(de)源代码系统,这些代码可以完全自由(de)修改可以再任何(de)计算机上去运行它,也就是“可移植性”,其次大家都知道,linux是由UNIX(de)概念所开发出来(de),所以它也继承了UNIX(de)稳定和效率(de)特点4、总结:你对本次实验有什么体会或看法.操作系统实验报告(二)文件访问权限设置与输入输出重定向(2学时)一、实验目(de)1、掌握linux(de)文件访问权限设置.2、熟悉输入输出重定向和管道操作.二、实验内容1、启动进入红帽linux系统2、设置文件权限:在用户主目录下创建目录test,进入test目录,用vi 创建文件file1,并输入任意(de)文字内容.用ls -l显示文件信息,注意文件(de)权限和所属用户和组.对文件file1设置权限,使其他用户可以对此文件进行写操作:chmod o+w file1.用ls -l查看设置结果.取消同组用户对此文件(de)读取权限:chmod g-r file1.查看设置结果.用数字形式来为文件file1设置权限,所有者可读、可写、可执行;其他用户和所属组用户只有读和执行(de)权限:chmod 755 file1.设置完成后查看设置结果.3、输入、输出重定向和管道(1) 输出重定向用ls命令显示当前目录中(de)文件列表:ls –l.使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中:ls –l > list.查看文件list中(de)内容,注意在列表中会多出一个文件list,其长度为0. 这说明shell是首先创建了一个空文件,然后再运行ls命令:cat list.再次使用输出重定向,把ls命令在终端上显示(de)当前目录中(de)文件列表重定向到文件list中.这次使用追加符号>>进行重定向:ls –l >> list.查看文件list(de)内容,可以看到用>>进行重定向是把新(de)输出内容附加在文件(de)末尾,注意其中两行list文件(de)信息中文件大小(de)区别:cat list.重复命令ls –l > list.再次查看文件list中(de)内容,和前两次(de)结果相比较,注意list文件大小和创建时间(de)区别.(2) 管道who |grep root命令(de)结果是命令ls –l |wc –l结果是4、退出linux系统操作步骤:在主菜单上选择“注销” ->关闭计算机.三、实验结果与讨论(根据实验结果回答下列问题)1. 文件(de)权限如下:-rw-r—r-- 1 root root 19274 Jul 14 11:00回答:-rw-r—r-- (de)含义是什么答:是LINUX/FTP(de)简易权限表示法:对应于本用户-所在组-其他人(de)权限,每一个用执行(x)-读取(r)-写入(w)如本题若是说自己可以读取写入不可以执行,所在组和其他人只能读取.2、文件(de)所有者添加执行权限(de)命令是答:chmod u+x 、赋予所有用户读和写文件权限(de)命令是四、答:chmod a+w,a+r 个人体会(你对本次实验有什么体会或看法)操作系统实验报告(三)文件和目录管理一、实验目(de)1) 掌握在Linux系统下(de)文件和文件系统(de)概念及命令;2) 掌握Linux系统下(de)目录操作.二、实验内容1. 进入linux终端后,用命令(de)操作结果回答下列问题:1)vi(de)三种工作模式是其中不能进行直接转换(de)是什么模式到什么模式命令模式、文本输入模式、末行模式命令模式不能直接到末行模式2)在vi中退出时,保存并退出(de)操作步骤是Ese:wq3)用vi 创建myfile1文件,并在其中输入任意文字一行,创建myfile2文件,任意输入文字3行.请问执行命令:cat <myfile1 >myfile2 后,myfile2中还有几行内容该命令(de)作用是用命令操作验证你(de)回答.myfile2中还有1行内容该命令(de)作用是替换myfile(de)内容4)请用至少两种不同(de)命令创建一个文本文件(),在其中写入“我是2014级学生,我正在使用Linux系统.”,记录命令及执行结果.1、Vi创建2、5)用___pwd________命令可查看所创建文件(de)绝对路径,写出它(de)绝对路径__/root_________;用___ls -l________命令查看该文件(de)类型及访问权限,其访问权限(数字和字母)分别是多少__-rw- r- - r- - 6 4 4______________.6)若将该文件(de)访问权限修改为:所有者有读写权限;其他用户只读;同组用户可读写,请写出命令,并记录结果.7)查找my开头(de)所有文件,可___find my_________命令,写出命令并记录结果8)在/home下创建子目录user,并在其中创建2个文件,名为file1和file2,file1(de)内容是/root目录(de)详细信息;file2(de)内容任意,最后将这两个文件合并为file3文件,请先写出命令序列,并在终端中验证,记录结果.2. 文件及目录操作,写出操作所使用(de)命令,并记录结果.在终端中完成下列命令操作,并记录结果在root用户主目录下创建一个mydir子目录和一个myfile文件,再在mydir下建立d1和d2两个子目录.查看mydir和myfile(de)默认权限查看当前myfile和mydir(de)权限值是多少将myfile文件分别复制到root 和dd1(de)主目录中将root主目录中(de)myfile改为yourfile通过从键盘产生一个新文件并输入I am a student查找文件是否包含student字符串三、实验结果与分析,回答下列问题:1、能够创建文件(de)命令有哪些vi 和cat>name2、能够查看当前目录(de)绝对路径(de)命令是pwd3、Linux中按用户属性将用户分成哪些类型根据文件(de)访问权限,用户又被分成哪些类型能够查看文件访问权限(de)命令是用户同组其他可读可写可执行 cat f1四、小结(本次实验(de)体会或小结)操作系统实验报告(四)作业调度算法模拟(验证性2学时)1、实验目(de):1)掌握作业调度(de)主要功能及算法.2)通过模拟作业调度算法(de)设计加深对作业管理基本原理(de)理解.3)熟悉Linux环境下应用程序(de)编程方法.2、实验内容:(1)作业调度算法(FCFS)编程模拟:编制一段程序,对所输入(de)若干作业,输入、输出数据样例如下表所示.按FCFS算法模拟调度,观察、记录并分析调度(de)输出结果情况.输入输出样例1:FCFS算法include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void fcfs(){ int i,j,t=0,tw=0,tt=0;for(i=0;i<SIZE-1;i++)for(j=i+1;j<SIZE;j++)if(job[i].tb>job[j].tb){x=job[i];job[i]=job[j];job[j]=x;}printf("FCFS调度结果:\n");printf("开始时间作业号到达时间运行时间完成时间等待时间周转时间\n");for(i=0;i<SIZE;i++){printf(" %d",t);t=t+job[i].tr;tw=t-job[i].tb-job[i].tr; b; o,job[i].tb,job[i].tr,t,tw,tt);}}void main(){load();fcfs();}(2)作业调度算法(SJF)编程模拟:编程实现由短作业优先算法,分别用下面两组输入、输出数据样例进行模拟,观察分析运行结果.输入输出样例2:SJF算法输入输出A 0 4B 0 3C 0 5D 0 2E 0 1A 0 6 10 10B 0 3 6 6C 0 10 15 15D 0 1 3 3E 0 0 1 1include <>include <>define SIZE 5struct Job_type{char no[2]; o,&job[i].tb,&job[i].tr);printf("输入作业顺序:\n");for(i=0;i<SIZE;i++)printf("\t%s\t%d\t%d\n",job[i].no,job[i].tb,job[i].tr);}void sjf()n=i; pl[i].pfn=ERR;}for(i=1;i<total;i++){ pfc[i-1].next=&pfc[i];pfc[i-1].pfn=i-1;}pfc[total-1].next=NULL;pfc[total-1].pfn=total-1;freepf_head=&pfc[0];}void FIFO(int total){ int i,j;pfc_type p,t;initialize(total);busypf_head=busypf_tail=NULL;for(i=0;i<page_len;i++){if(pl[page[i]].pfn==ERR){ diseffect+=1;if(freepf_head==NULL){p=busypf_head->next;pl[busypf_head->pn].pfn=ERR; freepf_head=busypf_head;freepf_head->next=NULL;busypf_head=p;}p=freepf_head->next;freepf_head->next=NULL;freepf_head->pn=page[i];pl[page[i]].pfn=freepf_head->pfn;if(busypf_tail==NULL)busypf_head=busypf_tail=freepf_head; else{ busypf_tail->next=freepf_head;busypf_tail=freepf_head;}freepf_head=p;}}printf("FIFO:%d",diseffect);}main(){ int i; int k;printf(“请输入页(de)引用序列:\n”); for(k=0;k<page_len;k++)scanf("%d",&page[k]);for(i=4;i<=7;i++){printf("%2d page frames ",i);FIFO(i);}参考程序LRU算法,略三、实验结果分析:(对上述实验各题所使用(de)原始数据、调试数据与状态(包括出错)及最终结果进行记录并分析.)随着块数(de)增加,缺页数目也减少,4个实验中3个实验(de)块数增加到了5以后,即使块数再增加,缺页数目也是保持不变.只有实验4,块数增加到7以后,缺页数目又再次减少了四、总结:你对本次实验有什么体会或看法.。
实验一 LINUX操作基础实验目的:1、掌握字符界面下关机及重启的命令。
2、掌握LINUX下获取帮助信息的命令:man、help。
3、掌握LINUX中常用的简单命令:pwd、date、who、cal、uname、wc、clear等实验内容:1、使用shutdown命令设定在30分钟之后关闭计算机。
2、使用init命令实现图形界面到字符界面及字符界面到图形界面的切换。
3、分别使用命令man和help查看ls命令的帮助文档。
4、使用命令将当前计算机的主机名显示为IT。
5、使用命令显示公元2008年8月的月历。
6、显示当前计算机上的日期和时间。
7、统计文件/etc/passwd的行数、字符数和单词数。
实验步骤及结果:1、2、3、4、5、6、7、实验二 LINUX系统的文件操作命令实验目的:1、掌握LINUX下文件和目录操作命令:cd、ls、mkdir、rmdir、rm。
2、掌握LINUX下文件信息显示命令:cat、more。
3、掌握LINUX下文件复制、删除及移动命令:cp、mv。
4、掌握LINUX的文件检索、排序命令:grep、sort。
实验内容:1、使用命令切换到/etc目录,并显示当前工作目录路径。
2、使用命令显示/root目录下所有文件目录的详细信息,包括隐藏文件。
3、使用命令创建目录/root/linux,然后删除该目录。
4、使用命令cat用输出重定向在/root目录下创建文件abc,文件内容为“Hello,Linux!”,并查看该文件的内容。
5、使用命令创建具有默认权限为744的目录/root/ak,然后将/root/abc文件复制到该目录中,最后将该目录及其目录下的文件一起删除。
6、查看文件/etc/passwd的前3行内容。
7、创建文件file1,文件内容有3行,分别为a、c、b,排序该文件数据,显示在屏幕上。
8、使用命令显示/etc/passwd文件的文件类型。
9、在文件/etc/passwd中搜索匹配字符“root”。
实验报告1linux引言本实验旨在通过学习Linux操作系统的基本概念和常用命令,掌握Linux系统的使用方法,并能够进行基本的系统管理和维护工作。
本实验报告将分为四个部分,分别是Linux操作系统的基本概念、常用命令的使用、系统管理和维护以及实验总结与心得。
一、Linux操作系统的基本概念Linux是一种自由、开放源代码的操作系统,最初由芬兰的林纳斯·托瓦兹(Linus Torvalds)设计开发,成为开源社区当中最重要的操作系统之一。
Linux操作系统具有良好的稳定性、可靠性和安全性,广泛应用于服务器、嵌入式设备等领域。
Linux操作系统的基本特点包括:1. 开源:任何人都可以获取和修改Linux的源代码,因此可以充分发挥群众的智慧,不断完善和改进系统。
2. 多用户多任务:Linux支持多个用户同时登录,并且可以同时进行多个任务,提高了系统的利用率和效率。
3. 文件系统:Linux采用了基于文件的操作方式,所有的设备、文件和网络资源都被当作文件进行管理。
4. 规范的命令行界面:Linux系统提供了丰富的命令行界面,通过命令行可以进行系统管理和操作。
二、常用命令的使用Linux系统提供了许多常用的命令,用于系统管理和操作。
1. `ls`命令用于列出当前目录中的文件和子目录。
2. `cd`命令用于切换当前目录。
3. `mkdir`命令用于创建新目录。
4. `rm`命令用于删除文件或目录。
5. `cp`命令用于复制文件或目录。
6. `mv`命令用于移动文件或目录。
7. `cat`命令用于显示文件内容。
8. `grep`命令用于检索文件中符合某种特定模式的行。
9. `chmod`命令用于修改文件或目录的权限。
10. `chown`命令用于修改文件或目录的所有者。
11. `ps`命令用于查看当前正在运行的进程。
12. `top`命令用于实时监控系统的运行状态。
三、系统管理和维护Linux系统的管理和维护工作包括用户管理、权限管理、系统安全、日志管理等方面。
linux操作系统实验报告Linux操作系统实验报告一、引言在计算机科学领域,操作系统是一种非常重要的软件,它负责管理计算机硬件和软件资源,提供用户与计算机之间的接口。
Linux操作系统是一种开源的、免费的操作系统,它具有高度的可定制性和稳定性,因此在科研、教育和商业领域都得到广泛应用。
本实验报告将介绍我们在课程中对Linux操作系统的实验内容和实验结果。
二、实验目的本次实验的目的是让我们学生通过亲自操作和实践,深入了解Linux操作系统的特点、功能和使用方法。
通过实验,我们将学会如何安装Linux操作系统、使用Linux命令行界面、管理文件和目录、配置网络和安全等。
三、实验环境我们使用的实验环境是一台配置较高的个人计算机,该计算机上安装了虚拟机软件。
我们选择了一款常用的虚拟机软件VirtualBox,并在其上安装了Ubuntu Linux操作系统。
四、实验内容1. Linux操作系统安装我们首先学习了如何在虚拟机上安装Linux操作系统。
通过下载Ubuntu的镜像文件,并创建虚拟机实例,我们成功地完成了Linux操作系统的安装。
在安装过程中,我们需要设置用户名、密码和网络配置等信息。
2. Linux命令行界面Linux操作系统的命令行界面是其最基本的用户接口。
我们学习了一些常用的Linux命令,如cd、ls、mkdir、rm等,用于管理文件和目录。
我们还学习了如何使用管道和重定向符号来处理命令的输入和输出。
3. 文件和目录管理Linux操作系统以文件和目录的形式来组织和管理数据。
我们学习了如何创建、复制、移动和删除文件和目录。
我们还学习了如何修改文件和目录的权限和所有权。
4. 网络配置在现代计算机网络中,网络配置是非常重要的一部分。
我们学习了如何配置Linux操作系统的网络设置,包括IP地址、子网掩码、网关等。
我们还学习了如何使用ping命令测试网络连通性。
5. 安全配置在网络环境中,安全性是一个重要的考虑因素。
实验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()三个函数。
其中init_clock(),exit_clock()负责将模块从系统中加载或卸载,以及增加或删除模块在/proc中的入口。
read_clock()负责产生/proc/clock被读时的动作。
(2).编译内核模块Makefile文件# Makefile under 2.6.25ifneq ($(KERNELRELEASE),)#kbuild syntax. dependency relationshsip of files and target modules are listed here.obj-m := proc_clock.oelsePWD := $(shell pwd)KVER ?= $(shell uname -r)KDIR := /lib/modules/$(KVER)/buildall:$(MAKE) -C $(KDIR) M=$(PWD) modulesclean:rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions *.symvers *.orderendif编译完成之后生成proc_clock.ko模块文件。
(3).内核模块源代码clock.c#include <linux/kernel.h>#include <linux/module.h>#include <linux/proc_fs.h>#include <linux/string.h>#include <linux/vmalloc.h>#include <asm/uaccess.h>#define MODULE#define MODULE_VERSION "1.0"#define MODULE_NAME "clock"struct proc_dir_entry* my_clock;int read_clock(char* page, char** start, off_t off, int count, int* eof, void* data) {int len;struct timeval xtime;do_gettimeofday(&xtime);len = sprintf(page, "%d %d\n", _sec, _usec);printk("clock: read_func()\n");return len;}struct proc_dir_entry *clock_proc_file;int init_clock(void){clock_proc_file=create_proc_read_entry("clock",0,NULL,read_clock,NULL); return 0;}void exit_clock(void){remove_proc_entry("clock",clock_proc_file);}module_init(init_clock)module_exit(exit_clock)MODULE_LICENSE("GPL");(4).编译内核模块# make(5).加载内核模块在系统root用户下运行用户态模块命令装载内核模块# insmod proc_clock.ko(6).测试在终端中输入以下命令:#cat /proc/clock(7).卸载内核模块在系统root用户下运行用户态模块命令卸载内核模块#rmmod proc_clock.ko实验2.4 系统调用实验步骤:(1). 添加新调用的源代码在./linux-2.6.33.7/arch/x86/kernel/sys_i386_32.c中添加相应的调用代码asmlinkage int sys_xwlcall(struct timeval *tv){struct timeval ktv;do_gettimeofday(&ktv);copy_to_user(tv,&ktv,sizeof(ktv));printk(KERN_ALERT"PID %ld called sys_xwlcall()./n",(long)current->pid);return 0;}(2). 连接系统调用a、修改./linux-2.6.33.7/arch/x86/include/asm/unistd_32.h,在系统调用列表后面相应位置添加一行,这样在用户空间做系统调用时就不需要知道系统调用号了,如果在用户空间指明了调用号,就可以省略这一步,实际上我就没写:#define __NR_xwlcall338新增加的调用号位338b、修改./linux-2.6.33.7/arch/x86/kernel/syscall_table_32.S在ENTRY(sys_call_table)清单最后添加一行,这步至关重要,338就是这里来的:.long sys_xwlcall(3). 重建新的Linux内核先安装好编译内核必要的软件包:# sudo apt-get install build-essential kernel-package libncurses5-dev 复制当前内核的配置文件# cp /boot/config-`uname -r` ./.config保存配置文件# sudo make menuconfig使用debian的的内核编译方法,要简单很多# sudo make-kpkg-initrd--initrd--append-to-version=xwlcall kernel_image kernel-headers运行以下deb包,安装内核镜像和模块:linux-image-2.6.33.7xwlcall_2.6.33.7xwlcall-10.00.Custom_i386.deb运行以下deb包,安装内核头文件:linux-headers-2.6.33.7xwlcall_2.6.33.7xwlcall-10.00.Custom_i386.deb运行以下命令,使内核启动时能调用模块,比如硬件驱动:# sudo update-initramfs -c -k 2.6.33.7xwlcall此次编译的内核采用ubuntu默认配置文件,通用性非常好,可以拷贝到大部分x86机器上安装。
安装后系统自动会修改grub启动选单。
4. 重建引导信息a、安装deb包就自动重建引导信息了,无须另行处理。
b、如果仍然不放心,可以运行# update-grub5.重新引导从新的内核进入6. 修改系统调用表7. 测试实验3.3 Shell编程实验(进程管理实验)1、实验目的通过编写shell程序,了解子进程的创建和父进程与子进程间的协同,获得多进程程序的编程经验。
2、实验内容1设计一个简单的shell解释程序,能实现基本的bsh功能。
3、实验原理将每一条命令分子段压入argv栈。
然后再子进程中调用execvp()来实现该命令的功能。
4、代码(源代码清单)#include <stdio.h>#include <string.h>#include <stdlib.h>#define BUFFERSIZE 256//最简单的shell,只是简单的执行命令调用,没有任何的其他功能int main(){char buf[BUFFERSIZE],*cmd,*argv[100];char inchar;int n,sv,buflength;int result;buflength = 0;for(;;) {printf("=> ");//处理过长的命令;inchar = getchar();//读取命令while (inchar != '\n' && buflength < BUFFERSIZE ){buf[buflength++] = inchar;inchar = getchar();}if (buflength > BUFFERSIZE){printf("Command too long,please enter again!\n");buflength = 0;continue;}elsebuf[buflength] = '\0';//解析命令行,分成一个个的标记//char *strtok(char *s,char *delim)//分解字符串为一组字符串。