Linux系统介绍_适合小白的学习笔记

Linux系统介绍

 

1.操作系统:

操作系统(Operating System,OS)是软件的一部分,它是硬件基础上的第一层软件,是硬件和其它软件沟通的接口。操作系统会控制其他程序运行,管理系统资源,提供最基本的计算功能,如管理及配置内存、决定系统资源供需的优先次序等,同时还提供一些基本的服务程序,例如:

(1)文件系统:

提供计算机存储信息的结构,信息存储在文件中,文件主要存储在计算机的内部硬盘里,在目录的分层结构中组织文件。文件系统为操作系统提供了一种组织管理数据的方式。

(2)设备驱动程序:

提供连接计算机的每个硬件设备的接口,设备驱动器使程序能够写入设备,而不需要了解执行每个硬件的细节。

(3)用户接口:

操作系统需要为用户提供一种运行程序和访问文件系统的方法。如常用的Windows图形界面,可以理解为一种用户与操作系统交互的方式;智能手机的Android或iOS系统,也是一种操作系统的交互方式。

(4)系统服务程序:

当计算机启动时,会自启动许多系统服务程序,执行安装文件系统、启动网络服务、运行预定任务等操作。

目前流行的服务器和 PC 端操作系统有Linux、Windows、Unix等,手机操作系统有Android、iOS、Windows Phone(简称 WP),嵌入式操作系统有Windows CE、PalmOS、eCos、uClinux等。

 

2.开源:

(1)开源共享精神:用户具有使用自由、修改自由、重新发布自由以及创建衍生品的自由

 

(2)开源许可协议:

  • GNU GPLGNU General Public LicenseGNU通用公共许可证)许可协议:只要软件中包含了遵循GPL协议的产品或代码,该软件就必须也要遵循GPL许可协议且开源、免费,因此这个协议并不适合商用软件。遵循该协议的开源软件数量极其庞大,包括Linux系统在内的大多数的开源软件都是基于这个协议的。

GPL开源许可协议最大的4个特点如下所示:

① 复制自由:允许把软件复制到任何人的电脑中,并且不限制复制的数量。

② 传播自由:允许软件以各种形式进行传播。

③ 收费传播:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。

④ 修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。

  • BSDBerkeley Software Distribution,伯克利软件发布版)许可协议:用户可以使用、修改和重新发布遵循该许可的软件,并且可以将软件作为商业软件发布和销售,前提是需要满足下面3个条件:

① 如果再发布的软件中包含源代码,则源代码必须继续遵循BSD许可协议。

② 如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了BSD协议。

③ 不允许用原始软件的名字、作者名字或机构名称进行市场推广。

  • Apache许可证版本(Apache License Version许可协议在为开发人员提供版权及专利许可的同时,允许用户拥有修改代码及再发布的自由。该许可协议适用于商业软件,现在热门的Hadoop、Apache HTTP Server、MongoDB等项目都是基于该许可协议研发的,程序开发人员在开发遵循该协议的软件时,要严格遵守下面的4个条件:

① 该软件及其衍生品必须继续使用Apache许可协议。

② 如果修改了程序源代码,需要在文档中进行声明。

③ 若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息。

④ 如果再发布的软件中有声明文件,则需在此文件中标注Apache许可协议及其他许可协议。

  • MPLMozilla Public LicenseMozilla公共许可证)许可协议相较于GPL许可协议,MPL更加注重对开发者的源代码需求和收益之间的平衡。

  • MITMassachusetts Institute of Technology)许可协议:目前限制最少的开源许可协议之一,只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用。

(3)开源软件:

1)定义:

开源软件就是把软件程序与源代码文件一起打包提供给用户,用户既可以不受限制地使用该软件的全部功能,也可以根据自己的需求修改源代码,甚至编制成衍生产品再次发布出去。

