linux大作业

合集下载

Linux期末大作业

Linux期末大作业

简单的IRC聊天程序—— Linux课程期末实验第一章概述【实验目的】综合应用Linux系统下的网络编程技术,使用C语言,结合软件工程思想,设计并实现一个简单的IRC聊天程序,具有服务器端和客户端,可以是终端字符界面,支持用户管理,用户名/密码注册和登录,支持版面聊天,用户可以选择进入某个版面,版面发言大家可以看到,同时支持点对点私聊,可以选择某个用户进行私聊。

从而熟悉在Linux系统所提供的网络通信接口及该系统下的编程思想,深入对计算机系统的理解,并切实提高软件设计开发的能力。

【实验原理】一个简单的聊天室,其功能是当这个聊天室中的任何一个用户输入一段字符后,室内的其他用户都可以看到这句话。

据此,聊天程序分为客户端和服务器端。

客户端对应每一个参加聊天的用户,完成从终端上输入采集并传递到服务器端和从服务器端接收信息输出显示的功能。

总体介绍该结构如下。

首先是初始化服务器,使服务器进入监听状态:sockfd = socket(AF_INET, SOCK_STREAM, 0);// 首先建立一个socket,族为AF_INET,类型为SOCK_STREAM。

// AF_INET = ARPA Internet protocols,即使用TCP/IP协议族。

// SOCK_STREAM类型提供了顺序的,可靠的,基于字节流的全双工连接。

// 由于该协议族中只有一个协议,因此第三个参数为0。

bind(sockfd, (struct sockaddr *)&servaddr,sizeof(serv_addr));// 再将这个socket与某个地址进行绑定。

// serv_addr 包括sin_family=AF_INET 协议族同socket。

// sin_addr.s_addr = htonl(INADDR_ANY)服务器所接收的所有其他地址// 请求建立的连接。

// sin_port = htons(SERV_TCP_PORT) 服务器所监听的端口。

Linux课程大作业

Linux课程大作业

Linux课程设计报告题目 Linux课程大作业院系班级姓名指导教师一、基础篇(给出源程序和编译运行的结果)1、编写一个简单的c语言程序:根据输入的两个整数求平均值并且在终端输出,通过gcc编译器得到它的汇编程序文件。

