第01周 作业内容

1、描述计算机的组成及其功能。

答:经典的计算机系统体系结构,即冯.诺依曼体系结构主要由控制器、运算器、存储器、输入设备和输出设备组成。
其中:

  • 控制器用于控制、协调计算机各部件运转;
  • 运算器用于数据的运算;
  • 存储器用于存储要运行的程序、数据及数据处理结果;
  • 输入设备主要用于下达指令、提供数据等;
  • 输出设备主要用于输出数据处理的结果。

2、描述内核功能以及作用

答:Linux Kernel遵循了从Multics就一直延续下来的思想,也就是内核只作为其它进程及硬件的监控和管理者。内核直接运行在硬件之上并对硬件资源进行管理和虚拟化,将虚拟化得到的虚拟资源分配给需要的工作进程用以支撑工作进程的正常运行,并在工作进程运行期间进行监控、管理和调度,使得在共用硬件资源的每个工作进程看来自己都是在“独占”式地使用硬件资源。以达到系统内的各个进程安全、可靠、稳定地运行。

3、按系列罗列常见Linux的发行版,并描述不同发行版之间的联系与区别。

答:常见的Linux发行版主要有几大系列

  1. Slackware
    • S.u.S.E
      • SuSE Linux Enterprise System : SLES
      • OpenSUSE
  2. Debian
    • Ubuntu
      • Linux Mint
      • Deepin
    • Kali
    • Raspbian
  3. Redhat
    • Redhat Enterprise Linux : RHEL
      • CentOS
      • Scientific Linux
      • Oracle Linux
      • RedFlag Linux
    • Fedora
  4. ArchLinux
    • KaOS
    • Manjaro Linux
  5. Gentoo
  6. LFS

各不同的发行版之间最大的联系就是都是基于Linux内核并结合大最GNU程序从而形成了一套完整的操作系统。所以说各不同的发行版之间的联系就是遵循相同的哲学思想和体系结构。所不同的是不同的发行版所采用的构建方式、包管理方式、操作系统面向的硬件环境、使用人群等等各不相同,这就造就了一个个不同的发行版。

4、描述常见的开源协议(GPL,LGPL, BSD,Apache等)以及开源协议的区别

答:

  1. 对几大常见的开源协议(GPL、LGPL、BSD、Apache)的描述如下:
    • GPL:GPL名称为GNU通用公共许可证(GNU Public License),主要是为了保证自由软件对所有用户都是自由的,具有极强的传染性。
    • LGPL:LGPL与GPL不同,它允许商业软件以引用类库的方式使用LGPL的软件产品。
    • BSD:BSD许可证原先是用在发表4.4BSD/4.4BSD-Lite各个版本上面的,后被众多开源软件所采纳。
    • Apache:Apache是ASF所采用的协议,相对较宽松且商业友好。
  2. 几大开源协议的区别:
    • BSD、Apache与GPL、LGPL最大的区别是,BSD、Apache在他人修改源码后,可以将源码转为闭源,但GPL、LGPL不可以。
    • BSD与Apache最大的区别是,Apache每一个修改过的源代码文件都必须放置版权说明,而BSD不需要。
    • GPL与LGPL最大的区别是,GPL新增的代码也必须也采用GPL,而LGPL新增代码可以更换许可证或闭源。

5、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。

答:Linux哲学思想主要有以下几个方面:

  1. 一切皆文件:
    就是把几乎所有的软硬件资源全部抽象为文件,包括硬件设备、进程信息、通信接口等。这样处理方式可以大大简化并统一对这些资源的访问接口,比如可以用open(), read(), write(), close(), delete(), create()等几个标准接口函数来完成对几乎所有资源的创建、打开、数据读取、写入、关闭、删除的通用操作。
  2. 由众多功能单一的程序组成:
    具体是指:
  • 一个程序只做一个事儿,并且做好。这一方面强调了程序功能要单一,这样在就可以大大减小单一程序的复杂度,降低了程序开发难度,减小了程序出现缺陷的可能性,使出现精品程序的可能性大大增加了,同时这一思想也使程序更加的原子化,便于程序功能的复用,减少了避免了重复劳动。
  • 组合小程序完成复杂任务。从理论上来讲,任何一项复杂任务都可能分解为一定数量的相对简单的小任务。再基于前一条原则,已经有了足够数量、功能的高质量的单一功能程序,所以通过这些程序的组合就可以较简单地完成复杂的任务,这样不但简化了任务的复杂度,减小了编制复杂软件系统的难度,而且还避免了重复造轮子。
  1. 程序启动后尽量避免与用户交互:
    这个方面从某种程度上来说来源于第2条的第一个方面,因为程序都是单一功能的,那么在执行的过程中就没有过多的需要用户参与的需要,再加上大部分程序把运行过程中可能需要与用户交互的内容都做成了可以通过程序的选项、参数来进行前期指定的,这样就可以实现程序运行过程中不需要用户的参与,这一做法的好处就是可以做到程序的无人值守运行,也就是可以做到以编程的方式来自动化地完成任务。
  2. 使用文本文件保存配置信息:
    因为文本文件可以说是计算机系统里最常见的文件形式了,可以说所有的操作系统都支持文本文件,并且都内置了对文本文件的处理能力,而且文本文件同时也很容易被人阅读、理解、编写、修改,所以可以说文本文件是一件非常好的用于人与计算机进行事项约定的工具。所以用文本文件保存配置信息不但简化了管理员人对配置信息的把控,也简化了各程序配置文件处理相关逻辑的编写。

6、描述Linux目录结构以及目录结构命名规定。

答:Linux的目录结构是以“/”(根)为原初起点,有N层组织,形成的倒置树状结构。其命名规定为:

  1. 严格区分大小写。
  2. 目录也是文件,在同一路径下,文件(目录)不能同名。
  3. 支持使用除"/"以外的任意字符。
  4. 最长不能超过255个字符。