2)典型开源软件:

  • Linux:Linux是一款开源的操作系统,它的内核由多名极客共同维护。Linux是开源软件的经典之作、代表之作、巅峰之作。
  • Apache:世界使用排名第一的Web服务器软件。
  • MySQL:世界上最流行的关系型数据库,适合中小型网站。
  • Firefox:火狐浏览器。在Chrome推出之前,Firefox几乎是最快速的浏览器,直到现在也是Web开发人员的调试利器。
  • OpenOffice:套跨平台的办公软件套件,类似Microsoft Office。
  • GCC:C语言/C++编译器。
  • Java、PHP、Python:开源的编程语言。

3)特点:

  • 低风险:使用闭源软件无疑是把命运交给他人,一旦封闭的源代码没有人来维护,你将进退维谷;而且相较于商业软件公司,开源社区很少存在倒闭的问题。
  • 高品质:相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编写、维护、测试的用户量众多,一般的bug还没有等爆发就已经被修补。
  • 低成本:开源工作者都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献一份力量,因此使用开源社区推动的软件项目可以节省大量的人力、物力和财力。
  • 更透明:没有哪个笨蛋会把木马、后门等放到开放的源代码中,这样无疑是把自己的罪行暴露在阳光之下。

4)开源社区:国内外开源社区推荐:开源中国、ChinaUnix、GitHub、Apache、SourceForge。

 

3.Linux简介:

Linux是一套免费使用和自由传播的操作系统内核,是一个基于POSIXUnix的多用户、多任务、支持多线程和多CPU的操作系统内核。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统内核。

(1)POSIX:

POSIX表示可移植操作系统接口¹(Portable Operating System Interface of UNIX,缩写为 POSIX ),POSIX标准定义了操作系统应该为系统调用²(即函数)提供API(Application Programming Interface,应用程序接口)标准。简单来说,一个POSIX兼容的操作系统编写的程序,可以在任何其它的POSIX操作系统(即使是来自另一个厂商)上编译执行。


说明¹操作系统是用户与计算机硬件系统之间的接口,用户通过操作系统的帮助,可以快速、有效和安全、可靠地操纵计算机系统中的各类资源,以处理自己的程序。

用户接口:操作系统专门为用户提供了“用户与操作系统的接口”,通常称为用户接口(User Interface,UI。该接口支持用户与OS之间进行交互,即由用户向OS请求提供特定的服务,而系统则把服务的结果返回给用户。操作系统提供的用户接口一般有程序接口、图形接口、命令接口三种:

① 程序接口:操作系统向编程人员提供了“程序与操作系统的接口”,简称程序接口,又称应用程序接口。该接口是为程序员在编程时使用的,系统和应用程序通过这个接口,可在执行中访问系统中的资源和取得OS的服务,它也是程序能取得操作系统服务的唯一途径。大多数操作系统的程序接口是由一组系统调用(system call)组成,每一个系统调用都是一个能完成特定功能的子程序。

  • 应用程序接口又称为应用编程接口Application Programming Interface,API),侧重于和系统交互。是一组定义函数、程序及协议的集合,通过API接口实现计算机软件之间的相互通信。API的一个主要功能是提供通用功能集。API同时也是一种中间件,为各种不同平台提供数据共享。程序设计的实践中,编程接口的设计首先要使软件系统的职责得到合理划分。良好的接口设计可以降低系统各部分的相互依赖,提高组成单元的内聚性,降低组成单元间的耦合程度,从而提高系统的可维护性和可扩展性。

② 图形接口:图形用户接口(Graphic User Interface,GUI),主要提供可视化界面方面的接口。

③ 命令接口:为了便于用户直接或间接控制自己的作业,操作系统向用户提供了命令接口。命令接口是用户利用操作系统命令组织和控制作业的执行或管理计算机系统。命令是在命令输入界面上输入,由系统在后台执行,并将结果反映到前台界面或者特定的文件内。命令接口可以进一步分为联机用户接口和脱机用户接口。


说明²系统调用是内核提供的程序接口API,是应用程序和硬件设备之间的中间层:

  • 为应用程序提供了系统服务和硬件抽象能力,例如,当需要读文件时,应用程序可以不管磁盘类型和介质,甚至不用去管文件所在的文件系统到底是哪种类型;
  • 系统调用保证了系统的稳定和安全;
  • 每个进程都运行在虚拟系统中;
 

