项目一:linux第一次作业

1、Linux的基本概况


Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多cpu的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。


Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。




2、Linux系统的最初十年






简单的说LInux的雏形是由于一个名叫Linus Torvalds的芬兰大学生想要了解intel的cpu386,他认为比较好的学习方法就是自己编写一个操作系统的内核。处于这种目的,加上他对当时Unix 变种版本(即Minix)对于80386类机器的脆弱支持十分不满,他决定要开发出一个全功能的、支持POSIX标准的、类Unix的操作系统内核,该系统吸收了BSD和System V的优点,同时摒弃了它们的缺点。


 Linux 操作系统的诞生、发展和成长过程依赖于以下五个重要支柱:


  UNIX 操作系统、    MINIX操作系统、      GNU 计划、       POSIX 标准 、   Internet 网络。 






Unix操作系统:


   UnixX 操作系统是美国贝尔实验室的Ken.Thompson和Dennis Ritchie 于1969 年夏在DEC PDP-7 小型计算机上开发的一个分时操作系统。当时使用的是BCPL 语言(基本组合编程语言),后经Dennis Ritchie 于1972 年用移植性很强的C语言进行了改写,使得UNIX 系统在大专院校得到了推广。


Minix操作系统:


           MINIX 系统是由Andrew S. Tanenbaum(AST)开发的。AST 是在荷兰Amsterdam 的Vrije 大学数学与计算机科学系统工作,是ACM 和IEEE 的资深会员。 作为一个操作系统,MINIX 并不是优秀者,但它同时提供了用C语言和汇编语言编写的系统源代码。这是第一次使得有抱负的程序员或hacker 能够阅读操作系统的源代码。
GNU 计划:
  GNU 计划和自由软件基金会FSF(the Free Software Foundation)是由Richard M. Stallman 于1984 年一手创办的。旨在开发一个类似UNIX 并且是自由软件的完整操作系统:GNU 系统
各种使用Linux 作为核心的GNU 操作系统正在被广泛的使用。虽然这些系统通常被称作"Linux",但是Stallman 认为,严格地说,它们应该被称为GNU/Linux系统。
        到上世纪90 年代初,GNU 项目已经开发出许多高质量的免费软件,其中包括有名的emacs 编辑系统、bash shell 程序、gcc 系列编译程序、gdb 调试程序等等。这些软件为Linux 操作系统的开发创造了一个合适的环境。这是Linux 能够诞生的基础之一,以至于目前许多人都将Linux 操作系统称为“GNU/Linux”操作系统。
 POSIX 标准:
      POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准。该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口。用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植和运行。
在90 年代初,POSIX 标准的制定正处在最后投票敲定的时候,那是1991-1993 年间。此时正是Linux刚刚起步的时候,这个UNIX 标准为Linux 提供了极为重要的信息,使得Linux 能够在标准的指导下进行开发,并能够与绝大多数UNIX 操作系统兼容。在最初的Linux 内核源代码中(0.01 版、0.11 版)就已经为Linux 系统与POSIX 标准的兼容做好了准备工作。


Internet 网络:
          Internet是linux开发、交流、发展的信息和资源的交流平台。


3、Linux的特点、优势及发行版本        


 Linux的特点:       


     开放性:挃系统遵循丐界标准规范,特别是遵循开放系统互连(OSI)国际标准。


  多用户:是挃系统资源可以被丌同用户使用,每个用户对自己的资源(例如:文件、设备)有特定的权限,互丌影响。


  多任务:它是挃计算机同时执行多个程序,而丏各个程序的运行互相独立。


  良好的用户界面:Linux向用户提供了两种界面:用户界面和系统调用。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚劢条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。


  设备独立性:是挃操作系统把所有外部设备统一当作成文件来看待,只要安装它们的驱劢程序,任何用户都可以象使用文件一样,操纵、使用这些设备,而丌必知道它们的具体存在形式。Linux是具有设备独立性的操作系统,它的内核具有高度适应能力。


  提供了丰富的网络功能:完善的内置网络是Linux一大特点。


  可靠的安全系统:Linux采取了许多安全技术措施,包括对读、写控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。


  良好的可移植性:是挃将操作系统从一个平台转移到另一个平台使它仍然能挄其自身的方式运行的能力。Linux是一种可移植的操作系统,能够在从微型计算机到大型计算机的任何环境中和任何平台上运行