源代码(c):源代码(汇编):.file "sum.c".text.globl average.type average, @functionaverage:.LFB0:.cfi_startprocpushl %ebp.cfi_def_cfa_offset 8.cfi_offset 5, -8movl %esp, %ebp.cfi_def_cfa_register 5subl $8, %espmovl 12(%ebp), %eaxmovl 8(%ebp), %edxaddl %edx, %eaxmovl %eax, -4(%ebp)fildl -4(%ebp)fldl .LC0fdivrp %st, %st(1)leave.cfi_restore 5.cfi_def_cfa 4, 4ret.cfi_endproc.LFE0:.size average, .-average.section .rodata.align 4.LC2:.string"\350\257\267\350\276\223\345\205\245\344\270\244\344\270\252\346\225\260\ 357\274\214\345\233\236\350\275\246\345\210\206\345\211\262".LC3:.string "%d".LC4:.string"%d\344\270\216%d\347\232\204\345\271\263\345\235\207\345\200\274\346\23 0\257\357\274\232%lf\n".text.globl main.type main, @functionmain:.LFB1:.cfi_startprocpushl %ebp.cfi_def_cfa_offset 8.cfi_offset 5, -8movl %esp, %ebp.cfi_def_cfa_register 5 andl $-16, %espsubl $48, %espmovl $0, 44(%esp) movl $.LC2, (%esp) call putsmovl $.LC3, %eax leal 40(%esp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call __isoc99_scanf movl $.LC3, %eax leal 44(%esp), %edx movl %edx, 4(%esp) movl %eax, (%esp) call __isoc99_scanf movl 44(%esp), %edx movl 40(%esp), %eax movl %edx, 4(%esp) movl %eax, (%esp) call averagemovl 44(%esp), %ecx movl 40(%esp), %edx movl $.LC4, %eax fstpl 12(%esp)movl %ecx, 8(%esp) movl %edx, 4(%esp) movl %eax, (%esp)call printfleave.cfi_restore 5.cfi_def_cfa 4, 4ret.cfi_endproc.LFE1:.size main, .-main.section .rodata.align 8.LC0:.long 0.long 1073741824.ident "GCC: (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3".section .note.GNU-stack,"",@progbits执行结果:2、编写一个c语言程序:打印输出所有“水仙花数”,用gdb调试程序(给出步骤,至少十步以上)。

《Linux系统管理与服务配置》大作业

《Linux系统管理与服务配置》大作业

《Linux系统管理与服务配置》大作业背景描述无论从硬件还是从软件上来讲,Linux操作系统都已经是一个非常成熟的操作系统,由于其免费、开源的特性使得Linux对Windows的威胁也越来越大。

在服务器和嵌入式系统市场上,Linux已经是主流的操作系统之一,现在Linux正稳步拓展桌面操作系统市场。

Linux网络服务功能非常强大,在Linux上可以部署Web Server、DNS Server、Mail Server、DB Server、FTP server等等,但是也由此产生了很多网络问题。

据统计,在Linux系统下产生的故障有60%来自网络方面,40%来自系统本身,课件熟练解决LInux下故障,对于熟练掌握Linux 系统有着巨大的帮助,请学生列出Linux系统下常见的故障与处理方法。

要求:1.要求从网络硬件传输故障(网线、路由器、交换机等)、网卡故障、网络服务故障等方面进行展开。

2.字数不少于1500字。

作业格式要求:(1)以A4纸张作(2)论文格式如下:论文标题用小二号字,宋体,加粗1 一级标题,用小三号黑体,加粗,并留出上下间距为:段前0.5行,段后0.5行)1.1 ××××××(作为正文2级标题,用小4号黑体,加粗)×××××××××(小4号宋体)××××××…………1.1.1 ××××(作为正文3级标题,用小4号黑体,不加粗)×××××××××(小4号宋体,行距1.5倍)××××××××教师姓名:李茂林联系方式:邮箱:截止日期:5月27日前将完成的作业发至指定邮箱。

Linux-习题(1)

Linux-习题(1)

大作业 ( 一 )一:填空题1:Linux中除图形登录外还可以使用命令提示行进行登录。

2:如果要访问网络中的另一台电脑,可以通过命令方式进行登录。

3: shell 是一个类似于 dos 的命令行解释工具。

4:Shell的概念最初是在__unix____操作系统中形成和得到广泛应用的。

5:Linux中的Shell有多种类型,其中最常用的几种是 Bourne Shell sh 、C Shell(csh)和Korn Shell(ksh).6:Bourne Shell简称 sh 。

7:创建名为p的用户可以通过 useradd p 命令进行创建。

8:为名为p的用户创建密码可以通过 passwd p 命令进行创建。

9:删除名为p的用户可以通过 userdel p 命令进行。

10:mv命令用来移动文件,cp命令用来复制文件。

11:当在Shell环境中启动vi编辑器时,可以使用 vi 命令进行启动。

12:当在vi编辑器中输入文字时,需要按键盘中的 I 键才可以进行输入。

13:在命名文件时不可以使用/、:、 \、 *、?、 % 、 >、|等符号。

14:root用户账户的基本信息保存在 /root/. 文件中。

15:在账户记录文件“root: x: 0: 0: root: /root: bin/bash”代码中的“bin/bash”表示 Bourne Again shell 。

16:当其他用户登录后要切换到root用户账户时,可以通过 su 命令进行。

17:当需要修改root用户账户时,需要在用户设置窗口中选择新建选项后才可以进行。

18:除了root用户账户外,还有lp、mail、uucp、 news 和 halt 这些默认的系统账户。

19:在Linux中权限最大的组是 root组,该组具备Linux操作的所有权限。

20:在Linux中可以使用 fdisk 或 df 命令查看磁盘分区情况。

21:当需要使用kill命令关闭编号是2547的程序时,其书写方式是 kill-9 2547 。