系统调用类型:

① 文件操作类系统调用:如打开、创建、读取、删除、修改文件;

② 进程控制类系统调用:如创建进程、设置或获取进程属性等;

③ 通信类系统调用:创建进程间的通信连接,发送、接收消息,或其他的通信方式;

④ 设备管理类系统调用:打开、关闭和操作设备;

⑤ 信息维护类系统调用:在用户程序和OS之间传递信息。例如,系统向用户程序传送当前时间、日期、操作系统版本号等;


(2)Unix:

Unix操作系统由肯•汤普森(Ken Thompson)和丹尼斯•里奇(Dennis Ritchie)发明,诞生于20世纪60年代末,Windows诞生于20世纪80年代中期,Linux诞生于20世纪90年代初。"Unix是Linux的父亲"。

(3)类Unix:

类Unix系统(Unix-like)既包括各种传统的Unix系统,比如 FreeBSD、OpenBSD、Sun Solaris 等;还包括与Unix相似的系统,比如Linux、QNX、Minix等,它们都相当程度地继承了原始Unix的特性,有很多相似之处,并且都在一定程度上遵守POSIX规范(Unix可移植接口规范);其次,在手机领域,Android和iOS都是类Unix系统。Linux几乎是最著名的一个类UNIX系统。

 

4.Linux历史:

  • 20世纪60年代,MIT开发分时操作系统 ¹(Compatible Time-Sharing System),支持30台终端访问主机。

说明¹:分时操作系统使一台计算机可以同时为多个用户服务,连接计算机的终端用户交互式发出命令,操作系统采用时间片轮转的方式处理用户的服务请求并在终端上显示结果(操作系统将CPU的时间划分成若干个片段,称为时间片)。操作系统以时间片为单位,轮流为每个终端用户服务,每次服务一个时间片。


  • 1965年,Bell贝尔实验室、MIT、GE(通用电气公司)准备开发Multics系统,为了同时支持300个终端访问主机,但是1969年,失败了。
  • 1969年,Ken Thompson(C语言之父)利用汇编语言开发了FIle Server System(Unics,即Unix的原型)。
  • 1973年,Dennis Ritchie和Ken Thompson发明了C语言,而后写出了Unix的内核。
  • 1977年,Berkeley大学的Bill Joy针对他的机器修改Unix源码,称为BSD(Berkeley Software Distribution)。
  • 1979年,Unix发布System V,用于个人计算机。
  • 1984年,因为Unix规定:“不能对学生提供源码”,Tanenbaum老师自己编写兼容于Unix的Minix,用于教学。
  • 1984年,Stallman开始GNU(GNU's NotUnix)项目,创办FSF(Free Software Foundation)基金会。
  • 1985年,为了避免GNU开发的自由软件被其他人用作专利软件,因此创建GPL(General Public License)版权声明。
  • 1988年,MIT为了开发GUI,成立了XFree86的组织。
  • 1991年,芬兰赫尔辛基大学的研究生Linus Torvalds基于gcc、bash开发了针对386机器的Lniux内核。
  • 1994年,Torvalds发布Linux-v1.0。
  • 1996年,Torvalds发布Linux-v2.0,确定了Linux的吉祥物:企鹅。

 

5.Linux版本:

从技术上来说,李纳斯•托瓦兹开发的Linux只是一个内核。内核指的是一个提供设备驱动、文件系统、进程管理、网络通信等功能的系统软件,内核并不是一套完整的操作系统,它只是操作系统的核心。一些组织或厂商将Linux内核与各种软件和文档包装起来,并提供系统安装界面和系统配置、设定与管理工具,就构成了Linux的发行版本。Linux发行套件系统是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品。

(1)发行版本分类Linux内核与应用软件的集合):

  • 商业公司维护的发行版本,以著名的Red Hat、CentOS为代表;
  • 社区组织维护的发行版本,以Debian为代表。

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
开放的开发模式,且易于进行软件包升级
apt
Ubuntu
优秀已用的桌面环境,基于Debian构建
apt
CentOS
CentOS是一种对 RHEL(Red Hat Enterprise Linux)源代码再编译的产物,由于Linux是开发源代码的操作系统,并不排斥样基于源代码的再分发,CentOS就是将商业的Linux操作系统RHEL进行源代码再编译后分发,并在RHEL的基础上修正了不少已知的漏洞
rpm
Fedora Core
拥有数量庞人的用户,优秀的社区技术支持,并且有许多创新
up2date(rpm),yum(rpm)
SUSE Linux
专业的操作系统,易用的YaST软件包管理系统
YaST(rpm),第三方apt(rpm)软件(repository)
Mandriva
操作界面友好,使用图形配置工具,有庞大的社区进行技术支持,支持NTF分区的大小变更
rpm
KNOPPIX
可以直接在CD上运行,具有优秀的硬件检测和适配能力,可作为系统的急救盘使用
apt
Gentoo Linux
高度的可定制性,使用手册完整
portage