Linux系统的优势:


  Linux系统优势一:跨平台的硬件支持


  Linux系统优势二:丰富的软件支持


  Linux系统优势三:多用户多任务


  Linux系统优势四:可靠的安全性


  Linux系统优势五:良好的稳定性


  Linux系统优势六:完善的网络功能






Linux系统的发行版本:












1.RHEL红帽          


      Redhat,应该称为Redhat系列,包括


           (1)RHEL  (Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本,稳定性非常好,适合服务器使用)


           (2)Fedora Core  (由原来的Redhat桌面版本发展而来,免费版本,稳定性较差,最好只用于桌面应用)


           (3)CentOS  (RHEL的社区克隆版本,免费版本,稳定性非常好,适合服务器使用)






2. CentOS       


       社区企业操作系统(Community Enterprise Operating System,Centos)


         CentOS 是RHEL源代码再编译的产物,而且在RHEL的基础上修正了不少已知的 Bug ,相对于其他 Linux 发行版,其稳定性值得信赖。






 3.Fedora        


        由全球社区爱好者构建的面向日常应用的快速且强大的操作系统。它允许任何人自由地使用、修改和重发布,无论现在还是将来。它由一个强大的社群开发,这个社群的成员以自己的不懈努力,提供并维护自由、开源代码的软件和开放的标准。Fedora 项目由 Fedora 基金会管理和控制,得到了 Red Hat 的支持。Fedora (第七版以前为Fedora Core)是一款基于 Linux 的操作系统,也是一组维持计算机正常运行的软件集合。其目标是创建一套新颖、多功能并且自由和开源的操作系统。






 4.OpenSUSE  


      德国著名的Linux系统,全球范围内有着不错的声誉及市场占有率,发行量在欧洲占第一位。。OpenSUSE对个人来说是完全免费的,包括使用和在线更新。OpenSUSE被评价为最华丽的Linux桌面发行版,甚至超越win7,但它的优势绝不仅仅局限于win7还要绚丽的用户交互界面,其性能也绝不亚于其他Linux桌面发行版!






5.Gentoo     


     它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点。 Gentoo的哲学是自由和选择。得益于一种称为Portage的技术,Gentoo能成为理想的安全服务器、开发工作站、专业桌面、游戏系统、嵌入式解决方案或者别的东西——你想让它成为什么,它就可以成为什么。






 6.Debian       


      Debian最具特色的是apt-get / dpkg包管理方式,其实Redhat的YUM也是在模仿Debian的APT方式,但在二进制文件发行方式中,APT应该是最好的了。Debian的资料也很丰富,有很多支持的社区,有问题求教也有地方可去。
    分为三个版本分支(branch):
    (1)unstable,为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。
    (2)testing,经过unstable中的测试,相对较为稳定,也支持了不少新技术。
    (3)stable,一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。
 


7.Ubuntu      




       Ubuntu是一款基于Debian派生的操作系统(严格来说不能算一个独立的发行版本),对新款硬件具有极强的兼容能力。  特点是界面非常友好,容易上手,对硬件支持非常全面,是最适合做桌面系统的Linux发行版本,同时Ubuntu也可用于服务器领域。


      Ubuntu的目标在于为一般用户提供一个最新的,同时又相对稳定的主要自由软件构建而成的操作系统。Ubuntu具有强大的社区力量,用户可以方便地从社区获取帮助。