linux编程大作业讲解

linux编程大作业讲解

linux编程大作业讲解linux第一部分简述题目要求:这部分题目必做,要详细回答,最好用自己理解的语言回答,有些题目可用图形和举例等阐述问题。

1、makefile文件的作用是什么,makefile文件中有一种变量,其值是根据具体的规则来确定的,称为自动变量,其中代表所有依赖文件列表的是哪个;举例说明make 命令的工作流程。

答:在Makefile文件中描述了整个工程所有文件的编译顺序、编译规则。

其中包括:工程中的哪些源文件需要编译以及如何编译、需要创建那些库文件以及如何创建这些库文件、如何最后产生我们想要的可执行文件。

Makefile 有自己的书写格式、关键字、函数。

在Makefile 中可以使用系统shell所提供的任何命令来完成想要的工作。

能够使用一行命令来完成“自动化编译”。

自动变量$^代表所有依赖文件,以空格分开,以出现的先后为序。

2、什么是进程,用fork()创建一个子进程时,系统会做什么工作。

请编程说明。

答:进程是具有独立功能的程序关于某个数据集合上的一次运行活动,是系统进行资源分配的单位,不仅是系统内部独立运行的实体也是独立竞争资源的实体。

用fork()时系统会分配子进程一个ID号然后继承父进程的地址空间,包括进程上下文进程堆栈打开的文件描述符等等,他就是父进程的一个复制品。

3、简述Linux文件系统通过i节点把文件的逻辑结构和物理结构转换的工作过程。

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

答:文件系统建立在由若干连续的逻辑块构成的存储空间中,根据用途逻辑块可分为:超级块、i节点区和数据区。

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

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

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

linux大作业及要求

linux大作业及要求

一、为企业架设web服务器,要求:1.建立WEB服务器,服务器名为,网站主目录为/var/xx/www,站点主页文件的搜索顺序为index.html index.php;服务器启动时的子进程数为5;使用端口为80。

网页内容为:班级名称,用户名,192.168.yy.12,2.每个同学为自己建立个人主页空间,在/home下对自己做限额,软配额限制15M,硬配额限制60M, i节点数不受限制。

每个同学都属于gp组,组的限额是用户限额的50倍。

网页内容为:学号,用户名,192.168.yy.12,/home/用户名/www 其中:XX为同学名字的最后一个字的拼音,yy为同学学号的后两位数字,十位为0的只取个位数字。

评分标准:1. 正确安装DNS和apache并配置地址。

(10分)2. 正确配置dns,添加主机记录,并能够正常解析的。

(30分)3. 正确配置站点,建立主页,建立用户及个人主页,并能正常访问。

(30分)4. 正确设置配额。

(20分)5. 将配置及测试过程整理成文档,格式规范,步骤完整、图表清晰。

(10分)二、为企业架设ftp服务器1.建立FTP服务器,服务器名字为,服务器的欢迎语为“welcometo login ftpserver”.允许匿名用户上传下载文件,匿名用户的根目录为/var/ftp/pub,匿名用户的最大传输速率为10Kb/s.2.为自己和自己前后相邻的两个同学建立账户(只有一个相邻的,就建立一个),账户名字为姓名的全拼,允许本地用户访问,禁止相邻两个同学的账号切换到主目录以外的目录。

3.对/home做磁盘限额,用户的软配额限制15M,硬配额限制60M, i节点数不受限制。

每个同学都属于gp组,组的限额是用户限额的50倍。

4.将windows主机的一个txt文件上传到ftp服务器,文档的内容为:姓名,学号,windows主机ip,192.168.yy.13.其中:XX为同学名字的最后一个字的拼音,yy为同学学号的后两位数字,十位为0的只取个位数字。

LINUX题库及参考答案

LINUX题库及参考答案

LINUX(UBUNTU)大作业Linux第一次作业一、选择题1、下列哪种说法是错误的( C ) 。

A.操作系统是裸机之上的第一层软件B.操作系统控制和管理全部的计算机资源C.Microsoft Office 是操作系统的一种D.操作系统应为用户提供便捷的操作界面2、以下说法中正确的是(C )。

