Linux——总结第一步
- 今天参加了某公司的电话初试,恩,我一直期待的不谈人生规划只谈技术的面试,果然发现我是一只菜鸡,还不能吃的那种。
- 就感觉脑子里这些知识都有,但是又说不出个所以然来,所以准备来个复习。(用了老师给的思维导图)
关于Linux
1、钻研一个问题的开始是:它是什么?
Linux是一套免费使用和自由传播类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统(来自度娘)
2、它在什么时候会被使用?
- 由于Linux不仅系统性能稳定,而且是开源软件,在企业开发中,Linux操作系统会被网络运维人员当成系统服务器使用,又可以当做防火墙
3、它是如何产生的呢?
这又得提到我们老师的偶像之一:李纳斯•托瓦兹
- Linux 内核最初是由李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 UNIX 操作系统 Minix 太难用了,于是决定自己开发一个操作系统。第 1 版本于 1991 年 9 月发布,当时仅有 10 000 行代码。
- 李纳斯•托瓦兹没有保留 Linux 源代码的版权,公开了代码,并邀请他人一起完善 Linux。与 Windows及其他有专利权的操作系统不同,Linux 开放源代码,任何人都可以免费使用它。
- 据估计,现在只有 2% 的 Linux 核心代码是由李纳斯•托瓦兹自己编写的,虽然他仍然拥有 Linux内核(操作系统的核心部分),并且保留了选择新代码和需要合并的新方法的最终裁定权。
4、它的优点?
- 大量的可用软件及免费软件
- 良好的可移植性及灵活注
- 优良的稳定性和安全性
- 支持几乎所有的网络协议及开发语言
5、它的发行版本?
(以前一直使用Ubuntu,却没有搞懂他们是个什么关系,如下图)
- Linux 的发行版说简单点就是将 Linux 内核与应用软件做一个打包。
- 从技术上来说,李纳斯•托瓦兹开发的 Linux只是一个内核。内核指的是一个提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件,内核并不是一套完整的操作系统,它只是操作系统的核心。一些组织或厂商将Linux 内核与各种软件和文档包装起来,并提供系统安装界面和系统配置、设定与管理工具,就构成了 Linux 的发行版本。
- 比较知名的发行版有:Red Hat、Ubuntu、SUSE,将他们直接说成 Linux 其实是不确切的,它们是 Linux的发行版本,更确切地说,应该叫作“以Linux为核心的操作系统软件包”。
4.1 它的发行版本可分为两类:
- 商业公司维护的发行版本,以著名的 Red Hat 为代表;
- 社区组织维护的发行版本,以 Debian 为代表。
6、Linux与Windows的区别?(某公司面试被问到)
7、Linux与Unix的区别?
- UNIX 系统大多是与硬件配套的,也就是说,大多数 UNIX 系统如 AIX、HP-UX 等是无法安装在 x86服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上;
- UNIX 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。
8、Linux的系统结构?
8.1 分为三层
8.1.1 kernel(内核)层
- 内核层是 UNIX/Linux系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。
- 功能如下:
简单点来说:
(1)管理设备、内存和进程
(2)控制系统程序/实用程序和系统硬件之间的功能
(3)管理交换空间、守护进程、文件系统和其他功能
8.1.2 shell层
- shell 层是与用户直接交互的界面。用户可以在提示符下输入命令行,由 Shell 解释执行并输出相应结果或者有关信息,所以我们也把Shell 称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。
- 功能为:shell是用户和内核之间的接口,充当解释器或转换器。
8.1.3 applications层
- 应用层提供基于 X Window 协议的图形环境。X Window 协议定义了一个系统所必须具备的功能(就如同 TCP/IP
是一个协议,定义软件所应具备的功能),可系统能满足此协议及符合 X 协会其他的规范,便可称为 X Window。
可调用shell/library routines/system calls。
8.1.4 library routines
- 库,如stdio.h是完全基于system calls写出来的
9、Linux文件系统
- 文件系统是一种数据结构,该数据结构通常驻留在磁盘上,用来组织和管理文件的目录
9.1 根目录(/)
FHS 认为,Linux 系统的根目录(/)最为重要(没有之一),其原因有以下 2 点:
- 所有目录都是由根目录衍生出来的;
- 根目录与系统的开机、修复、还原密切相关;
因此,根目录必须包含开机软件、核心文件、开机所需程序、函数库、修复系统程序等文件
9.2 Linux /usr目录
- usr(注意不是 user),全称为 Unix Software Resource,此目录用于存储系统软件资源。FHS 建议所有开发者,应把软件产品的数据合理的放置在 /usr 目录下的各子目录中,而不是为他们的产品创建单独的目录。
- Linux 系统中,所有系统默认的软件都存储在 /usr 目录下,/usr 目录类似 Windows 系统中 C:\Windows\ + C:\Program files\ 两个目录的综合体。
- FHS 建议,/usr 目录应具备下表所示的子目录。
9.3 Linux/var目录
- /var 目录用于存储动态数据,例如缓存、日志文件、软件运行过程中产生的文件等。通常,此目录下建议包含如下表所示的这些子目录
10、关于Linux常用的命令
明天继续更。。。。。。。