Linux基础

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、Linux发展历程

1.1、Linux前身-Unix

        1968年Multics 项目

        MIT|、Bell 实验室、美国通用电气有限公司走到了一起致力于开发Multics项目。到后期由于开发进度不是很好MIT 和Bell实验室相继离开这个项目的开发最终导致项目搁浅。

        1970年 Unix诞生

        当时在开发Multics项目的时候实验室中有一个开发成员Ken Thompson汤姆森.肯 UNIX之父开发了一 款游戏 (ravel space:遨游太空)因为两个实验室相继离开项目开发导致这名开发人员没法玩游戏。后来他提议组织人员重新在Multics项目之上重新的开发也就出现了1970 年的Unix。当时Unix操作系统是使用的汇编语言(机器语言)开发的。

        1973年用C语言重写 Unix

        因为汇编语言有一一个最大的局限性对于计算机硬件过于依赖。导致移植性不好所以后斯在1973年使用了C语言对其进行重新开发。

        1975年Bell 实验室允许大学使用Unix

        1975年Bell 实验室允许大学使用Unix操作系统用于教学作用而不允许用于商业用途。

        1984年Richard Stallman(斯特曼)发起了开发自由软件运动成立了自由软件基金会Free Software Foundation和GNUGNU’s not Unix项目其主要目标是建立一套完整自由的可移植的类Unix操作系统。GNU的几个重要的系统

                1、Emacs 代码编辑器工具

                2、GNU C(gcc)

                3、GNU C Library glibc

                4、bash shell

        1985年为了避免GNU开发的自由软件被其他人用作专利软件因此创建GPLGeneral Public License版权声明

        GPL(General Public License) 一个开源产品的协议意思为在当前开源产品的基础上二次开发必须公开源码。

1.2、Linux 诞生

        Linux的开发作者Linux之父 linus(李纳斯. 托瓦兹)。

        李纳斯当时学校使用的就是Unix 操作系统他使用bash、gcc等工具写了一个内核程序可以在386机器上运行放到了学校为学生开放的网站上原先他把文件命名写成了Linus's Unix,后期网络管理发现之后觉得这个名字不好自己手动的将名字改成Linux.随后其他同学下载之后发现这个版本还是挺好用的随后都把自己代码贡献给李纳斯。从此开始Linux的发展之路。

                1991年0.0.1版本

                1992年0.0.2 版本

                1994年1.0 版本

                2003年2.6 版本

        上述提及的版本号并不是分支版本而是指linux的内核版本。

二、Linux系统特点

        1、免费且开源

        2、完全兼容POSIX 1.0标准

        3、多用户、多任务

        4、拥有良好的界面

        5、支持多种平台

        6、Windows属于:单用户、多任务Linux属于:多用户、多任务。

三、Linux 分支

        现在比较有名的ubuntu、debian、 centosCommunity Enterprise Operating System、 redhat、 suse 等等 。

        1、DebianDebian运行起来极其稳定这使得它非常适合用于服务器。

        2、Gentoo与Debian一样Gentoo这款操作系统也包含数量众多的软件包。Gentoo并非以预编译的形式出现而是每次需要针对每个系统进行编译。

        3、UbuntuUbuntu是Debian的一款衍生版侧重于它在这个市场的应用在服务器、云计算、甚至一些运行Ubuntu Linux的移动设备上很常见。

        4、Damn Vulnerable Linux易受攻击的Linux根本不是一般意义上的优秀的Linux发行版它的目的在于借机训练Linux管理员。

        5、红帽企业级Linux这是第一款面向商业市场的Linux发行版。它有服务器版本支持众多处理器架构。

        6、CentOSCentOS是一款企业级Linux发行版它使用红帽企业级Linux中的免费源代码重新构建而成。这款重构版完全去掉了注册商标以及Binary程序包方面一个非常细微的变化。

        7、FedoraFedora是红帽公司的一个测试平台产品在成为企业级发行版之前在该平台上进行开发和测试。Fedora同是一款非常好的发行版有庞大的用户论坛软件库中还有为数不少的软件包。Fedora同样使用YUM来管理软件包。

        8、Kali LinuxKali Linux是Debian的一款衍生版。Kali旨在用于渗透测试。

        9、ArchArch是一款采用滚动发行方式的操作系统只要安装一次就够了每当发行了某个新版本就可以升级发行版无需重新安装。Pacman是Arch Linux的软件包管理器。Arch Linux既支持X86处理器架构又支持X86_64架构安装程序可以从光盘或U盘来运行。

        10、OpenSuseOpenSuse这款Linux发行版是免费的并不供商业用途使用仍然供个人使用。OpenSuse的真正竞争对手是红帽企业级Linux。它使用Yast来管理软件包。有了Yast使用和管理服务器应用程序就非常容易。

