当前位置:文档之家› linux大作业

linux大作业

仲恺农业工程学院Linux课程大作业报告院(系):信息科学与技术学院专业班级:计算机学号:姓名:目录1 简述题目 (1)2 shell程序设计 (5)2.1 程序设计要求 (5)2.2 程序设计内容 (5)1 (5)2 (10)3 (11)5 (13)6 (16)3 文件和目录部分 (17)3.1 程序设计要求 (17)3.2 程序设计内容 (17)2 (17)3 (17)6 (18)8 (19)9 (19)4 进程和信号部分 (20)4.1 程序设计要求 (20)4.2 程序设计内容 (20)1 (20)2 (21)8 (22)9 (23)10 (24)5 网络编程部分 (25)5.1 程序设计要求 (25)5.2 程序设计内容 (25)2 (25)3 (26)1 简述题目1、makefile文件的作用是什么,makefile文件中有一种变量,其值是根据具体的规则来确定的,称为自动变量,其中代表所有依赖文件列表的是哪个;举例说明make命令的工作流程。

答:(1)makefile的作用就是使得源文件修改的时候,能很快地自动编译和链接所有修改过的文件。

Make工具可将编译和链接的步骤按一定的规则写入文本文件。

(2)是指冒号后面的那一列(3)举例:现在有lib.h,lib.c,mod.c,app.h,app.c,main.c文件,编译链接成main.o程序示例:#script5-2_makefileAppexam:main.o app.o mod.o lib.ogcc –o apexam main.o app.o mod.o lib.omain.o:main.c app.hgcc –c main.capp.o:app.c app.hgcc –c app.cmod.o:mod.cgcc –c mod.clib.o:lib.c lib.hgcc –c lib.cclean:rm –f *.o2、什么是进程,用fork()创建一个子进程时,系统会做什么工作。

请编程说明。

答:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。

在linux系统中,每个进程都有各自的生命周期。

在一个进程的生命周期中,都有各自的运行环境以及所需的资源。

一个进程程可以由多个线程组成,线程独自拥有的资源很小,但是系统运行的最小单位。

当通过fork函数创建心得子进程时,内核将父进程的用户地址空间的内容复制给子进程,这样父子进程之间拥有各自的用户空间,当父进程修改变量的值时不会影响子进程中的相应变量。

但为了提高效率,Linux采用了COW(Copy on Write)算法,子进程创建时,父子进程享有相同的地址空间只是在页表中设置COW标志,只有在父进程或子进程执行写数据操作时,才为子进程申请一个物理页,将父进程空间中相应数据所在页的内容复制到该物理页,然后将该页映射至子进程用户地址空间的适当位置。

此外,子进程还继承父进程的其他资源。

举例说明:#include<sys/types.h>intglob=10;int main(void){int local;pid_t pid;local=8;if((pid=fork())==0){sleep(2);}else{glob++;local--;sleep(10);}printf(“pid=%d,glob=%d,localar=%d\n”,getpid(),glob,local);exit(0);}}3、简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程。

解释i节点在文件系统中的作用。

答:Linux通过i节点表将文件的逻辑结构和物理结构进行转换。

i 节点是一个64字节长的表,表中包含了文件的相关信息,其中有文件的大小、文件所有者、文件的存取许可方式以及文件的类型等重要信息。

在i节点表中最重要的内容是磁盘地址表。

在磁盘地址表中有13个块号,文件将以块号在磁盘地址表中出现的顺序依次读取相应的块。

Linux文件系统通过把i节点和文件名进行连接,当需要读取该文件时,文件系统在当前目录表中查找该文件名对应的项,由此得到该文件相对应的i节点号,通过该i节点的磁盘地址表把分散存放的文件物理块连接成文件的逻辑结构。

4、文件指针FILE*与文件描述符是一个什么样的关系,请画图说明。

答:文件执行I/O操作有两种基本方式:系统调用、基于流;系统调用即直接处理文件描述符,而基于流则处理FILE*类型的文件柄,它是建立在系统调用I/O 方法基础上的C函数库,它基于系统调用方法的封装并增加了额外的功能,使程序减少系统调用,提高程序的性能;但在处理设备、管道、网络套接字和其他特殊类型的文件时,必须用系统调用I/O方法。

5、简述与windows的文件系统相比,linux文件系统有什么特点,并用图详细描述。

答:Linux操作系统的核心就是处理文件,把其他所有的驱动、软件等其他软件都看成了文件,就是对文件的操作,Linux的整个文件系统就是一棵巨大的树结构,最顶部是/(Root根),所有文件夹、文件和驱动盘都是这个Root的分支。

6、Linux创始人是谁,Linux操作系统的诞生、发展和成长过程始终依赖着的重要支柱有哪些,并描述Linux的特点。

答:Linux的创始人是Linux Torvalds(林纳斯)。