A.Windows 8是单用户单任务操作系统B.MS-DOS是多用户多任务操作系统C.Linux是多用户多任务操作系统D.Unix是单用户多任务操作系统3、下列哪种说法是错误的( C ) 。

A.操作系统可用于控制和管理计算机系统资源B.操作系统可用于对各类任务进行调度C.操作系统可用于完成源代码编译D.操作系统应为用户提供便捷的操作界面4、Linux中系统超级管理员的帐户是(B )。

A.adminB.rootC.administratorD.superuser5、Linux系统是一个(D )的操作系统。

A.单用户、单任务B.单用户、多任务C.多用户、单任务D.多用户、多任务6、Linux是一个功能强大的操作系统,同时它是一个(C )。

A、商业软件B、共享软件C、自由软件D、专利软件7、自由软件的含义是(B )。

A.用户不需要付费B.软件可以自由修改和发布C.只有软件作者才能向用户收费D.软件发行商不能向用户收费8. 超级用户登录后的操作提示符是( B ) 。

A、$B、#C、&D、@9、在某终端显示信息为:[user@localhost ~]$,其中“~”表示(D )。

A.当前目录B.名为~的主机C.系统根目录/D.用户user的家目录10、关于Linux内核版本的说法,以下错误的是(C )。

A.表示为主版本号.次版本号.修正号B.1.2.3表示稳定的发行版C.1.3.3表示稳定的发行版D.2.2.5表示对内核2.2的第5次修正二、简答题1、请简述Linux操作系统有什么优点?答:Linux的主要优点包括:•提供了先进的网络支持:内置TCP/IP协议;•真正意义上的多任务、多用户作系统;•与UNIX系统在源代码级兼容,符合IEEE POSIX标准;•支持数十种文件系统格式;•开放源代码,用户可以自己对系统进行改进;•采用先进的内存管理机制,更加有效地利用物理内存。

LINUX大作业

LINUX大作业

Linux系统编程大作业一、实验题目实现一个FTP服务系统二、实验目的通过该实验,掌握Linux环境下的多线程/进程编程技术、文件操作、用户权限管理、进程间通信技术三、实验要求基于客户/服务器交互模式,采用TCP/IP通信协议,实现一个支持远程文件传输的客户/服务器软件,支持文件的上传和下载。

其中客户端软件命名为myftp,服务器软件命名为ftpserver,具体功能需求如下:(一)服务器1)启动方式。

执行ftpserver [IP地址] port启动FTP服务。

其中IP地址为可选项。

若不提供服务器IP地址,FTP服务将自动绑定到本地网络的IP。

2)用户认证与权限管理。

为FTP客户提供基于用户名/密码认证的服务模式,只有授权用户才可以访问FTP服务。

与此同时,对文件/目录的访问,也实现基于授权的访问机制,即只有授权用户才可以对指定文件进行读写操作。

用户只有在具备写权限操作的目录上才能上传文件。

(可直接集成Linux服务器系统的用户管理)3)并行执行功能。

为提高系统性能,服务器将采用多进程/线程技术响应客户请求。

当客户通过身份验证后,服务器将创建一个新的进程/线程来响应用户请求,提供服务。

4)服务器支持的客户文件操作。

登录成功后,客户可在服务器执行以下操作:创建/删除目录(mkdir/rmdir)、显示当前路径(pwd)、切换目录(cd)、查看当前目录下的所有文件(ls)、上传单个/多个文件(put/mput)、下载单个/多个文件(get/mget)。

5)服务传输模式。

支持二进制(默认)及ASCII传输模式。

用户可通过执行binary/ascii 命令切换传输模式。

6)站点计数与用户管理功能。

统计服务器站点的当前活动用户数及自运行以来的访客总数。

系统管理员可在服务器软件运行终端窗口执行以下命令:A)count current:当前活动用户数B)c ount all:显示系统访客总数C)l ist:显示当前在线的所有用户的用户名D)kill username:强制删除某个用户。

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

