不会Linux都不好意思的年代 - 初次见面
这年头,如果仅仅会网络,不会系统,不会Linux,真的是越来越混不住了。
你猜对了,我就是那么一个攻城狮,了解网络,但是系统知识匮乏,略懂皮毛,毛的都想转行了。接下来的日子,打算好好的学习一下 Linux,记录一下,分享一下,构建技能体系的第二部分 -- 系统。
OS 之下的计算机
没有计算机,是没有办法聊到 OS 的。无论是网络,还是系统,目前鄙人都是是站在一个使用者角度是学习和研究的。对,不是开发,我就是一个网管。现在学习 Linux呢,也是想当一个“系统管理员”。研究软的之前,得先看看硬的 - 计算机,因为 OS 是运行其上的,不了解它,以后就没有办法更好的认识和 优化 OS的一套形式原则。
计算机的组成
基本组成有以下几个部分,现在分别来看:
- CPU
中央处理器,其内部是由运算器和控制器两部分组成。前者是用来进行基本的加减乘除等我们这些凡夫俗子目前这个阶段所能想到的“运算”,即真正用来干活儿的那个,执行者。后者的“控制器”,才是大Boss,因为它是用来协调各种硬件和软件资源的分配、使用和监控的。什么时候该读取什么命令,读取什么数据,以及去什么地方读取,是读取呢,都是需要这个哥们严重参与的。 - 内存
这个部件,叫 RAM ,即随机存取存储器 - random access memory 。
这个部件,比较核心。因为所有需要被执行和操作的内容,都必须存在于这个地方,这是一个前提。即以后 CPU 干活儿的时候,那些操作命令和操作数据,都是必须首先“调取”到内存中以后,才是可以的:CPU 与 内存之间的通信咯;
既然是用来存储内容的,那么肯定就有空间大小的概念了,并且也存在存储的内容的编址和寻址的问题了。
内存中,有一个最小的存储单元,叫做cell。即任何数据,在内存中,都是存储在多个 cell 中的。一个 cell 的大小是 1 个字节(Byte),也就是8个bit;如果我们存储的内容,仅仅是1个bit呢,那么此时占用的,也是一个cell,因为 cell 是最小的存储单元了。以此类推,如果需要存储17个bit的数据,那么就得需要3个cell 了。关于内存的编址,不是层次化结构的(即中国-北京-朝阳-XX区-XX路),而是扁平化结构(即内存0001、内存0002) - I/O设备
input / output 设备,即所谓的输入、输出设备。比如键盘、鼠标、显示器、硬盘。
(是的,硬盘也算的)。这些设备,就是用于我们人与机器进行交互的“接口”了。
不过需要知道的是:这些设备相比较 CPU 和 内存而言,都是属于低速设备。那么我们通过这些设备与计算机进行交互的时候,就存在很大的速度差异。计算机会闲死的,很多资源都是浪费的。所以,我们肯定需要一些解决办法来缓解这个问题,比如我们引入一些“缓存”和“寄存器”这种临时存储的技术。如果还是让双方的速度差距很大呢?那就接受现实吧。让那些闲着的资源去服务于其他“人”、其他程序吧;这样一来的好处就是,
好像每个人、程序在计算机上运行的时候,觉得每个时间“段\片”,这个计算机都是属于自己的,并没有感觉到在与其他人、程序一起使用;有点虚拟化的意思了~~
以上的这几个部分,就是计算机的最基本的组成部分,也叫做“冯·诺依曼”体系!
庞大的 Linux 家族
Linux 的发展历史,很悠久。但是,更加值得说道的是,也很曲折。
Linux因为开源的,也更因为其强大的稳定性,所以受到程序员的追捧,大力发展。所以发展到今天,有很多的分支和版本。
但是今天,我们经常会听到一个“词儿” - Linux 发行版。
“发行版”到底是什么东西呢?
因为我们知道 Linux 其实呢,应该是叫做 GNU Linux。我们平时所了解到的 OS ,可能就是一个干净的系统,安装上一堆使用的软件。但是其实我们所谓的那个干净的系统,叫做kernel - 内核。之前所谓的开源呢,开的也是 kernel 的源代码而言。
后来又有了很多的遵循开放协定的 APP ,两者结合在一起,才可以叫做今天的 Linux,或者更加准确的叫做 “GNU Linux ” 。
但是,源代码这个东西,我们是不可以拿来直接使用的。因为计算机运行的最终都是二进制文件,可执行的。那么从源代码到可执行的二进制文件,这一个过程,我们称之为“编译”,是通过“编译器”来实现的。这个过程和动作,就需要很高的技术含量了,一般人也实现不了。所以,“好人”出现了 - 一些牛逼的个人和机构,开始对基于对开放出来的这些 kernel 源码进行理解和编辑,并且同时编译了 很多的 APP ,然后将他们打包,再发放出来,这就是所谓的“发行版 ” - distribution version .
就目前而言,市面上的发行版:
Debian
- Ubuntu - 无商业公司支持,社区自我维护;
- KnoPix -以安全性能著称;
SlackWare
- S.U.SE - Novell公司所有,在欧洲地区比较流行;SLES是其企业版;
- Oepn S.u.S.e - 面向个人的版本;
RedHat
- RHEL - Red Hat Enterprise Linux , 企业版;更新周期较慢;
- CentOS - Community ENTerprise OS ,社区-企业版;更新快;企业用,但免费;
- Fedora Core - 个人版,免费的;
Linux的哲学思想
在Linux的世界中,处处体现着这样一些思想,也正是由于这些思想,所以Linux才能如此的蓬勃发展。
- 一切资源都是文件;在 Linux 系统中,所有的软件和硬件资源,都是以“文件”的形式在进行组织和管理。所以,我们想学习Linux的话,知道了 Linux 如何管理文件,就知道了 Linux如何管理自身的软件和硬件设备;
- 由众多功能单一的程序组成;这里不但和Linux是开源的有关系,更多的是其实是Linux的系统功能组件之间的模块化或者叫耦合性很低,你做你的,我做我的,我们互相之间的依赖性很弱,但是如果协同合作完成一件事情的话,效率有很高。每一个小程序都可以完成一件小任务,组合起来,就能完成一个很庞杂的工作;
- 尽量避免与用户交互:这里完全体现了自动化思想。即能不让用户参与操作的,尽量不让,能通过编程、脚本自动化实现,一气呵成是最好的了。
- 使用文本文件保存配置信息。这种处理方式,非常的便于我们对系统进行管理和配置;因为我们对于操作文本非常熟悉了,也更善于操作这类的文件,而不是二进制文件。