开源协议及Linux哲学思想
1、描述计算机的组成及其功能。
计算机由运算器,控制器,存储器,输入设备和输出设备这5个主要部件组成。最初计算机中没有存储器,1945年6月诺依曼提出了在计算机中采用设置内存贮器的理论才使得计算机的五大部分构成的基本成型。
(1)运算器:主要功能是对数据进行各种运算和处理,算术运算、逻辑运算等
(2)控制器:控制程序执行,控制器从存储器中逐条取出指令,分析每条指令规定的是什么操作以及所需数据的存放位置等,然后根据分析的结果向计算机其它部分发出控制信号,统一指挥整个计算机完成指令所规定的操作。
(3)存储器:存储程序和各种数据信息,并能在计算机运行过程中高速、自动地完成程序或数据的存取。数据是以二进制的方式存储。
(4)输入设备:用来向计算机输入各种原始数据和程序的设备,如键盘、鼠标等。把多媒体信息或人工操作转化为二进制输入到计算机中
(5)输出设备:从计算机输出各类数据的设备。如显示器、打印机等。从计算机中把二进制信息转化为可识别的多媒体信息。
2、描述内核功能以及作用
内核是Linux操作系统的基础,主要功能包括:
(1)系统调用接口:为用户空间的用户程序和函数库调用内核空间的系统程序提供接口。
(2)进程控制子系统:包括进程简通信(IPC)、进程调度程序、内存管理。其中内存管理,管理多进程对内存的使用。为所有进程在有限的可用内存资源上建立了一个虚拟地址空间。Linux支持虚拟内存,将正在使用的程序块保留在内存中,其余的程序块则保留在磁盘中。需要新的程序块时,在磁盘和内存间交换程序块。
(3)虚拟文件系统(VFS)是 Linux 内核中非常有用的一个方面,因为它为文件系统提供了一个通用的接口抽象。文件系统层之下是缓冲区缓存。这个缓存层通过将数据保留一段时间优化了对物理设备的访问。
(4)设备驱动程序:字符设备与虚拟文件系统进行交互,块设备通过VFS的缓冲区进行交互。
(5)硬件控制:实现对底层硬件的控制并为上层内核中其它部分提供服务。
3、按系列罗列常见Linux的发行版,并描述不同发行版之间的联系与区别。
一、slackware系列:
(1)SUSE Linux Enterprise Server(SLES),SUSE Linux 原来是德国的 SuSE Linux AG公司发行维护的Linux发行版,是属于此公司的注册商标。2004年这家公司被Novell公司收购。2010年Novell又被Attachmate收购了.
(2)openSUSE 项目是由 Novell 发起的开源社区计划,openSUSE 操作系统和相关的开源程序会被SUSE Linux Enterprise(比如 SLES 和 SLED)使用。openSUSE对个人来说是完全免费的,包括使用和在线更新。
二、debian系列:
(1)ubuntu一个以桌面应用为主的Linux操作系统,Ubuntu基于Debian发行版
(2)mint是一份基于Debian和Ubuntu的Linux发行版,其目标是提供一种更完整的即刻可用体验,拥有一个巨大的可安装软件库
三、redhat系列:
(1)RHEL:RedHat Enterprise Linux,每18个月发行一个新版本
(2)CentOS:是RedHat Enterprise Linux编译出来的社区版本,和RHEL几乎同步更新
(3)中标麒麟:国产的Linux
(4)Fedora:每6个月发行一个新版本,是RHEL的实验田,不太稳定,功能更新比较快,如果某项新技术在这上面运用比较稳定后会被RHEL吸收到新的版本中。
四、ArchLinux系列:
Arch Linux(或称Arch)是一种以轻量简洁为设计理念的Linux发行版。其开发团队秉承简洁、优雅、正确和代码最小化的设计宗旨。Arch Linux 项目受 CRUX 启发,由 Judd Vinet 于2002年启动。
五、Gentoo系列:
Gentoo是一个基于Linux的自由操作系统,它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点。 Gentoo的哲学是自由和选择。得益于一种称为Portage的技术,Gentoo能成为理想的安全服务器、开发工作站、专业桌面、游戏系统、嵌入式解决方案或者别的东西--你想让它成为什么,它就可以成为什么。
六、LFS:Linux From scratch 通过产品说明书一步步的编译制作自己的Linux。
七、Android:安卓系统也是采用Linux内核,加上工具集(busybox)和java虚拟机实现的。ndroid操作系统最初由Andy Rubin开发,被谷歌收购后则由Google公司和开放手机联盟领导及开发,主要支持手机与平板
4、描述常见的开源协议(GPL,LGPL, BSD,Apache等)以及开源协议的区别
(1)GPL许可证:(GNU General Public License)允许用户任意复制、传递、修改及再发布,但是它具有“传染性”,基于自由软件修改再次发布的软件,仍需遵守GPL约定,也要开放源码。因此会有安全性的顾虑。
(2)LGPL许可证:相对GPL较为宽松,允许不公开全部源代码。不需要对源码的修改之处,提供说明文档。
(3)Mozilla许可证:可以修改源码,但修改后也要开源,且需要对源码的修改之处提供说明文档。不要求新增代码采用同样的许可证
(4)Apache许可证:修改源码后可以闭源,但每个修改过的文件都必须放置版权说明。
(5)BSD许可证:修改源码后可以闭源,不要求修改过的文件放置版权说明,衍生的软件广告不可以使用源码产品的名字进行促销。
(6)MIT许可证:修改源码后可以闭源,不要求修改过的文件放置版权说明,允许衍生的软件广告使用源码产品的名字进行促销。
5、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
(1)一切皆文件(包括硬件)
所有的数据或对象都是放在文件中,比如所有的硬件在/dev目录下都有对应的文件。再比如系统登录账号用户名和密码也是放在文件中。
(2)小型,单一用途的程序
每个程序实现某一个简单的功能,功能专一,专注于如何把输入转化为输出,实现某一功能。
(3)链接程序,共同完成复杂的任务
通过写脚本或命令连接符把简单功能的命令串联起来,组合起来实现复杂的功能,完成复杂的任务。用前一个命令的输出做为下一个命令的输入。
(4)避免令人困惑的用户界面
图形用户界面虽然好看,无法明确操作是否有效。操作路径需要图文并茂的方式进行描述,用文字描述操作会相对麻烦。
(5)配置数据存储在文本中
所有的配置信息都是放在文本文件中,用户可以随时查看文本内容(只要有权限)。比如IP地址的配置信息就是一个很好例子。Linux下的所有软件组件的配置信息都是文本方式存储的。
6、描述linux目录结构以及目录结构命名规定。
linux目录结构是一个倒放的树形结构(层级结构)。根目录只有一个,是"/"。所有子目录或文件都从根目录开始一层层定义放置的位置,都可以从根目录开始找到它。
常见得目录结构说明如下:
/bin:供所有用户使用的二进制命令文件
/sbin:供系统管理员使用的二进制命令文件
/boot:启动或引导加载器所需的所有静态文件:有kernel,initramfs(initrd),grub等
/dev:存储设备文件或特殊文件
/etc:系统程序的配置文件,只能为静态文件。
/home:普通用户的家目录的缺省位置,用户目录缺省为/home目录下与用户名同名的子目录。
/root 管理员的家目录
/lib:为系统启动或根文件系统上的应用程序(/bin和/sbin等)提供基本共享库文件,以及为内核提供可装载的内核模块。目录下的libc.so.*是动态链接的C库,ld*是运行时链接器/加载器,modules子目录用于存储内核模块的目录。
/lib64:64位系统特有的存放64位的共享库的路径。
/media:便携式设备挂载点
/mnt:其它文件系统挂载点
/opt:第三方应用程序的安装位置
/srv:当前主机为服务提供的数据
/tmp:临时文件目录,可供所有用户写入和读取程序产生的临时文件
/usr:全局共享的只读目录结构,本身也是层次结构,其子目录share一般用来存放命令手册或自带文档等。
/usr/local:让系统管理员安装本地应用程序,也通常用于安装第三方程序。避免覆盖/usr目录下的系统程序的版本。
/var:存储经常发生变化的数据文件。
/proc:为内核及进程存储其相关信息的基于内存的虚拟文件系统,多为内核参数。
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径。为Linux统一设备模型作为管理之用。