武汉轻工大学
数学与计算机学院
2019-2020学年第一学期
Linux大作业
指导老师: **
专业:信息管理与信息系统
班级:信管1601班
学号: ***********
姓名: **
2019年10月29 日
历史
1991年,还在芬兰赫尔辛基大学上学的Linus Torvalds在自己的Intel 386计算机上开发了属于他自己的第一个程序,并利用Internet发布了他开发的源代码,将其命名为Linux,从而创建了Linux操作系统,并在同年公开了Linux的代码,从而开启了一个伟大的时代。

在之后的将近30年的时间里,越来越多的工程师投入到Linux,帮助不断完善Linux的功能。

现在的Linux系统架构凭借优秀的分层和模块化的设计,融合了大量的设备和不同的物理架构。

这篇文章,也是对Linux系统的一个非常简单的介绍,主要讲解Linux的进程调度、内存管理、设备驱动、文件系统、网络模块。

Linux内核架构图
上图就是Linux内核的架构图,从硬件层--->操作系统内核--->应用层,这套系统架构的设计应用于各类软硬件结合的系统上,比如物联网系统,单片机系统、机器人等领域。

进程调度
进程在Linux系统中称为process或task。

操作系统中进程的数据结构包含很多元素,诸如:地址空间、进程优先级、进程状态、信号量、占用的文件等,往往用链表链接。

CPU在每个系统滴答(Tick)中断产生的时候检查就绪队列里边的进程(遍历链表中的进程结构体),如有符合调度算法的新进程需要切换,保存当前运行的进程的信息(包括栈、地址等)后挂起当前进程,然后运行新的进程,这就是进程调度。

CPU调度的基本依据是进程的优先级。

调度的终极目标是让高优先级的进程能及时得到CPU的资源,低优先级的任务也能公平的分配到CPU资源。

不过因为保存当前进程的信息所以进程的切换本身是有成本的,调度算法同样需要考虑效率。

在早期Linux内核中,就是采用轮询算法来实现的,内核在就绪的进程队列中选择高优先级的进程执行,每次运行相等时间,该算法简单直观,但仍然会导致一些低优先级的进程长时间不能执行。

为了提高调度的公平性,在后来Linux内核(2.6)中,引入了CFS调度器算法。

CFS引入虚拟运行时间的概念,虚拟运行时间用task_struct->se.vruntime表示,通过它来记录和度量进程应该获得的CPU运行时间。

在理想的调度情况下,任何时候所有的进程都应该有相同的task_struct->se.vruntime值。

因为每个进程都是并发执行,没有进程会超过理想状态下应该占有的CPU时间。

CFS选择需要运行的进程的逻辑基于task_struct->se.vruntime值,它总是选择task_struct->se.vruntime值最小的进程来运行(为了公平)。

CFS使用基于时间排序的红黑树来为将来进程的执行时间线。

所有的进程按task_struct->se.vruntime关键字排序。

CFS从树中选择最左边的任务执行。

随着系统运行,执行过的进程会被放到树的右侧,逐步让每个任务都有机会成为最左边的进程,从而让每个进程都能获取CPU资源。

总的来说,CFS算法首先选一个进程,当进程切换时,该进程使用的CPU时间会加到该进程task_struct->se.vruntime里,当task_struct->se.vruntime的值逐渐增大到别的进程变成了红黑树最左边的进程时,最左边的进程被选中执行,当前的进程被抢占。

内存管理
内存,一种硬件设备,操作系统对其寻址,找到对应的内存单元,然后对其操作。

CPU 的字节长度决定了最大的可寻址空间,32位机器最大寻址空间是4G Bytes,64位机器最大寻址空间是2^64 Bytes。

最大寻址空间和物理内存大小无关,称之为虚拟地址空间。

Linux内核把虚拟地址空间分为内核空间和用户空间。

每个用户进程的虚拟地址空间范围是0~TASK_SIZE。

从TASK_SIZE~2^32或2^64的区域保留给内核,不能被用户进程访问。