2)发行版本查询:

方法一:
[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

6.Linux/Unix系统结构:

Unix/Linux系统可以分为3个层次。如下图,底层是Unix/Linux操作系统,即系统内核(Kernel);中间层是Shell层,即命令解释层;高层则是应用层。Linux文件系统贯穿了整个内核层、Shell层和应用层。Linux核心思想是“一切皆文件”。

Linux系统结构

(1)内核层:

内核层是Linux/Unix系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源),有效地组织进程的运行,从而扩展硬件的功能,提高资源的利用效率,为用户提供方便、高效、安全、可靠的应用环境。

1)内核模块:进程调度模块、内存管理模块、文件系统模块、进程间通信模块和网络接口模块。

Linux系统内核模块结构及其依赖关系
 

由上图所示,所有的模块都与进程调度模块存在依赖关系。因为它们都需要依靠进程调度程序来挂起(暂停)或重新运行它们的进程。通常,一个模块会在等待硬件操作期间被挂起,而在操作完成后才可以继续运行。

2)内核功能:

① 内存管理:

  • 内核分配调用:包括静态分配方式,动态方配方式。
  • 内存保护:确保每个程序在自己的内存空间运行互不干扰。方法是使用界限寄存器或存储保护键。
  • 地址映射:实现程序的逻辑地址与存储器的物理地址之间的映射功能。
  • 内存扩充:从逻辑上扩充物理内存,以允许比物理内存更大的程序在机器内运行,为此操作系统必须有请求调入功能与置换功能。

② 进程管理:

  • 进程控制:包括进程创建、进程撤销、进程阻塞、进程唤醒。
  • 进程协调:包括进程运行的异步性,因此进程同步的任务是对诸进程的运行协调,包括两种方式:进程互斥方式与进程同步方式。
  • 进程通信:主要完成同一台机器设备上不同进程间通信和不同机器上进程间的通信,以共同完成相同的任务。
  • 进程调度:操作系统按照一定的规则对等待运行的多道程序进行调度,以保证每个进程都能有机会得到运行,并最终完成。

③ 文件管理:

  • 文件存储空间的管理:为每一文件分配必要的外存空间。为提高外部存储空间的利用率,系统应设置相应的数据结构,用于记录文件存储空间的使用情况。
  • 目录管理:为了方便对用户的文件进行管理,对文件系统建立一定结构的目录结构,同时要求快速的目录查询手段。
  • 文件的读、写管理和存取控制:利用一定的系统调用对文件进行读写操作。同时,为防止系统中文件被非法访问和窃取,文件系统中必须提供有效的存取控制功能。

④ 设备管理:

  • 缓存管理:管理各种类型的缓冲区,如字符缓冲区和块缓冲区,以缓和CPU和I/O速度不匹配的矛盾,最终达到提高CPU和I/O设备的利用率,进而提高系统的吞吐量的目的。
  • 设备分配:根据用户的I/O请求,为之分配其所需要的设备。
  • 设备处理:又称为设备驱动程序,任务是实现CPU和设备控制器之间的通信。
  • 设备独立性和虚拟设备:一方面保证用户程序独立于物理设备,另一方面保证多个进程能并发地共享一个设备。

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

