1、描述计算机的组成及其功能。
2、描述内核功能以及作用
3、按系列罗列常见Linux的发行版,并描述不同发行版之间的联系与区别。
4、描述常见的开源协议(GPL,LGPL, BSD,Apache等)以及开源协议的区别
5、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
6、描述linux目录结构以及目录结构命名规定。
计算机的组成及其功能
世界上第一台现代电子计算机ENIAC,全称为Electronic Numerical Integrator And Computer,诞生于1946年2月14日的美国宾夕法尼亚大学(Upenn)
-
ENIAC:
- CPU: 运算器、控制器、寄存器、缓存
- 存储器:内存、RAM(Random Access Memory)
- Input:下指令,提供数据等
- Output:输出数据
-
计算机硬件组成
- 运算器
主要进行算术与逻辑运算的功能部件
- 存储器
存储运算所需的数据的存储单元
- 控制器
将指令从存储器中取出并分析执行的部件
- 输入输出设备
输入或输入数据用以人机交互的设备
- 运算器
内核功能以及作用
内核,是一个操作系统的核心。是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。
进程管理
定时器timer
中断管理(interrupt management)
内存管理
模块管理(module management)
虚拟文件系统接口(VFS layer)
文件系统(file system)
设备驱动程序(device driver)
进程间通信(inter-process communication)
网络管理(network management)
系统启动(system init)等操作系统功能的实现
主要作用:
- 系统调用接口:SCI 层提供了某些机制执行从用户空间到内核的函数调用。内核提供一种硬件抽象的方法来完成对硬件操作,因为这些操作是非常复杂的,硬件抽象隐藏了复杂性,为程序和硬件提供了一套简洁,统一的接口,使程序设计更为简单。
- 进程管理:进程管理的重点是进程的执行。在内核中,这些进程称为线程,代表了单独的处理器虚拟化(线程代码、数据、堆栈和 CPU寄存器)。
- 内存管理:内核所管理的另外一个重要资源是内存。为了提高效率,如果由硬管理虚拟内存,内存是按照所谓的内存页 方式进行管理的。包括了管理可用内存的方式,以及物理和虚拟映射所使用的硬件机制。
- 虚拟文件系统:VFS是内核中非常有用的一个方面,因为它为文件系统提供了一个通用的接口抽象。VFS 在 SCI 和内核所支持的文件系统之间提供了一个交换层。
常见Linux的发行版
Linux发行版时间线
GNU/Linux Distributions Timeline
linux发行版有数百种其中主流的有:
-
Debian(没有商业公司支持的,加入的限制少,使用难度高)
- ubuntu
- mint (more pretty)
- knopix(以安全著称)
- ubuntu
-
Slackware
- S.u.S.E (more user in Europe)
- SLES(SuSE的企业版)
- OpenSUSE(个人桌面版界面华丽)
- S.u.S.E (more user in Europe)
-
RedHat
- RedHat 9.0
- RedHat Enterprise Linux (RHEL)(18个月发行一版)
- CentOS:Community ENTerprise OS
- Feroda core(redhat的个人桌面版6个月发行一版)
- RedHat Enterprise Linux (RHEL)(18个月发行一版)
- RedHat 9.0
-
Gentoo
-
ArchLinux
版本号
major.minor.release
Linux:0.99, 2.2, 2.4, 2.6, 3.0, 4.0
linux kernel archive
发行版本也有自己的版本号:
RHEL: 5.x, 6.x, 7.x
Fedora 23
Debian:8.x
OpenSuSE: 13.x
常见的开源协议以及开源协议的区别
各开源协议比较:https://en.wikipedia.org/wiki/Comparison_of_free_and_open-source_software_licenses
GPL
四个自由:
1. 将软件用于任何目的的自由
2. 自由更改软件以满足您的需求
3. 与朋友和邻居分享软件的自由
4. 分享你所做的改变的自由
GPLv2
one line to give the program's name and an idea of what it does.
Copyright (C) yyyy name of author
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details
type `show w'. This is free software, and you are welcome
to redistribute it under certain conditions; type `show c'
for details.
- GPL适用于所有在GPL条款下发布的程序或作品
- 分发时必须原封不动地保留本协议
- 修改后的衍生程序要遵守3点:
- 醒目地声明你的修改及标注修改日期
- 允许第三方在本协议约束下使用你修改的程序,并不得就授权收费
- 如果该作品有交互式用户界面,则其必须显示适当的法律声明。
- 满足上述条款约束下以目标码或可执行文件的形式复制和分发本程序,但要满足以下条件之一:
- 附上相应的源码。
- 附上至少三年有效的书面报价表以供第三方付费获取相应的源码。
- 附上你所收到的获取源码途径的信息。
- 在本协议授权之外,你不能复制、修改、再授权或分发本程式。
- 修改或发布本程式(或本程式的任何派生作品),就表明你已经接受本协议
- 每当你再发布本程式(或本程式的任何派生作品),接收者自动从原始权利人获得本许可,以复制、分发和修改本程式。
- 倘若你不能在发布本程式时同时满足本协议和其他文件的要求,你就不能发布本程式。
- 如果由于专利或受版权保护的接口的问题,分发或使用本程式在某些国家受到限制,原始版权持有人在其程式中使用本协议时可以附加明确的区域分发限制以排除那些国家,以支持此外地区的分发。在此情况下,这种限制条款将纳入协议之中。
- 如果本程式指定其使用的协议版本以及“任何更新的版本”,你可以选择遵守该版本或者任何更新的版本的条款。如果本程式没有指定协议版本,你可以选用自由软件联盟发布的任意版本。
- 如果你希望将本程式的某部分并入采取不同发布条件的自由软件中,应书面请求其作者的许可。
- 本程式为免费授权,故在适用法律范围内不提供品质担保。
- 除非适用法律或书面协议要求,任何版权持有人或本程式按本协议可能存在的第三方修改和再发布者,都不对你的损失负有责任
GPLv3
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
If the program is interactive, make it output a short notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
- 作品的源码指其可修改的首选形式,目标码指所有其他形式。
- 本协议的一切授权都是对本程序的版权而言的,并且在所述条件都满足时不可撤销。
- 当你转发一个受保护作品时,你将失去任何通过法律途径限制技术手段破解的权力,乃至于通过行使本协议所予权利实现的破解。你即已表明无心通过限制用户操作或修改受保护作品来确保你或第三方关于禁止技术手段破解的法定权利
- 你可以通过任何媒介发布你接收到的本程序的完整源码副本
- 修改后的衍生程序要遵守3点:
- 醒目地声明你的修改及标注修改日期
- 指出其在本协议及任何符合第七条的附加条件下发布
- 你必须按照本协议将该作品整体向想要获得许可的人授权
- 如果该作品有交互式用户界面,则其必须显示适当的法律声明。
- 你可以如第四条和第五条所述那样以目标码形式转发受保护作品.
- “附加许可”用于补充本协议,以允许一些例外情况。
- 除非在本协议明确授权下,你不得传播或修改受保护作品。其他任何传播或修改受保护作品的企图都是无效的,并将自动中止你通过本协议获得的权利(包括第十一条第3段中提到的专利授权)。
- 一旦修改和传播一个受保护作品,就表明你接受本协议。
- 每当你转发一个受保护作品,其接收者自动获得来自初始授权人的授权,依照本协议可以运行、修改和传播此作。
- “贡献人”指通过本协议对本程序或其派生作品进行使用认证的版权持有人。授权作品成为贡献人的“贡献者版”。
- 倘若你不能在转发受保护作品时同时满足本协议和其他文件的要求,你就不能转发本程序。
- 你可以将任何受保护作品与以GNU Affero通用公共许可协议管理的作品关联或组合成一个联合作品,并转发。
- 自由软件联盟可能会不定时发布GNU通用公共许可协议的修订版或新版。新版将秉承当前版本的精神,但对问题或事项的描述细节不尽相同。
- 本程序在适用法律范围内不提供品质担保。
- 除非适用法律或书面协议要求,任何版权持有人或本程序按本协议可能存在的第三方修改和再发布者,都不对你的损失负有责任
- 如果上述免责声明和责任范围声明不为地方法律所支持,上诉法庭应采用与之最接近的关于放弃本程序相关民事责任的地方法律,除非本程序附带收费的品质担保或责任许诺。
LGPL
- 您可以根据本许可证的第3节和第4节传达涵盖的作品,而不受GNU GPL第3节的约束。
- 如果您修改了库的副本,并且在您的修改中,工具引用了由使用该工具的应用程序提供的功能或数据(除了作为调用工具时传递的参数),那么您可以传达修改版本的副本
- 应用程序的目标代码形式可以包含来自作为库的一部分的头文件的材料。您可以根据您选择的条款传达此类目标代码
- 如果您还执行以下各项操作,您可以根据您选择的条款传达合并作品,这些术语合在一起,实际上不会限制对合并作品中包含的库部分的修改以及用于调试此类修改的逆向工程。
- 您可以将基于库的工作的库设施与非应用程序的其他库设施一起放在一个库中,并且不受本许可证的约束,并根据您选择的条款传送这样的组合库
- 自由软件基金会可能会不时发布GNU宽通用公共许可证的修订版和/或新版本。这些新版本在精神上与现有版本类似,但可能在细节上有所不同以解决新问题或疑虑。
BSD
FreeBSD
Copyright 1992-2019 The FreeBSD Project.
如果满足以下条件,则允许以源代码和二进制形式重新分发和使用,无论是否经过修改:
- 源代码的重新分发必须保留上述版权声明,此条件列表和以下免责声明。
- 二进制形式的再分发必须在随分发提供的文档和/或其他材料中复制上述版权声明,此条件列表和以下免责声明。
本软件由作者和贡献者按“原样”提供,并且不承担任何明示或暗示的担保,包括但不限于对适销性和特定用途的适用性的暗示担保。在任何情况下,作者或贡献者均不对任何直接,间接,偶然,特殊,惩戒或后果性损害(包括但不限于采购替代商品或服务;使用,数据或利润损失;或业务中断)无论如何引起并承担任何责任理论,无论是在使用本软件的任何方式下产生的合同,严格责任或侵权(包括疏忽或其他),即使被告知此类损害的可能性。
Copyright (c) [xxxx]-[xxxx] [Owner Organization]
All rights reserved.
如果满足以下条件,则允许以源代码和二进制形式重新分发和使用(无论是否有修改)(受以下免责声明的限制):
- 源代码的再分发必须保留上述版权声明,此条件列表和以下免责声明。
- 二进制形式的再分发必须在随分发提供的文档和/或其他材料中复制上述版权声明,此条件列表和以下免责声明。
- 无论名称 [业主组织]及其贡献者的名字可以被用来支持或推广该软件,而不事先书面许可,衍生产品。
本许可证不授予任何一方的专利权明示或暗示的许可。本软件由 版权所有者和贡献者按 “原样”提供,并且不承担任何明示或暗示的保证,包括但不限于对适销性和特定用途的适用性的暗示保证。在任何情况下都不应该是 版权所有者或贡献者 对任何直接,间接,偶然,特殊,惩戒或间接损害(包括但不限于采购替代商品或服务;损失使用,数据或利润;或业务中断)承担责任,但不论是因为任何原因造成的合同中的责任理论,无论是合同,严格责任还是侵权行为(包括疏忽或其他行为),在使用本软件的任何方式下,即使被告知此类损害的可能性,也是如此。
BSD-3-Clause
Copyright (c) <year> <owner>. All rights reserved.
如果满足以下条件,则允许以源代码和二进制形式重新分发和使用,无论是否经过修改:
- 源代码的再分发必须保留上述版权声明,此条件列表和以下免责声明。
- 二进制形式的再分发必须在随分发提供的文档和/或其他材料中复制上述版权声明,此条件列表和以下免责声明。
- 未经事先书面许可,不得使用 版权所有者的名称或其贡献者的名称来认可或宣传从该软件衍生的产品。
本软件由 版权所有者和贡献者按 “原样”提供,并且不承担任何 明示或暗示的保证,包括但不限于对适销性和特定用途的适用性的暗示保证。在任何情况下都不应该是 版权所有者或贡献者 对任何直接,间接,偶然,特殊,惩戒或间接损害(包括但不限于采购替代商品或服务;损失使用,数据或利润;或业务中断)承担责任,但不论是因为任何原因造成的合同中的责任理论,无论是合同,严格责任还是侵权行为(包括疏忽或其他行为),在使用本软件的任何方式下,即使被告知此类损害的可能性,也是如此。
BSD-4-Clause
Copyright (c) <year> <owner>. All rights reserved.
如果满足以下条件,则允许以源代码和二进制形式重新分发和使用,无论是否经过修改:
- 源代码的再分发必须保留上述版权声明,此条件列表和以下免责声明。
- 二进制形式的再分发必须在随分发提供的文档和/或其他材料中复制上述版权声明,此条件列表和以下免责声明。
- 提及本软件功能或使用的所有广告材料必须显示以下声明:
本产品包含由组织开发的软件 。 - 无论是名称 的版权持有人或其贡献者的名字可以被用来支持或推广该软件,而不事先书面许可,衍生产品。
本软件由版权所有者 “按原样” 提供 ,并且不承担任何明示或暗示的担保,包括但不限于对适销性和特定用途的适用性的暗示担保。在任何情况下都不应该是 版权所有者 对任何直接,间接,偶然,特殊,惩戒或间接损害(包括但不限于采购替代商品或服务;损失使用,数据或利润;或业务中断)承担责任,但不论是因为任何原因造成的合同中的责任理论,无论是合同,严格责任还是侵权行为(包括疏忽或其他行为),在使用本软件的任何方式下,即使被告知此类损害的可能性,也是如此。
Apache
版权所有[yyyy] [版权所有者的名称]
根据Apache许可证2.0版(“许可证”)获得许可;
除非符合许可,否则您不得使用此文件。
您可以从
http://www.apache.org/licenses/LICENSE-2.0 获取许可证副本。
除非适用法律要求或书面同意,否则
根据许可证分发的软件按“原样”分发,
不附带任何明示或暗示的保证或条件。
有关管理许可
下的权限和限制的特定语言,请参阅许可证。
1.定义
2.授予版权许可
在遵守本许可的条款和条件的前提下,每位投稿人特此授予您永久的,全球性的,非独家的,免费的,免版税的,不可撤销的版权许可,以复制,准备衍生作品,公开展示,公开表演,从属许可证,并以源或对象形式分发工作和此类衍生作品。
3.授予专利许可
在遵守本许可的条款和条件的前提下,每位投稿人特此授予您永久的,全球性的,非独家的,免费的,免版税的,不可撤销的(除本节所述之外)专利许可,使用,出售,出售,进口和以其他方式转让作品,
4.再分配
您可以在任何媒介中复制和分发其作品或衍生作品的副本,无论是否经过修改,以源或对象形式
5.提交文稿
除非您明确说明,否则任何故意提交给您的作品的贡献均应遵守本许可的条款和条件,不附加任何附加条款或条件。
6.商标
本许可证不允许使用许可方的商标名称,商标,服务标记或产品名称,除非在描述作品来源和复制NOTICE文件内容时合理和惯常使用。
7.免责声明
除非适用法律要求或书面同意,否则许可方根据“现状”提供工作(并且每个贡献者提供其贡献),不附带任何明示或暗示的担保或条件
8.责任限制
在任何情况下,在任何法律理论下,无论是侵权行为(包括疏忽),合同还是其他行为,除非适用法律要求(例如故意和严重疏忽行为)或书面同意,否则任何贡献者均应对您承担责任。
9.接受保证或额外责任
在重新分发其作品或衍生作品时,您可以选择提供并收取与本许可证一致的支持,保证,赔偿或其他责任义务和/或权利的费用。
MIT
MIT License
Copyright (c) <year> <copyright holders>
特此授予任何获得本软件和相关文档文件(“软件”)副本的人免费许可,以无限制地交易本软件,包括但不限于使用,复制,修改,合并的权利根据以下条件,出版,分发,再许可和/或出售本软件的副本,并允许向其提供本软件的人员这样做:
- 上述版权声明和本许可声明 (包括下一段) 应包含在本软件的所有副本或实质部分中。
- 本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性,特定用途的适用性和不侵权的保证。
Linux的哲学思想
- 一切皆文件:
把几乎所有资源统统抽象为文件形式;包括硬件设备,甚至通信接口等; - 由众多功能单一的程序组成;
一个程序只做一件事,并且做好;组合小程序完成复杂任务; - 尽量避免跟用户交互;
目标:易于以编程的方式实现自动化任务; - 使用文本文件保存配置信息;
linux目录结构以及目录结构命名规定。
文件系统:层级结构;有索引;
/: 原初起点;
倒置树状结构;/dev/pts/2:
最左侧/: 表示根目录
其它的/: 表示路径分隔符
Linux的路径分隔符是/
Windows的是\
-
文件的路径表示:
- 绝对路径:从根开始表示出的路径
- 相对路径:从当前位置开始表示出的路径
-
文件名使用法则:
- 严格区分字符大小写:file1, File1, FILE1
- 目录也是文件,在同一路径下,两个文件不能同名;
- 支持使用除/以外的任意字符;
- 最长不能超过255个字符;
用户有家目录:home,
用户的起始目录;普通用户管理文件的位置;-
工作目录:
/etc/sysconfig/network-scripts/ifcfg-eno16777736- basename:最右侧的文件或目录名;
- dirname:basename左侧的路径;
-
命令:
Linux目录层级结构
目录 | 作用 |
---|---|
/bin: | 所有用户可用的基本命令程序文件 |
/sbin: | 供系统管理使用的工具程序 |
/boot: | 引导加载器用到的静态文件:kernel,initramfs(initrd),grub etc |
/dev: | 特殊文件或设备文件,设备有两种类型:字符设备、块设备 |
/etc: | 系统程序的配置文件,只能为静态 |
/home: | 普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME |
/root: | 管理员的家目录 |
/lib: | 为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块 libc.so.*:动态链接的C库 ld*:运行时链接器/加载器 modules:用于存储内核模块的目录 |
/lib64: | 64位系统特有的存放64位共享库的路径; |
/media: | 便携式设备的挂载点 : cdrom,floppy etc。 |
/mnt: | 其他文件系统的临时挂载点 |
/opt: | 附加应用程序的安装位置 |
/srv: | 当前主机为服务提供的数据 |
/tmp: | 为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限 |
/usr: | usr Hierarchy,全局共享的只读数据路径; bin, sbinlib, lib64 include:C程序头文件; share:命令手册页和自带文档等架构特有的文件的存储位置 local:另一个层级目录 X11R6:X-Window程序的安装位置 src:程序源码文件的存储位置 |
/usr/local: | Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序; |
/var: | var Hierarchy,存储常发生变化的数据的目录 cache:Application cache data lib:Variable state information local:Variable data for /usr/local lock:Lock files log:Log files and directories opt:Variable data for /opt run:Data relevant to running processes spool:Application spool data tmp:Temporary files preserved between system reboots |
目录 | 作用 |
---|---|
/proc: | 基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward; |
/sys: | sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型的的接口; |