虚拟地址空间与物理内存的映射
绝大多数情况下,虚拟地址空间比实际物理内存大,操作系统需要考虑如何将实际可用的物理内存映射到虚拟地址空间。

Linux内核采用页表(page table)将虚拟地址映射到物理地址。

虚拟地址和进程使用的用户&内核地址有关,物理地址用来寻址实际使用的内存。

上图所示,A和B进程的虚拟地址空间被分为大小相等的等份,称为页(page)。

物理内存同样被分割为大小相等的页(page frame)。

进程A第1个内存页映射到物理内存(RAM)的第4页;进程B第1个内存页映射到物理内存第5页。

进程A第5个内存页和进程B第1个内存页都映射到物理内存的第5页(内核可决定哪些内存空间被不同进程共享)。

页表将虚拟地址空间映射到物理地址空间。

inode 结构
inode并不是组织文件的唯一方式,最简单的组织文件的方式,是把文件依次顺序的放入存储设备,但如果有删除操作的话,删除造成的空余空间夹杂在正常文件之间,很难利用和管理;复杂方式可以用来链表来做,每个数据块有个指针,指向属于同一文件的下一个数据块,这样的好处是可以利用零散的空余空间,坏处是对文件的操作必须按照线性方式进行,如果随机读取就必须要遍历链表,直到目标位置。

由于这一遍历不是在内存进行,所以速度很慢。

inode既可以充分利用空间,在内存占据空间不与存储设备相关,解决了上面的问题。

但inode也有自己的问题。

每个inode能够存储的数据块指针总数是固定的。

如果一个文件需要的数据块超过这一总数,inode需要额外的空间来存储多出来的指针。

网络模型
Host-to-Host层:相当于OSI模型的物理层和数据链路层,负责将数据从一个计算机传输到另一个计算机。

在Linux内核的角度来看,这一层是通过网卡的设备驱动程序实现的。

Internet层:相当于OSI模型的网络层,负责让网络中的计算机可以交换数据(这些计算机并不一定是直连的)。

该层同时负责传输的包分成指定的大小,因为包在传输路径上每个计算机支持的最大网络包的大小不一样,在传输时数据被分割成不同的包,在接收端再组合。

该层为网络中的计算机分配唯一的网络地址。

Transport层:相当于OSI模型的传输层,负责让两个连接的计算机上运行的应用程序之间的数据传输。

比如,两台计算机上的客户端和服务端程序,通过端口号来识别通信的应用程序。

App层:相当于OSI模型的会话层、表示层、应用层,网络中不同计算机的两个应用程序建立连接后,这一层负责实际内容的传输。

Linux内核子系统的实现通过C代码实现,每个层只能和它上下层通信。

设备通信
内核访问外设主要有两种方式:I/O端口和I/O内存映射。

具体不展开介绍了。

内核动态接收外设发来的请求(数据)主要通过两种方式:轮询和中断。

轮询:周期性的访问查询设备是否有数据,如果有,便获取数据。

这种方法比较浪费CPU 资源。

中断:核心思想是外设有请求时主动通知CPU,中断的优先级最高,会中断CPU的当前进程运行,每个CPU都提供了中断线,每个中断由唯一的中断号识别,内核为每个应用的中断提供一个中断处理方法。

当有数据已准备好可以给内核或者间接被一个应用程序使用的时候,外设出发一个中断。

使用中断确保系统只有在外设需要处理器介入的时候才会通知CPU,提高了效率。

PS:块和扇区的概念:块是一个指定大小的字节序列,用于保存在内核和设备间传输的数据,块的大小可以被设置,默认是4096 bytes,扇区是存储设备操作的最小单元,默认是512 Bytes,块是一段连续的扇区。

与外设的交互
说白了就是输入(input)、操作(operate)、输出(ouput)的操作。

内核需要完成三件事情:
1. 针对不同的设备类型实现不同的方法来寻址硬件。

2. 必须为用户空间提供操作不同硬件设备的方法,且需要一个统一的机制来确保尽量有限的编程工作。

3. 让用户空间知道在内核中有哪些设备。

相关文档
最新文档