第一章 什么是Linux
1.1 什么是Linux
1.1.1 计算机:计算的辅助工具
计算机必须要有的组件:
输入单元:如鼠标、键盘、卡片阅读器机,等等。
中央处理器(CPU):含有算术逻辑、控制、记忆等单元。
输入单元:如屏幕、打印机等。
“比较完整的操作系统”应该包含两个组件,一个是“核心与其提供的接口工具 ”,另一个是“利用核心提供的接口工具所开发的软件 ”。
整个硬件是由核心 来管理的,如果核心不能识别硬件,那么将无法使用该硬件设备。
从定义来看,只要能让计算机硬件正确地运行,就算是操作系统了。所以,操作系统其实就是核心与其提供的接口工具。如上所述,因为最基本的核心缺乏与用户沟通的友好界面,所以在目前,一般提到的操作系统,都会包含核心与相关的用户应用软件。
核心就是“Kernel”,它是操作系统最底层的东西,每个操作系统都有自己的核心,由它来掌管整个硬件资源的工作状态。
核心为了实现用户所需要的正确运算结果,必须要管理的事项有以下几项:
系统调用接口(System Call Interface) :通过这个接口,程序开发人员可以轻松地与核心沟通,进一步利用硬件资源。
进程控制(Process Control) :在多任务环境中,一台计算机可能同时有很多的作业等待CPU运算处理,核心这时必须能够控制这些作业并有效地分配CPU的资源。
内存控制(Memory Management) :控制整个系统的内存;如果内存不足,核心还能够提供虚拟内存的功能。
文件系统管理(File System Management) :文件系统的管理,例如数据的输入/输出(I/O)及不同文件格式的支持等,如果核心不能识别某个文件系统,那么将无法使用该文件格式的文件。
设备驱动程序(Device Drivers) :如上所述,硬件管理是核心的主要工作之一,当然,设备驱动程序就是核心需要做的事情。”可加载模块“功能可以将驱动程序编辑成模块,而不需要重新编译核心。
Linux由于是开放源代码的操作系统,所以其程序代码可以修改成合适在各种机器上运行,也就是说,Linux具有“可移植性”。
Thompson的这个文件系统有两个重要的概念:
所有程序或系统设备都是文件;
不管是创建编辑器,还是附属文件,所写的程序只有一个目的,而且要有效地完成目标。
计算机仅认识0/1数据,但人类不认识它们。人类对于纯文字的数据(就是所谓的ASCII文件格式)比较有感觉。但偏偏计算机又不认识ASCII格式文字。为此,就会有很多所谓的“编译器”来辅助我们编写程序。我们一般使用文字编辑器以ASCII纯文字格式来编写程序,在通过所谓的“编译器(compiler)”将刚刚完成的文本文件“编译”成为计算机认识的二进制文件(binary file),让计算机认识且可以执行程序。
为什么有时候我同时打开两个文件(如A文件和B文件)所花的时间,要比打开A文件后再打开B文件的时间还要多?因为如果同时打开的话,CPU就必须要在两个作业之间不停地切换,而切换的动作会耗去一些CPU时间。所以,在一个CPU上同时启动两个以上的作业,要比一个一个地执行还要耗时。这这是为什么现在CPU开发商要在一个芯片中整合两个CPU的原因,也是为什么在运行情况比较复杂的服务器上,需要比较多的CPU的原因。
要实现多任务(multitasking)环境,除了硬件(主要是CPU)具有多任务的特性外,操作系统也要支持这项功能。一些不具有多任务特性的操作系统,想要同时执行两个程序时不可能的。除非先执行的程序执行完毕,否则,后面的程序不可能主动执行。在多任务操作的系统中,每个程序执行时,都会有一个最大CPU使用时间;若该作业运行的时间超过这个CPU使用时间,就会取消其运行,而再度进入核心作业的任务分配中,等待下一次的CPU运行。这有点像在开记者会,主持人(CPU)会问“谁要发问?”一群记者(作业)就会举手,一般先举手的自然就先允许发问,之后,主持人又会问一次谁要发问,当然,所有人(包括刚刚那个记者)都可以举手。多任务环境对对于复杂的工作情况帮助很大。
1.2 Linux的特性
类UNIX可以说是目前服务器类型的操作系统的统称。因为不论是FreeBSD、BSSD、Sun UNIX、HP UNIX、Red Hat Linux、Mandrake Linux等,都是由同一祖先Thompson所编写的UNIX而来,因此,这些都是统称为类UNIX的操作系统。
1.2.1 Linux系统有如下特性
自由与开发 :由于Linux基于GPL(General Public License)架构,因此它是自由软件,即任何人都可以自由地使用或修改其中的源码。
配置要求低 :性能高。
功能强大而稳定 :Linux功能不比一些大型的UNIX工作站低。
独立工作 :Linux操作系统使用了很多软件套件,这些套件软件都在Linux操作系统上进行了开发与测试。
1.2.2 Linux的优点
稳定的系统 :Linux是基于UNIX概念而开发出来的操作系统,具有与UNIX系统相似的程序接口和操作方式,继承了UNIX稳定且有效率的特点。
免费或少许费用 :基于GPL基础的产物。
安全性、漏洞的快速修补 :开源。
多任务、多用户 :与Windows系统不同,Linux主机上可以同时允许多人上线工作,并且资源分配较为公平,比起Windows的单人、假多任务系统要稳定得多。这种多用户、多任务是类UNIX系统相当不错的功能。您可以在一个Linux主机上规划出不同等级的用户,而且每个用欧冠胡登录系统时的工作环境都可以不同。您还可以允许不同的用户在同一个时间登录主机,以便同时使用主机的资源。
用户与组的规划 :在Linux机器中,文件的属性可以分为”可读、可写、可执行“来定义一个文件的适用性,这些属性可以分为3个种类,分别是文件拥有者、文件所属用户组、其他非拥有者与用户组。这对于项目计划或则其他计划开发人员具有相当良好的系统保密性。
相对而言资源耗费较少 :性能好。
适合需要小核心程序的嵌入式系统 :Linux用很少的程序代码就可以实现一个完整的操作系统。
1.2.3 Linux还有待改进的地方
没有特定的支持厂商,图形界面还不够友好;
1.2.4 其他相关信息:
遵照标准
POSIX规范。Linux Standard Base(LSB),File system Hierarchy Standard(FHS)。
服务器、工作站、终端
服务器(Server) :提供Internet一种以上网络服务的主机。
工作站(Workstation) :工作站可以视为这样的机器,仅提供给一组特定人员进行数值分析、科学研究。当然,更广义的定义是,只要是没有对Internet提供网络服务的,那就是工作站。
终端(Terminal) :简单而言,就是最终用户(end-user)的那台计算机。不过,更狭义地说,”终端“本身应该不具备任何可以工作的软件,终端一定要连上服务器之后,才能进行各项工作。