设计shell脚本程序,运行结果如下: 当用户输入相应的数字执行相应的功能。 2、设计shell脚本程序,在屏幕上输出操作系统的信息,包括计算机名、Linux分发版本名称、Linux内核版本和当前的IP地址。 3、设计shell脚本程序,要求用户对/home目录下的文件进行备份,压缩为Linux系统中常用的tar.gz格式。 4、设计shell脚本程序,假设用户建立了目录A和目录B,目录中不包含子目录,要求用户编写个脚本程序,比较两个目录内文件的差异。 5、设计个shell程序,添加个新组为class1,然后添加属于这个组的30个用户,用户名的形式为stdxx,其中xx从01到30。 6、设计个shell程序计算n的阶乘。要求: (1)从命令行接收参数n; (2)在程序开始后立即判断n的合法性,即是否有参数,若有是否为正整数,若非法请给错误提示; (3)最后输出计算的结果。 7、设计个shell程序,在每月第天备份并压缩/etc目录的所有内容,存放在/root/bak目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。 8、判断当前工作目录下所有的文件类型,如果是目录显示目录名,如果是文件查看文件内容,如果都不是,显示提示信息。 9、打印1-99之间的奇数到文件。 10、根据从键盘输入的学生成绩,显示相应的成绩等级,其中60分以下为“Failed!”,60~70分为“Passed!”,70~80分为“Medium!”,80~90分为“Good!”,90~100分为“Excellent!”。如果输入超过100分或低于0分,则显示错误分数提示。 文件和目录部分 1、编写程序,打开个文本文件 (1)读取其中内容,将其复制到个新建文件中; (2)将文件中的小写字母转换成为大写字母 ,其他字符不变。 2、编写程序,读取当前目录下的内容,并将其打印输出到终端。 3、编写程序,在/tmp目录下面建立个test目录,然后在test目录下建立个空文件hello.txt,注意函数出错处理。 4、编写程序实现个简单的员工档案管理系统,具备简单的员工资料增加、删除和查询等功能,并采用二进制文件保存员工的资料信息。 5、为了便于文件的管理和传输,某些时候需要将特别大的文件切割为多个指定长度小的文件。现有个文件管理程序需要实现大文件切割功能,要求用户编写个函数实现该功能。 6、编写程序,根据输入的参数创建个目录文件。 7、编写程序,首先输出当前的工作目录,然后更改工作目录,输出更改后的工作目录。 8、将存放学生各种信息的文件中的学生信息读出,重新组成个存放所有学生的前3门成绩的文件。 9、创建个新目录,然后删除此目录。 10、编写程序,编写shell命令中的ls命令。 11、编写程序,编写shell命令中的pwd命令。 getcwd()会将当前工作目录的绝对路径复制到参数buffer所指的内存空间中,参数size为buf的空间大小。 12、编写程序,编写shell命令中的cp命令。 13、编写Shell命令中的cat命令。 14、编写Shell命令中的tail命令。(用缓冲技术来提高效率) 15、编写Shell命令中的ls -i命令。 进程和信号部分 1、编写程序,获取并输出子进程和父进程的相关信息。 2、编写程序,要求用户设计多进程应用程序,改程序作为父进程执行,在执行过程中能够通过调用自身创建个子进程。父进程和子进程均在终端中输出条信息,标识自己的身份。 3、守护进程是运行于系统后台的进程,常用于提供各种系统服务和系统日志管理功能。现要求用户编写个守护进程应用程序,定时向日志文件写入字符串。 4、编写程序,在不同的进程间实现信号发送和接收,同时在传达过程中附加其他信息。 5、编写程序,使用alarm函数在系统中设置个定时器,期间对整数进行递减操作,并输出到屏幕。 6、现有个应用程序在死循环中执行,要求用户让程序能够带捕捉用户按下的组合键Ctrl+C,终止应用程序的执行。 7、Linux系统提供了alarm( )和setitimer( )系统调用作为定时器的功能,要求用户使用这两个函数设计程序,让程序每隔秒发出个SIGALRM信号,每隔0.5秒发出个SIGVTALRM信号。 8、编写程序,在主进程中创建个子进程,子进程进行空循环,不停地输出“hello world!”字符串,主进程休眠段时间后,在主进程中结束子进程,随后主进程也退出。 9、编写程序,在程序中使用命令行形式显示程序所在当前文件夹下的内容。 10、编写程序,得到当前进程的标识号,并将它打印输出,随后写入个文件中。 11、在Linux系统下使用execl( )函数代替个hello.c文件,在hello.c文件中实现从1到100的累加计算。 网络编程部分 1、在Linux系统下,通过TCP协议的套接字编程,在服务器端的计算机上实现累加求和的计算,数据全部从客户端传送,然后在服务器端计算的和输出到终端,并传送回客户端。 2、在Linux系统下,实现IP地址转换,将名字地址转换为数字地址。 3、利用read函数编写读取客户端数据(提示在程序中,首先监听个端口,如果有客户端连接这个端口则接受这个连接,然后用read函数读取远程主机发送的数据,输出这些数据以后结束这个程序)。 4、编程实现个面向连接的套接字服务程序和客户端程序。客户端打开个文件,把文件内容传送给服务器端,服务器端接受到文件内容后,保存在/tmp目录下。 ...... ......
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值