Linux操作系统的诞生、发展和成长过程始终依赖着的重要支柱有UNIX操作系统;MINIX操作系统;GNU计划;POSIX标准;Internet网络。

Linux的特点:1)自由软件;2)完全兼容POSIX 1.0标准;3)多任务、多用户;4)良好的用户界面;5)支持多种文件系统;6)丰富的网络功能;7)可靠的系统安全;8)良好的可移植性。

7、为什么要学习Linux开源技术。

答:因为Linux是一个很强的附加技能。

服务器和云服务平台选用Linux的比较多。

在超越PC的战场上,Linux是一个必修技能。

同时,Linux的稳定性很好,这也是大部分服务器使用Linux的一个重要原因。

由于Linux的设计与Windows 不同,所以Linux可以长时间的持续运转,也不需要对磁盘进行碎片整理。

8、Linux的主要组成包括什么。

答:(1)内核。

内核主要作用是运行程序和管理硬件。

内核包括几个主要部分:进程管理、内存管理、硬件设备驱动、文件系统驱动、网络管理和其他一些部分,内核最重要的部分是内存管理和进程管理。

(2)shell。

shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口。

它接收用户输入的命令,并把它送入内核去执行。

shell实际上是一个命令解释器。

目前有如下主要版本的shell。

1. Bourne shell:贝尔实验室开发。

2. BASH: GNU开发。

3. Korn shell:针对Bourne shell的发展。

4. C shell:sun公司开发。

shell中的命令分为内部命令和外部命令。

前者包含在shell之中,如cd、exit 等,查看内部命令可用help命令。

后者存于文件系统某个目录下的具体可操作程序,如cp等,查看外部命令的路径可用which。

(3)文件结构。

文件结构是文件存放于磁盘上的组织方法。

(4)实用工具。

1. 编辑器:用于编辑文件。

2.过滤器:用于接收数据并过滤数据。

3.交互程序:允许用户发送信息或接收来自其他用户的信息。

Linux上的过滤器主要有ed、ex、Vi、Emacs。

ed和ex是行编辑器,vi和Emacs是全屏幕编辑器。

9、什么是系统调用?系统调用是通过什么方式陷入内核态的?请写出你对系统调用的理解。

什么是文件I/O和标准I/O库?文件I/O和标准I/O库的区别? 答:Linux内核是系统的心脏,是运行程序和管理磁盘盒打印机等硬件设备的核心程序。

内核的作用:提供了操作系统的最核心功能,它负责管理系统的进程,内存,设备驱动程序,文件和网络系统,决定着系统的性能和稳定性。

内核以独占的方式执行最底层任务,保证系统正常运行;协调多个并发进程,管理进程使用的内存,使它们相互之间不产生冲突,满足进程访问磁盘的请求等。

Linux的内核版本由3部分组成:主版本号、次版本号、末版本号。

其中,版本号的第二位数字,可以确定Linux内核版本的类型,第二位数字是奇数的为开发版本,第二位数字是偶数的是稳定版本。

Linux发行版,指的是以Linux内核为中心,再集成开发各种系统管理软件或应用软件,组成一套完整的操作系统。

这种在内核上开发出的可供用户使用的Linux系统就是Linux发行版。

10、如何学习《Linux系统编程》这门课程,谈谈自己的感受。

答:自己在虚拟机或者在电脑上安装一个linux的系统,然后按照书本上的东西去学习,去尝试编程,我觉得这是学习linux的最快最好的办法。

学习时循序渐进的过程,不可操之过急,有解决不了的问题就问问同学或者上百度去查找,网络会是学习linux的最好的伙伴。

还有不要死板,要活学活用,才能享受到学习的乐趣,取得很好的成绩。

2 shell程序设计2.1程序设计要求1、掌握shell脚本的语法结构,掌握如何使用shell命令进行流程控制。

2、掌握shell程序设计,特别是掌握变量的分类与使用、条件表达式、控制语句和函数的使用。

2.2程序设计内容1.1、设计shell脚本程序,运行结果如下:- - - - - - - - - - - - - - - -Linux 13/06/11- - - - - - - - - - - - - - - -A: 查看进程信息B:查看用户信息C:显示当前目录信息D:退出- - - - - - - - - - - - - - -当用户输入相应的数字执行相应的功能。

(1)流程图(2)详细代码echo "-------------------------------"echo "LINUX `date -d now +%y/%m/%d`" echo "-------------------------------"echo "键入下面选项:"echo "A.查看进程信息"echo "B.查看用户信息"echo "C.显示当前目录信息" echo "D.退出"read choicecase "$choice" ina | A ) ps -efj;;b | B ) who;;c | C ) ls -l;;q | Q ) exit;;* ) echo "输入a~d等.\n";;esac(3)调试结果2.2、设计shell脚本程序,在屏幕上输出操作系统的信息,包括计算机名、Linux分发版本名称、Linux内核版本和当前的IP地址。

相关主题