四、Linux系统架构

 

        Linux系统一般有4个主要部分内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构它们使得用户可以运行程序、管理文件并使用系统。

        内核的接口是一个软件层称之为系统调用如上图中的阴影部分通用库函数是建立在系统调用接口之上应用程序可以自由的使用这两者。Shell是一种特殊的应用程序它提供接口来运行其他的应用程序。广义上来说操作系统是内核和所有其他的软件的集合这些软件使得计算机能够发挥作用并给予计算机以独有的特性。其他的软件包括系统工具应用程序shells通用函数库等等。

4.1、系统调用

        为了方便调用内核Linux将内核的功能接口制作成系统调用system call。系统调用看起来就像C语言的函数。你可以在程序中直接调用。Linux系统有两百多个这样的系统调用。用户不需要了解内核的复杂结构就可以使用内核。系统调用是操作系统的最小功能单位。一个操作系统以及基于操作系统的应用都不可能实现超越系统调用的功能。

        在命令行中输入$man 2 syscalls可以查看所有的系统调用。你也可以通过man 2 read来查看系统调用。在这两个命令中的2都表示我们要在2类系统调用类中查询 具体各个类是什么可以通过$man man看到

        系统调用提供的功能非常基础所以使用起来很麻烦。一个简单的给变量分配内存空间的操作就需要动用多个系统调用。Linux定义一些库函数library routine来将系统调用组合成某些常用的功能。上面的分配内存的操作可以定义成一个库函数像malloc这样的函数。再比如说在读取文件的时候系统调用要求我们设置好所需要的缓冲。我可以使用Standard IO库中的读取函数。这个读取函数既负责设置缓冲又负责使用读取的系统调用函数。使用库函数对于机器来说并没有效率上的优势但可以把程序员从细节中解救出来。库函数就像是汉字的偏旁部首它由笔画组成但使用偏旁部首更容易组成字比如“铁”。当然你也完全可以不使用库函数而直接调用系统函数就像“人”字一样不用偏旁部首。

4.2、Linux shell

        shell是一个特殊的应用。很多用户将它称为命令行 。shell是一个命令解释器interpreter当我们输入“ls -l”的时候它将此字符串解释为

                1、在默认路径找到该文件/bin/ls

                2、执行该文件并附带参数“-l”。

        Shell接着通过系统调用指挥内核实现具体的重定向或者管道。在没有图形界面之前shell充当了用户的界面当用户要运行某些应用时通过shell输入命令来运行程序。shell是可编程的它可以执行符合shell语法的文本。这样的文本叫做shell脚本script。可以在架构图中看到shell下通系统调用上通各种应用同时还有许多自身的小工具可以使用。Shell脚本可以在寥寥数行中实现复杂的功能。

  UNIX的一条哲学是让每个程序尽量独立的做好一个小的功能。而shell充当了这些小功能之间的“胶水”让不同程序能够以一个清晰的接口文本流协同工作从而增强各个程序的功能。这也是Linux老鸟鼓励新手多用shell少用图形化界面的原因之一。

        目前主要有下列版本的shell。

                1、Bourne Shell是贝尔实验室开发的。  

                2、BASH是GNU的Bourne Again Shell是GNU操作系统上默认的shell,大部分linux的发行套件使用的都是这种shell。

                3、Korn Shell是对Bourne SHell的发展在大部分内容上与Bourne Shell兼容。

                4、C Shell是SUN公司Shell的BSD版本。

4.3、Linux文件系统

        Linux 系统能够支持的文件系统非常多除 Linux 默认文件系统 Ext2、Ext3 和 Ext4 之外还能支持 fat16、fat32、NTFS需要重新编译内核等 Windows 文件系统。也就是说Linux 可以通过挂载的方式使用 Windows 文件系统中的数据。Linux 所能够支持的文件系统在 "/usr/src/kemels/当前系统版本/fs" 目录中需要在安装时选择该目录中的每个子目录都是一个可以识别的文件系统。

4.4、Linux内核

        Linux内核是世界上最大的开源项目之一,内核是与计算机硬件接口的易替换软件的最低级别。它负责将所有以“用户模式”运行的应用程序连接到物理硬件并允许称为服务器的进程使用进程间通信(IPC)彼此获取信息。

        内核是操作系统的核心具有很多最基本功能它负责管理系统的进程、内存、设备驱动程序、文件和网络系统决定着系统的性能和稳定性。Linux 内核由如下几部分组成内存管理、进程管理、设备驱动程序、文件系统和网络管理等。如图

 

 

 

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux