操作系统(Operating System,OS)是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的接口。操作系统会控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序,例如:
(1)文件系统:
提供计算机存储信息的结构,信息存储在文件中,文件主要存储在计算机的内部硬盘里,在目录的分层结构中组织文件。文件系统为操作系统提供了一种组织管理数据的方式。
(2)设备驱动程序:
提供连接计算机的每个硬件设备的接口,设备驱动器使程序能够写入设备,而不需要了解执行每个硬件的细节。
(3)用户接口:
操作系统需要为用户提供一种运行程序和访问文件系统的方法。如常用的Windows图形界面,可以理解为一种用户与操作系统交互的方式;智能手机的Android或iOS系统,也是一种操作系统的交互方式。
(4)系统服务程序:
目前流行的服务器和 PC 端操作系统有Linux、Windows、Unix等,手机操作系统有Android、iOS、Windows Phone(简称 WP),嵌入式操作系统有Windows CE、PalmOS、eCos、uClinux等。
GNU GPL(GNU General Public License,GNU通用公共许可证)许可协议:只要软件中包含了遵循GPL协议的产品或代码,该软件就必须也要遵循GPL许可协议且开源、免费,因此这个协议并不适合商用软件。遵循该协议的开源软件数量极其庞大,包括Linux系统在内的大多数的开源软件都是基于这个协议的。
GPL开源许可协议最大的4个特点如下所示:
① 复制自由:允许把软件复制到任何人的电脑中,并且不限制复制的数量。
② 传播自由:允许软件以各种形式进行传播。
③ 收费传播:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。
④ 修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。
BSD(Berkeley Software Distribution,伯克利软件发布版)许可协议:用户可以使用、修改和重新发布遵循该许可的软件,并且可以将软件作为商业软件发布和销售,前提是需要满足下面3个条件:
① 如果再发布的软件中包含源代码,则源代码必须继续遵循BSD许可协议。
② 如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了BSD协议。
③ 不允许用原始软件的名字、作者名字或机构名称进行市场推广。
Apache许可证版本(Apache License Version)许可协议:在为开发人员提供版权及专利许可的同时,允许用户拥有修改代码及再发布的自由。该许可协议适用于商业软件,现在热门的Hadoop、Apache HTTP Server、MongoDB等项目都是基于该许可协议研发的,程序开发人员在开发遵循该协议的软件时,要严格遵守下面的4个条件:
① 该软件及其衍生品必须继续使用Apache许可协议。
② 如果修改了程序源代码,需要在文档中进行声明。
③ 若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息。
④ 如果再发布的软件中有声明文件,则需在此文件中标注Apache许可协议及其他许可协议。
MPL(Mozilla Public License,Mozilla公共许可证)许可协议:相较于GPL许可协议,MPL更加注重对开发者的源代码需求和收益之间的平衡。
MIT(Massachusetts Institute of Technology)许可协议:目前限制最少的开源许可协议之一,只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用。
1)定义:
开源软件就是把软件程序与源代码文件一起打包提供给用户,用户既可以不受限制地使用该软件的全部功能,也可以根据自己的需求修改源代码,甚至编制成衍生产品再次发布出去。
2)典型开源软件:
3)特点:
4)开源社区:国内外开源社区推荐:开源中国、ChinaUnix、GitHub、Apache、SourceForge。
Linux是一套免费使用和自由传播的操作系统内核,是一个基于POSIX和Unix的多用户、多任务、支持多线程和多CPU的操作系统内核。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统内核。
POSIX表示可移植操作系统接口¹(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为系统调用²(即函数)提供API(Application Programming Interface,应用程序接口)标准。简单来说,一个POSIX兼容的操作系统编写的程序,可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。
说明¹:操作系统是用户与计算机硬件系统之间的接口,用户通过操作系统的帮助,可以快速、有效和安全、可靠地操纵计算机系统中的各类资源,以处理自己的程序。
用户接口:操作系统专门为用户提供了“用户与操作系统的接口”,通常称为用户接口(User Interface,UI)。该接口支持用户与OS之间进行交互,即由用户向OS请求提供特定的服务,而系统则把服务的结果返回给用户。操作系统提供的用户接口一般有程序接口、图形接口、命令接口三种:
① 程序接口:操作系统向编程人员提供了“程序与操作系统的接口”,简称程序接口,又称应用程序接口。该接口是为程序员在编程时使用的,系统和应用程序通过这个接口,可在执行中访问系统中的资源和取得OS的服务,它也是程序能取得操作系统服务的唯一途径。大多数操作系统的程序接口是由一组系统调用(system call)组成,每一个系统调用都是一个能完成特定功能的子程序。
② 图形接口:图形用户接口(Graphic User Interface,GUI),主要提供可视化界面方面的接口。
③ 命令接口:为了便于用户直接或间接控制自己的作业,操作系统向用户提供了命令接口。命令接口是用户利用操作系统命令组织和控制作业的执行或管理计算机系统。命令是在命令输入界面上输入,由系统在后台执行,并将结果反映到前台界面或者特定的文件内。命令接口可以进一步分为联机用户接口和脱机用户接口。
说明²:系统调用是内核提供的程序接口API,是应用程序和硬件设备之间的中间层:
系统调用类型:
① 文件操作类系统调用:如打开、创建、读取、删除、修改文件;
② 进程控制类系统调用:如创建进程、设置或获取进程属性等;
③ 通信类系统调用:创建进程间的通信连接,发送、接收消息,或其他的通信方式;
④ 设备管理类系统调用:打开、关闭和操作设备;
⑤ 信息维护类系统调用:在用户程序和OS之间传递信息。例如,系统向用户程序传送当前时间、日期、操作系统版本号等;
Unix操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明,诞生于20世纪60年代末,Windows诞生于20世纪80年代中期,Linux诞生于20世纪90年代初。"Unix是Linux的父亲"。
类Unix系统(Unix-like)既包括各种传统的Unix系统,比如 FreeBSD、OpenBSD、Sun Solaris 等;还包括与Unix相似的系统,比如Linux、QNX、Minix等,它们都相当程度地继承了原始Unix的特性,有很多相似之处,并且都在一定程度上遵守POSIX规范(Unix可移植接口规范);其次,在手机领域,Android和iOS都是类Unix系统。Linux几乎是最著名的一个类UNIX系统。
说明¹:分时操作系统使一台计算机可以同时为多个用户服务,连接计算机的终端用户交互式发出命令,操作系统采用时间片轮转的方式处理用户的服务请求并在终端上显示结果(操作系统将CPU的时间划分成若干个片段,称为时间片)。操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片。
从技术上来说,李纳斯•托瓦兹开发的Linux只是一个内核。内核指的是一个提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件,内核并不是一套完整的操作系统,它只是操作系统的核心。一些组织或厂商将Linux内核与各种软件和文档包装起来,并提供系统安装界面和系统配置、设定与管理工具,就构成了Linux的发行版本。Linux发行套件系统是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品。
1)Red Hat Linux:
Red Hat(红帽公司)创建于1993年,是目前世界上资深的Linux厂商,也是最获认可的Linux品牌。
Red Hat 公司的产品主要包括RHEL(Red Hat Enterprise Linux,收费版本)和CentOS(RHEL的社区克隆版本,免费版本)、Fedora Core(由Red Hat桌面版发展而来,免费版本)。
2)CentOS Linux:
CentOS(Community Enterprise Operating System,中文意思是社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS完全开源。
3)Ubantu Linux:
Ubuntu基于知名的Debian Linux发展而来,界面友好,容易上手,对硬件的支持非常全面,是目前最适合做桌面系统的Linux发行版本,而且Ubuntu的所有发行版本都免费提供。
4)国产Linux:红旗、中标、麒麟、深度、蓝点等等。
......
版本名称
|
网 址
|
特 点
|
软件包管理器
|
Debian Linux
|
www.debian.org
|
开放的开发模式,且易于进行软件包升级
|
apt
|
Ubuntu
|
www.ubuntu.com
|
优秀已用的桌面环境,基于Debian构建
|
apt
|
CentOS
|
www.centos.org
|
CentOS是一种对 RHEL(Red Hat Enterprise Linux)源代码再编译的产物,由于Linux是开发源代码的操作系统,并不排斥样基于源代码的再分发,CentOS就是将商业的Linux操作系统RHEL进行源代码再编译后分发,并在RHEL的基础上修正了不少已知的漏洞
|
rpm
|
Fedora Core
|
www.redhat.com
|
拥有数量庞人的用户,优秀的社区技术支持,并且有许多创新
|
up2date(rpm),yum(rpm)
|
SUSE Linux
|
www.suse.com
|
专业的操作系统,易用的YaST软件包管理系统
|
YaST(rpm),第三方apt(rpm)软件(repository)
|
Mandriva
|
www.mandriva.com
|
操作界面友好,使用图形配置工具,有庞大的社区进行技术支持,支持NTF分区的大小变更
|
rpm
|
KNOPPIX
|
www.knoppix.com
|
可以直接在CD上运行,具有优秀的硬件检测和适配能力,可作为系统的急救盘使用
|
apt
|
Gentoo Linux
|
www.gentoo.org
|
高度的可定制性,使用手册完整
|
portage
|
[root@localhost ~]# lsb_release -a #列出所有版本信息
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.6.1810 (Core)
Release: 7.6.1810
Codename: Core
方法二:
[root@localhost ~]# cat /etc/issue #适用于所有Linux发行版本
\S
Kernel \r on an \m
Unix/Linux系统可以分为3个层次。如下图,底层是Unix/Linux操作系统,即系统内核(Kernel);中间层是Shell层,即命令解释层;高层则是应用层。Linux文件系统贯穿了整个内核层、Shell层和应用层。Linux核心思想是“一切皆文件”。
内核层是Linux/Unix系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。
1)内核模块:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。
由上图所示,所有的模块都与进程调度模块存在依赖关系。因为它们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。通常,一个模块会在等待硬件操作期间被挂起,而在操作完成后才可以继续运行。
2)内核功能:
① 内存管理:
② 进程管理:
③ 文件管理:
④ 设备管理:
3)内核版本:
① 内核版本号查询:
方法一:
[root@localhost ~]# uname -r #参数r表示显示所有信息
3.10.0-862.el7.x86_64
方法二:
[root@localhost ~]# cat /proc/version #cat后面注意空格
......
3.10.0-862.el7.x86_64
主版本.次版本.释放版本 - 修改版本
[root@localhost ~]# lscpu #Linux查看cpu相关信息,包括型号、主频、内核信息等
......
Shell层是与用户直接交互的界面。用户可以在提示符下输入命令行,由Shell解释执行并输出相应结果或者有关信息,所以我们也把Shell称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。
Shell是介于用户和操作系统核心程序(Kernel)间的一个接口;Shell是Linux中的命令行。
1)Shell分类:
说明¹:sh是Unix最初使用的shell,并且在每种Unix上都可以使用。sh在shell编程方面相当优秀,但在处理与用户的交互方面做得不如csh和ksh。
2)Bourne-Again Shell(bash):bash是sh的升级版。Linux(Centos7)默认的Shell是bash。
应用层提供基于X Window协议的图形环境。X Window协议定义了一个系统所必须具备的功能(就如同TCP/IP是一个协议,定义软件所应具备的功能),可系统能满足此协议及符合X协会其他的规范,便可称为X Window。
今天各种场合都有使用各种Linux发行版本,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用LAMP(Linux+Apache+MySQL+PHP)或 LNMP(Linux+Nginx+MySQL+PHP)组合。
目前Linux不仅在家庭与企业中使用,并且在政府中也很受欢迎,如下: