操作系统(Operating System,OS):也是软件的一种,是硬件基础上的第一层软件,位于硬件和应用程序之间的底层的软件,是硬件和其它软件沟通的桥梁(或者说接口、中间人、中介等),除了能为应用程序提供支持,还会监控管理的应用程序,具有双面性。。
计算机是一台设备,按照用户的要求接收信息、存储数据、处理数据,然后再将处理结果输出(文字、图片、音频、视频等)。计算机由硬件和软件组成:
操作系统控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序,例如:
当前主流服务器和 PC 端操作系统有 Linux、Windows、UNIX 等,手机操作系统有 Android、iOS、Windows Phone(简称 WP),嵌入式操作系统有 Windows CE、PalmOS、eCos、uClinux 等。
Linux( Linux is not Unix):是一款自由和开放源码的类 UNIX 操作系统。Linux与 Windows 不同之处在于,Linux 是一套开放源代码程序的、可以自由传播的类 Unix 操作系统软件,Unix 系统是 Linux 系统的前身,具备很多优秀特性。Linux内核最初是由芬兰人林纳斯.托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。在设计之初,就是基于 Intel x86 系列 CPU 架构计算机的,它是一个基于POSIX(可移植操作系统接口)和UNIX的多用户(root…)、多任务、支持多线程和多CPU的操作系统,它是由世界各地成千上万的程序员设计和开发实现的,当初开发 Linux 系统的目的就是建立不受任何商业化软件版权制约的、全世界都能自由使用的类 Unix 操作系统兼容产品。
Linux 初衷是要替代 UNIX,Linux 系统主要被应用于服务器端、嵌入式开发和 PC 桌面 3 大领域,其中服务器端领域是重中之重。例如,我们熟知的大型开源项目,大型、超大型互联网企业(百度、腾讯、Sina、阿里等)都在使用 Linux 系统作为其服务器端的程序运行平台,全球及国内排名前 1000 的 90% 以上的网站使用的主流系统都是 Linux 系统。
Linux能运行主要的UNlX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unⅸ以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux 特点:
Linux系统的优点:
相比 Windows 系统,Linux 系统有更好的稳定性,macos基于linux
拥有大量的可用软件及免费软件,如LA/NMP、Samba,构建成本低廉,性能出色。但是在娱乐方面是差强人意的
良好的可移植性及灵活性:几乎支持所有的 CPU 平台,这使得它便于裁剪和定制。我们可以把 Linux 放在 U 盘、光盘等存储介质中,也可以在嵌入式领域广泛应用。可以不安装就使用Linux 系统,则可以在网上下载 Linux 镜像,刻成光盘放入光驱或者用虚拟机软件直接载入镜像文件,设置 CMOS/BIOS 为光盘启动,系统就会自动载入光盘文件,启动进入 Linux 系统
优良的稳定性和安全性
支持几乎所有的网络协议及开发语言
UNIX 诞生于 20 世纪 60 年代末,Windows 诞生于 20 世纪 80 年代中期,Linux 诞生于 20 世纪 90 年代初,后来的 Windows 和 Linux 都参考了 UNIX。
UNIX 操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明,源于 Multics 工程计划(一种交互式的、具有多道程序处理能力的分时操作系统,以取代当时广泛使用的批处理操作系统)
说明:分时操作系统使一台计算机可以同时为多个用户服务,连接计算机的终端用户交互式发出命令,操作系统采用时间片轮转的方式处理用户的服务请求并在终端上显示结果(操作系统将CPU的时间划分成若干个片段,称为时间片)。操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片。
肯•汤普森和丹尼斯•里奇发明了传说中的C语言,是一种适合编写系统软件的高级语言(可移植性),它的诞生是 UNIX 系统发展过程中的一个重要里程碑,它宣告了在操作系统的开发中,汇编语言不再是主宰
UNIX 系统版本,目前常见的有 Sun Solaris、FreeBSD、IBM AIX、HP-UX 等
虽然Linux 源于UNIX有很多的共通之处,但二者也有两个大的区别:
UNIX/Linux系统结构:UNIX/Linux 系统可以抽象为 3 个层次。底层是 UNIX/Linux 操作系统,即系统内核(Kernel);中间层是 Shell 层,即命令解释层;高层则是应用层。
内核层:是 UNIX/Linux 系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。
Shell层:是与用户直接交互的界面。用户可以在提示符下输入命令行,由 Shell 解释执行并输出相应结果或者有关信息,所以我们也把 Shell 称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。
应用层:提供基于 X Window 协议的图形环境。X Window 协议定义了一个系统所必须具备的功能(就如同 TCP/IP 是一个协议,定义软件所应具备的功能),系统能满足此协议及符合 X 协会其他的规范,便可称为 X Window。
现在大多数的 UNIX 系统上(包括 Solaris、HP-UX、AIX 等)都可以运行 CDE (Common Desktop Environment,通用桌面环境,是运行于 UNIX 的商业桌面环境)的用户界面;而在 Linux 上广泛应用的有 Gnome、KDE 等。
X Window 与微软的 Windows 图形环境有很大的区别:
作为服务器部署,绝大多数 Linux 并不安装或并不启用图形环境
Ubuntu 基于知名的 Debian Linux 发展而来,界面友好,容易上手,对硬件的支持非常全面,是目前最适合做桌面系统的 Linux 发行版本,而且 Ubuntu 的所有发行版本都免费提供。
Red Hat 公司的产品主要包括 RHEL(Red Hat Enterprise Linux,收费版本)和 CentOS(RHEL 的社区克隆版本,免费版本)、Fedora Core(由 Red Hat 桌面版发展而来,免费版本)。
CentOS 基于 Red Hat Enterprise Linux 源代码重新编译、去除 Red Hat 商标的产物,各种操作使用和付费版本没有区别,且完全免费。缺点是不向用户提供技术支持,也不负任何商业责任。有实力的公司可以选择付费版本
SuSE Linux 以 Slackware Linux 为基础,吸取了 Red Hat Linux 的很多特质,可以非常方便地实现与 Windows 的交互,硬件检测非常优秀,拥有界面友好的安装过程、图形管理工具,对于终端用户和管理员来说使用非常方便。
Gentoo:采用源码包编译安装操作系统,安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。快速、设计干净而有弹性,高度的自定制性(基于源代码的发行版)。尽管安装时可以选择预先编译好的软件包,但是大部分使用 Gentoo 的用户都选择自己手动编译。这也是为什么 Gentoo 适合比较有 Linux 使用经验的老手使用。但是编译软件需要消耗大量的时间
版本名称 | 网 址 | 特 点 | 软件包管理器 |
---|---|---|---|
Debian Linux | www.debian.org | 开放的开发模式,且易于进行软件包升级 | apt |
Fedora Core | www.redhat.com | 拥有数量庞人的用户,优秀的社区技术支持. 并且有许多创新 | up2date(rpm),yum (rpm) |
CentOS | www.centos.org | CentOS 是一种对 RHEL(Red Hat Enterprise Linux)源代码再编译的产物,由于 Linux 是开发源代码的操作系统,并不排斥样基于源代码的再分发,CentOS 就是将商业的 Linux 操作系统 RHEL 进行源代码再编译后分发,并在 RHEL 的基础上修正了不少已知的漏洞 | rpm |
SUSE Linux | www.suse.com | 专业的操作系统,易用的 YaST 软件包管理系统 | YaST(rpm),第三方 apt (rpm)软件库(repository) |
Mandriva | www.mandriva.com | 操作界面友好,使用图形配置工具,有庞大的社区进行技术支持,支持 NTFS 分区的大小变更 | rpm |
KNOPPIX | www.knoppix.com | 可以直接在 CD 上运行,具有优秀的硬件检测和适配能力,可作为系统的急救盘使用 | apt |
Gentoo Linux | www.gentoo.org | 高度的可定制性,使用手册完整 | portage |
Ubuntu | www.ubuntu.com | 优秀已用的桌面环境,基于 Debian 构建 | apt |
- 如果你需要的是一个服务器系统,而且已经厌烦了各种 Linux 的配置,只是想要一个比较稳定的服务器系统,那么建议你选择 CentOS 或 RHEL。
- 如果你只是需要一个桌面系统,而且既不想使用盗版,又不想花大价钱购买商业软件,不想自己定制,也不想在系统上浪费太多时间,则可以选择 Ubuntu。
- 如果你想深入摸索一下 Linux 各个方面的知识,而且还想非常灵活地定制自己的 Linux 系统,那就选择 Gentoo 吧,尽情享受 Gentoo 带来的自由快感。
- 如果你对系统稳定性要求很高,则可以考虑 FreeBSD。
- 如果你需要使用数据库高级服务和电子邮件网络应用,则可以选择 SuSE。
巴西联邦政府由于支持Linux而世界闻名。
有新闻报道俄罗斯军队自己制造的Linux发布版的,做为G.H.ost项目已经取得成果。
印度的Kerala联邦计划在向全联邦的高中推广使用Linux。
中国为取得技术独立,在龙芯处理器中排他性地使用Linux。
在西班牙的一些地区开发了自己的Linux发布版,并且在政府与教育领域广泛使用,如Extremadura地区的gnuLinEx和Andalusia地区的Guadalinex。
葡萄牙同样使用自己的Linux发布版Caixa Magica,用于Magalh?es笔记本电脑和e-escola政府软件。
法国和德国同样开始逐步采用LiuX。
比较 | Windows | Linux |
---|---|---|
界面 | 界面统一,外壳程序固定所有Windows程序菜单几乎一致,快捷键也几乎相同 | 图形界面风格依发布版不同而不同,可能互不兼容。GNU/Linux的终端机是从UNIX传承下来,基本命令和操作方法也几乎一致。服务器都是使用命令行的,我们也是基命令行来学习的 |
驱动程序 | 驱动程序丰富,版本更新频繁。默认安装程序里面一般包含有该版本发布时流行的硬件驱动程序,之后所出的新硬件驱动依赖于硬件厂商提供。对于一些老硬件,如果没有了原配的驱动有时很难支持。另外,有时硬件厂商未提供所需版本的windows下的驱动,也会比较头痛。微软做兼容好 | 由志愿者开发,由Linu核心开发小组发布,很多硬件厂商基于版权考虑并未提供驱动程序,尽管多数无需手动安装,但是涉及安装则相对复杂,使得新用户面对驱动程序问题(是否存在和安装方法)会一筹莫展。但是在开源开发模式下,许多老硬件尽管在windows下很难支持的也容易找到驱动。HP、Intel、AMD等硬件厂商逐步不同程度支持开源驱动,问题正在得到缓解。 |
使用 | 使用比较简单,容易入门。图形化界面对没有计算机背景知识的用户使用十分有利。 | 图形界面使用简单,容易入门。文字界面,需要学习才能掌握。 |
系统构造 | 系统构造复杂、变化频繁,且知识、技能淘汰快,深入学习困难。 | 系统构造简单、稳定,且知识、技能传承性好,深入学习相对容易。 |
软件 | 每一种特定功能可能都需要商业软件的支持需要购买相应的授权。 | 大部分软件都可以自由获取,同样功能的软件选择较少。 |
国内大多数企业使用的都是 RHEL 或者 CentOS 作为服务器操作系统,RHEL 和 CentOS 都是 Red Hat 公司的产物,其中 CentOS 还可以认为是 RHEL 的克隆版本
RHEL VS CentOS
- RHEL 可以免费下载使用,但是要想获得官方授权,就必须购买授权协议(也就是所谓的服务),而且这个服务费并不便宜;
- CentOS 是使用免费的 RHEL 的源代码重新编译而成的,免费提供给大家,而且其本质上和 RHEL 没什么区别。在未购买服务的 RHEL 上,yum 是不能使用的;而在 CentOS 上,有免费的 yum 工具可以使用。
Linux 中的桌面环境也是一个程序,它和内核不是绑定的,两者的开发也不是同步的;给不带界面的 Linux 系统安装上一个桌面环境,你就能看到各种漂亮的窗口,并能用鼠标点击它们了。
个人电脑一般都会安装上桌面环境,这样操作更加便捷;Linux 服务器为了节省资源,一般都不会安装桌面环境。
KDE 桌面系统(K Desktop Environment):基于Qt,KDE 和 Windows 比较类似,许多流行的 Linux 发行版都提供了 KDE 桌面环境。KDE 允许你把应用程序图标和文件图标放置在桌面的特定位置上。单击应用程序图标,Linux 系统就会运行该应用程序。单击文件图标,KDE 桌面就会确定使用哪种应用程序来处理该文件。KDE 是所有桌面环境中最容易定制的。在其他桌面环境中,你需要几个插件、窗口组件和调整工具才可以定制环境,KDE 将所有工具和窗口组件都塞入到系统设置中。借助先进的设置管理器,可以控制一切,不需要任何第三方工具,就可以根据用户的喜好和要求来美化及调整桌面。KDE 项目组还还发了大量的可运行在 KDE 环境中的应用程序
- 优点:KDE 几乎是最先进最强大的桌面环境,它外观优美、高度可定制、兼容比较旧的硬件设备
- 缺点:Kmail 等一些组件的配置对新手来说过于复杂。
- 优点:简单易用,可通过插件来扩展功能。
- 缺点:对插件的管理能力比较差,也缺少其它桌面环境拥有的许多功能。
- 优点:界面简洁直观,可以通过第三方工具来深度定制,而且使用了平视显示器(HUD)等新技术。
- 缺点:默认的定制功能比较差劲,通知机制一般。
轻量级的桌面环境,能够兼容教旧的硬件设备。
Cinnamon:但 Cinnamon 与 MATE来源类似, 不同之处在于Cinnamon 建立在 Gnome 3 的基础上。Cinnamon 拥有 GNOME 和 Unity 等其它桌面环境所没有的种种功能。Cinnamon 是高度可定制的桌面环境,不需要任何外部插件、窗口组件和调整工具来定制桌面。Cinnamon 甚至可以通过设置管理器本身来下载并安装主题,甚至不需要打开互联网浏览器。Cinnamon 对任何刚接触 Linux 的新用户来说都非常方便,成熟完美,高度可性质。
图形化桌面环境的弊端在于它们要占用相当一部分的系统资源来保证正常运行。而运行 KDE 或 GNOME 桌面要占用的内存资源和较新的 Windows 桌面环境旗鼓相当
老旧 PC 可以运行一些低内存开销的图形化桌面应用,能运行许多基本的图形化程序,支持如文字处理、电子表格、数据库、绘图以及多媒体等功能。
桌面环境 | 说明 |
---|---|
Fluxbox | 一个没有面板的轻型桌面,仅有一个可用来启动程序的弹出式菜单。 |
Xfce | 和 KDE 很像的一个桌面,但少了很多图像以适应低内存环境。 |
JWM | Joe 的窗口管理器(Joe’s Window Manager),非常适用于低内存低硬盘空间环境的超轻型桌面。 |
Fvwm | 支持如虚拟桌面和面板等高级桌面功能,但能够在低内存环境中运行。 |
fvwm95 | 从 fvwm 衍生而来,但看起来更像是 Windows 95 桌面。 |
/etc
下有没有对应的目录,例如 gnome 目录或者 kde 目录,如果有的话,就说明已经安装了。开源软件就是把软件程序与源代码文件一起打包提供给用户,用户既可以不受限制地使用该软件的全部功能,也可以根据自己的需求修改源代码,甚至编制成衍生产品再次发布出去。
Linux 是一款开源软件,我们可以随意浏览和修改它的源代码。用户具有使用自由、修改自由、重新发布自由和创建衍生品自由。
开源软件的优点:
优点 | 说明 |
---|---|
低风险 | 使用闭源软件无疑是把命运交给他人,一旦封闭的源代码没有人来维护,你将进退维谷;而且相较于商业软件公司,开源社区很少存在倒闭的问题。 |
高品质 | 相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编写、维护、测试的用户量众多,一般的 bug 还没有等爆发就已经被修补。 |
低成本 | 开源工作者都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献一份力量,因此使用开源社区推动的软件项目可以节省大量的人力、物力和财力。 |
更透明 | 没人会把木马、后门等放到开放的源代码中,这样无疑是把自己的罪行暴露在阳光之下。 |
开源软件
软件 | 说明 |
---|---|
Linux | Linux 是一款开源的操作系统,它的内核由多名极客共同维护。Linux 是开源软件的经典之作、代表之作、巅峰之作。 |
Apache | 世界使用排名第一的 Web 服务器软件。 |
MySQL | 世界上最流行的关系型数据库,适合中小型网站。 |
Firefox | 火狐浏览器。在 Chrome 推出之前,Firefox 几乎是最快速的浏览器,直到现在也是 Web 开发人员的调试利器。 |
OpenOffice | 套跨平台的办公软件套件,类似 Microsoft Office。 |
PHP、Pyhon | 开源的编程语言。 |
Linux 遵循 GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用 Linux 的所有底层源代码,也可以自由地修改和再发布。由于 Linux 是自由软件,任何人都可以创建一个符合自己需求的 Linux 发行版。
特点 | 说明 |
---|---|
复制自由 | 允许把软件复制到任何人的电脑中,并且不限制复制的数量。 |
传播自由 | 允许软件以各种形式进行传播。 |
收费传播 | 允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。 |
修改自由 | 允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。 |
BSD(Berkeley Software Distribution,伯克利软件发布版)协议:BSD 协议允许用户可以使用、修改和重新发布遵循该许可的软件,并且可以将软件作为商业软件发布和销售,前提是需要满足下面三个条件:
BSD 对商业比较友好,很多公司在选用开源产品的时候都首选 BSD 协议,因为可以完全控制这些第三方的代码,甚至在必要的时候可以修改或者二次开发。
Apache 许可证版本(Apache License Version)协议:Apache 和 BSD 类似,都适用于商业软件。Apache 协议在为开发人员提供版权及专利许可的同时,允许用户拥有修改代码及再发布的自由。
现在热门的 Hadoop、Apache HTTP Server、MongoDB 等项目都是基于该许可协议研发的,程序开发人员在开发遵循该协议的软件时,要严格遵守下面的四个条件:
MIT(Massachusetts Institute of Technology)协议:限制最少的开源许可协议之一(比 BSD 和 Apache 的限制都少),只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用。使用 MIT 协议的软件有 PuTTY、X Window System、Ruby on Rails、Lua 5.0 onwards、Mono 等。
GUN LGPL(GNU Lesser General Public License,GNU 宽通用公共许可证):LGPL 是 GPL 的一个衍生版本,也被称为 GPL V2,该协议主要是为类库设计的开源协议。
LGPL 允许商业软件通过类库引用(link)的方式使用 LGPL 类库,而不需要开源商业软件的代码。这使得采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售。但是如果修改 LGPL 协议的代码或者衍生品,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以 LGPL 协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。