主版本.次版本.释放版本 - 修改版本

  • 第一个数字:3,主版本号。
  • 第二个数字:10,次版本号。     #如果是偶数,则为稳定版本;如果是奇数,则为开发版本
  • 3.10表示内核系列。     #一般用头两个数字(主次版本)描述内核系列
  • 第三个数字:0,修改版本号,表示修改的次数。     #不再使用奇偶数代表稳定版和开发版。0为稳定版,其他为开发版
  • 第四个数字:表示这个当前版本的第862次修改。
  • el表示Enterprise Linux,7表示Centos7。
  • x86_64表示CPU结构,即64位。

② CPU版本号查询:
[root@localhost ~]# lscpu     #Linux查看cpu相关信息,包括型号、主频、内核信息等
......

(2)Shell层:

Shell层是与用户直接交互的界面。用户可以在提示符下输入命令行,由Shell解释执行并输出相应结果或者有关信息,所以我们也把Shell称作命令解释器,利用系统提供的丰富命令可以快捷而简便地完成许多工作。

Shell是介于用户和操作系统核心程序(Kernel)间的一个接口;Shell是Linux中的命令行。

 

1)Shell分类:

  • Bourne Shell(sh)¹/bin/sh,/bin/bash
  • C Shell(csh):/bin/csh,/bin/tcsh
  • Korn Shell(ksh):是Bourne Shell的超集
  • ......

说明¹:sh是Unix最初使用的shell,并且在每种Unix上都可以使用。sh在shell编程方面相当优秀,但在处理与用户的交互方面做得不如csh和ksh。


2)Bourne-Again Shellbash):bash是sh的升级版。Linux(Centos7)默认的Shell是bash。

bash的优点:
  • 命令和路径补全功能(Tab键)
  • 命令记忆功能(history命令)
  • 命令别名设置功能((un)alias命令)
  • 命令的执行结果状态(0成功、1-255失败)
  • 命令行展开(~、~username、{a,b,c……}
  • I/O重定向(>、>>……)、管道(|)、通配符(*、?、[ ]、^……)
  • bash快捷键(Ctrl+L清屏、Ctrl+C终止执行……)
  • 程序脚本(bash script)
  • 灵活和强大的编程接口
  • 友好的用户界面
 

(3)应用层:

应用层提供基于X Window协议的图形环境。X Window协议定义了一个系统所必须具备的功能(就如同TCP/IP是一个协议,定义软件所应具备的功能),可系统能满足此协议及符合X协会其他的规范,便可称为X Window。

 

7.Linux特点:

  • 免费、开源
  • 多用户、多任务
  • 丰富的网络功能
  • 良好的用户界面
  • 出色的速度和性能
  • 可靠的系统安全
  • 良好的可移植性
  • 具有标准兼容性
 

8.Linux应用领域:

今天各种场合都有使用各种Linux发行版本,从嵌入式设备到超级计算机,并且在服务器领域确定了地位,通常服务器使用LAMP(Linux+Apache+MySQL+PHP)或 LNMP(Linux+Nginx+MySQL+PHP)组合。

目前Linux不仅在家庭与企业中使用,并且在政府中也很受欢迎,如下:

  • 巴西联邦政府由于支持Linux而世界闻名。
  • 有新闻报道俄罗斯军队自己制造的Linux发布版的,做为G.H.ost项目已经取得成果。
  • 印度的Kerala联邦计划在向全联邦的高中推广使用Linux。
  • 中华人民共和国为取得技术独立,在龙芯处理器中排他性地使用Linux。
  • 在西班牙的一些地区开发了自己的Linux发布版,并且在政府与教育领域广泛使用,如Extremadura地区的gnuLinEx和Andalusia地区的Guadalinex。
  • 葡萄牙同样使用自己的Linux发布版Caixa Mágica,用于Magalh?es笔记本电脑和e-escola 政府软件。
  • 法国和德国同样开始逐步采用Linux。
 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值