1、Linux操作系统基本结构介绍:
操作系统:
英文名称Operating System,简称OS,是计算机系统中必不可少的基础系统软件,它是应用程序运行以及用户操作必备的基础环境支撑,是计算机系统的核心。
操作系统的作用是管理和控制计算机系统中的硬件和软件资源,例如,它负责直接管理计算机系统的各种硬件资源,如对CPU、内存、磁盘等的管理,同时对系统资源所需的优先次序进行管理。操作系统还可以控制设备的输入、输出以及操作网络与管理文件系统等事务。同时,它也负责对计算机系统中各类软件资源的管理。例如各类应用软件的安装、设置运行环境等。
操作系统是计算机系统中比不可少的基础系统软件,它的作用是负责管理和控制计算机系统中的硬件和软件资源,合理组织计算机系统的工作流程,以便有效的利用这些资源为使用者提供一个功能强大、使用方便的操作及使用环境,从而在计算机系统(硬件)与使用者之间起到接口的作用。
操作系统就是处于用户与计算机系统硬件之间用于传递信息的系统程序软件。例如:操作系统会在接收到用户输入的信息后,将其传给计算机系统硬件核心进行处理,然后再把计算机系统硬件的处理结果返回给使用者。
Linux:
和Windows操作系统软件一样,Linux也是一个操作系统软件。但是和Windows不同的是,Linux是一套开放源代码程序的、并可以*传播的类Unix操作系统软件(Unix系统是Linux系统的前身,具备很多优秀特性)。其在设计之初,就是基于Intel x86系列CPU架构的计算机的。它是一个基于POSIX的多用户、多任务并且支持多线程和多CPU的操作系统。
Linux是由世界各地成千上万的程序员设计和开发实现的。当初开发Linux系统的目的就是建立不受任何商业化软件版权制约的、全世界都能*使用的类Unix操作系统兼容产品。在过去的20年里,Linux系统主要应用于服务器端、嵌入式开发和个人PC桌面三大领域,其中服务器端领域是重中之重。
大型、超大型互联网企业(百度、Sina、淘宝等)都在使用Linux系统作为其服务器端的程序运行平台,全球及国内排名前十的网站使用的主流系统几乎都是Linux系统。
Linux操作系统之所以如此流行,是因为它具有如下一下特点:
开发源代码的程序,可*修改。
Unix系统兼容,具备Unix几乎所有优秀特性(注1)。
可*传播,无任何商业化版权制约。
适合Intel等x86 CPU系列架构的计算机。
( 注1:UNIX系统的主要特性:
1. 用简单的设计技术和方法去完成较复杂、较全面的功能
在UNIX系统的设计中,所采用的最基本的设计思想是将复杂的问题进行分解,用最简单、最基本的功能模块做堆积、连接、组合来解决复杂问题。
2. 支持多用户、多任务的运行环境
不但可以支持某一用户在某一时刻和某一地点上的多种请求,而且能够同时满足多个用户的相同或不同的请求。
3. 文件系统可随意装卸
由于UNIX系统采用模块化的结构进行设计,为了便于系统构造和用户使用,其文件系统是可裁剪的。使用时可以加载,用完后卸载。
4. 良好的开放性和可移植性
操作系统的开放性和可移植性是衡量其优劣的一项重要指标。UNIX系统由于其内核设计的许多特征,尤其是UNIX系统内核的大部分是用C语言实现的,这就使得操作系统的移植工作变得比较容易.
5. 强大的命令功能
UNIX系统用一个简单的命令就可完成其他操作系统需要花费许多时间去做大量编程设计才能实现的功能。用一条复合性命令完成其他操作系统需要花费几条到几十条命令才能完成的动作或功能。
6. 完善的安全机制
在UNIX系统中,由于它的开发是基于多用户的环境进行的,因此在安全机制上考虑得比较严谨,其中包括了对用户的管理、对系统结构的保护及对文件使用权限的管理等诸多因素。
7. 具有网络特性
在UNIX系统中,由于支持多用户的需要,强调了其内部通信机制及对外部设备的易接入性,并使其对当今网络环境的支持非常自然顺畅。在许多新版UNIX系统中,更是增加了对TCP/IP协议的支持,使UNIX系统的网络连接变得更加容易和便捷。优良的内部通信机制,方便的网络接入方式,快速的网络信息处理方法,使UNIX系统成为构造良好网络环境的首选操作系统。)
Linux的诞生
Linux系统的诞生开始于芬兰赫尔辛基大学的一位计算机系的学生,名字为Linus Torvalds。在大学期间,他接触到了学校的Unix系统,但是当时的Unix系统仅为一台主机,且对应了多个终端,使用时存在操作等待时间很长等一些不爽的问题,无法满足年轻的Linus Torvalds的使用需求。因此他就萌生了自己开发一个Unix的想法,于是不久,他就找到了前文提到的谭邦宁教授开发的用于教学的Minix操作系统,他把Minix安装到了他的I386个人计算机上。此后,Torvalds又开始陆续阅读了Minix系统的源代码,从Minix系统中学到了很多重要的系统核心程序设计理念和设计思想,从而逐步开始了Linux系统雏形的设计和开发。(内核)
Linux的发展历程
linux的发展历程简介
1、1984年,Andrew S.Tanenbaum开发了用于教学的Unix系统,命名为MINIX。
2、1989年,Andrew S.Tanenbaum将MINIX系统运行与x86的PC计算机平台。
3、1990年,芬兰赫尔辛基大学学生Linus Torvalds首次接触MINIX系统。
4、1991年,Linus Torvalds开始在MINIX上编写各种驱动程序等操作系统内核组件。
5、1991年底,Linus Torvalds公开了Linux内核源代码00.2版(http://www.kernel.org)。
6、1993年,Linux1.0版发行,Linux转向GPL版权协议。
7、1994年,Linux的第一个商业发行版Slackware问世。
8、1996年,美国国家标准技术局的计算机系统实验室确认Linux版本1.2.13(由Open Linux公司打包)符合POSIX标准。
9、1999年,Linux的简体中文发行版问世。
10、2000年后,Linux系统日趋成熟,涌现大量基于Linux服务器平台的应用,并广泛应用于基于ARM技术的嵌入式系统中。
注意:Linux Torvalds公开的Linux内核源码并不是我们现在使用的Linux系统的全部,而仅仅是Linux内核kernel部分的代码。
Linux核心概念
*软件(windows付费,macos独占和Android类似)
简单地理解,*软件的核心就是没有商业化软件版权制约,源代码开放,可无约束*传播。
*软件基金会FSF
FSF(Free Software Foundation)的中文意思是*软件基金会,是Richard Stallman于1984年发起和创办的。FSF的主要项目是GNU项目。它的目标是建立*发布和可移植的类Unix操作系统产品。GNU项目本身产生的主要软件包括:Emacs编辑软件、gcc编译软件、bash命令解释程序和编程语言,以及gawk(GNU's awk)等。
GNU介绍
GNU的全称为GNU's not unix,意思是"GNU不是UNIX",GNU计划,又称革奴计划,是由Richard Stallman在1984年公开发起的,是FSF的主要项目。这个项目的目标是建立一套完全*的和可移植的类Unix操作系统。
GNU类Unix操作系统是由一系列应用程序、系统库和开发工具构成的软件集合,例如:Emacs编辑软件、gcc编译软件、bash命令解释程序和编程语言,以及gawk(GNU's awk)等,并加上了用于资源分配和硬件管理的内核。
但是GNU自己的内核Hurd仍在开发中,离实用还有一定的距离。因此,这个GNU系统并没有流行起来。现在的GNU系统通常是使用Linux系统的内核、加上GNU项目贡献的一些组件,以及其他相关程序组成的,这样的组合被称为GNU/Linux操作系统。
到1991年Linux内核发布的时候,GNU项目已经完成了除系统内核之外的各种必备软件的开发。在Linux Torvalds和其他开发人员的努力下,GNU项目的部分组件又运行到了Linux内核之上,例如:GNU项目里的Emacs、gcc、bash、gawk等,至今都是Linux系统中很重要的基础软件。
GPL介绍
GPL全称为General Public License,中文名为通用公共许可,是一个最著名的开源许可协议,开源社区最著名的Linux内核就是在GPL许可下发布的。GPL许可是由*软件基金会(Free Software foundation)创建的。
1984年,Richard Stallman发起开发*软件的运动后不久,在其他人的协作下,他创立了通用公共许可证(GPL),这对推动*软件的发展起了至关重要的作用,那么,这个GPL到底是什么意思呢?
简单的理解,GPL许可的核心,是保证任何人有共享和修改*软件的*,任何人有权取得、修改和重新发布*软件的源代码权利,但都必须同时给出具体更改的源代码。
虽然这个Linux内核是基于GNU通用公共许可的,但是Linux内核并不是GNU计划的一部分。
Linux系统组成
Linux操作系统的核心为Linus Torvalds开发的Kernel,Linux内核之上的组件分为几部分:一部分是GNU的组件,如Emacs、gcc、bash、gawk等;另一些重要组成部分则来自加利福利亚大学Berkeley分校的BSD Unix项目和麻省理工学院的X Windows系统项目,以后在这之后成千上万的程序员开发的应用程序等(见表1-1)。正式Linux内核与GNU项目、BSD Unix以及MIT的X11(X Windows)的结合,才使得整个Linux操作系统得以很快形成,并得到了发展,进而组成了今天优秀的Linux系统。
Linux系统受到广大计算机爱好者的喜爱,主要原因有两个:
一、Linux属于*软件,用于不用支付任何费用就可以获得系统和系统的源代码,并且可以根据自己的需要对源代码进行必要的修改,无偿使用,无约束地*传播。
(可以去提交修改)
二、Linux具有Unix的全部优秀特性,任何使用Unix操作系统或想要学习Unix操作系统的人,都可以通过学习Linux来了解Unix,同样可以获得Unix中的几乎所有优秀功能,并且,Linux系统更开放,社区开发和全世界的使用者也更活跃。
Linux更多特点介绍
可以说Linux是Unix在PC计算机上的克隆版,仿Unix内核构建,同Unix指令集向下几乎完全兼容。
是一个完善的多用户、多任务,支持多进程、多CPU的系统。
具有很高的系统稳定性与可靠性。
具有很高的系统安全性。
有完善的网络服务,支持HTTP、FTP、SMTP、POP、SAMBA、SNMP、DNS、DHCP、SSH、TELNET等。
是基于GNU许可,*开放的系统。
有大量第三方免费应用程序。
得到了众多业界厂商支持,如IBM、ORACLE、INTEL、HP、MOTO、Google等。
有完善的大型数据库平台,包括Oracle、DB2、Sybase、MySQL、Postgres等。
有完善的图形用户界面,包括GNOME、KDE等。
有完善的开发平台,包括C/C++、Java、Perl等,支持各类图形界面API,如GTK+、QT等。
(开发软件一般都有linux版本)
Linux的应用领域
嵌入式Linux系统应用领域(单片机、工业控制等等)
个人桌面Linux系统应用领域(用的少不兼容)
IT服务器Linux系统应用领域(重要)
(什么是服务器?画出服务器图)
Linux版本的选择(打开linux官网,不是window盗版,类似Android各个厂商版本)
想选择一个桌面系统,并且既不想用盗版,又不想华太多钱购买商业系统软件,那么可以选择Ubuntu桌面系统;如果需要服务端的Linux系统,想用一个比较稳定的服务器系统,建议选择CentOS或者Red Hat。在这两者当中又首选CentOS,因为它是国内互联网公司使用的首选,如果公司有钱且不在乎软件成本则可以选择RHEL,RHEL有版权有售后,CentOS则无版权无售后;如果对系统稳定性、安全性有更高的要求或者是特殊使用偏好的用户,可以考虑Debin或FreeBSD;如果特别痴迷于新技术体验和追求最新的软件版本,可以选择Fedora,但要容忍Fedora潜在的新技术软件的BUG和系统稳定性的问题;如果喜欢更好的中文环境支持,可以选择麒麟Linux…
Linux安装
Centos下载地址:https://www.centos.org/
虚拟机软件介绍(便于学习)
虚拟机(Virtual Machina)软件就是一套特殊的软件,它可以作为系统独立运行,也可以运行与系统之上。若是运行与系统之上的虚拟机软件,在一台电脑(PC或笔记本等)上安装虚拟机软件后,就可以模拟出来若干*立的虚拟PC电脑设备,并且可以在每台虚拟的PC设备上安装运行操作系统,运行网络服务。
使用时,需要先在电脑上安装好虚拟机软件(例如:VirtualBox),然后通过安装的虚拟机软件创建一个或多个虚拟机系统(即虚拟的电脑设备),最后在这些虚拟的电脑设备上安装操作系统并进行启动配置。最终实现在一台电脑上"同时"运行多个虚拟机设备系统。
另外,还可以将这些虚拟的系统连成局域网,用来部署网站集群架构等更深层次的运维技术。
虚拟机软件对硬件的要求
虚拟机软件的原理是利用宿主机物理硬件资源虚拟PC设备,因此对物理机硬件的要求比较高,其中最主要的是内存、硬盘和CPU资源。首先,宿主机物理内存要足够大,最好在4GB以上,因为在创建虚拟设备时,要为每个虚拟机分配一定的内存资源(一般最小为128MB,实际学习可以设置在128~1024MB之间)和硬盘空间(默认8GB即可),ssd固态盘最好,同样也要分配CPU资源,CPU最好是I5以上,例如:每个虚拟机分配一核CPU。
CentOS7+ VirtualBox安装(见“CentOS7安装.doc”)
(中国人操作系统?)
Centos7更改默认启动桌面(或命令行)模式
1.systemctl get-default命令获取当前模式
2.systemctl set-default graphical.target 修改启动模式(修改为图形界面,要是修改为命令行就multi-user.target)
2.systemctl set-default multi-user.target 修改启动模式
3.reboot重新启动就可以了
Linux文件系统简介(windows系统文件,我的电脑看路径)
我们通常说,Linux下,一切皆文件。那不言而喻,Linux下肯定有一套强大的文件系统所支撑。其实,不管是什么系统,都需要有一套文件系统来存储文件。因为对计算机而言,他们只能读懂二进制文件,但对人来说,读二进制文件是非常困难的,那就需要转换成人能读懂的文件形式,存储在文件系统中。通常来说,被调入内存的文件都是待执行的文件,执行完成后,就会写入文件系统中。我们知道cpu执行速度是非常快的,文件调入的速度远远跟不上cpu执行的速度,于是便有了寄存器,缓存,内存,磁盘的概念。通常来说,距离cpu越近的部件速度越快,造价也越昂贵,集成在cpu内部的寄存器最快,其次是缓存,接下来就是内存了。根据自然界发展的规则,任何物质都不是完美的,上述介质也一样,在速度提升的同时,他们都不具有断电存储的功能,所以,在断电后,这些介质中的信息都会消失。那也就是需要有专门的介质去存储内存中的信息,磁盘便是承载这一功能,磁盘上的信息,断电后不会丢失,所以计算机中所有文件都存储在磁盘上,那么文件系统也就安装在磁盘上。在我们安装操作系统的时候,我们有一个挂载的过程,选择好挂载点后,我们点击确定后,提示删除磁盘信息,其实就是安装文件系统的过程,文件系统安装完成后,所有存储在文件系统的文件,便可以被操作系统识别了。
上图所列的目录便是Linux系统的结构图,它是一张树状结构图。为什么采用树状级结构图?因为树状结构图方便归类和整理,就好像图书馆的书一样,先进行大类分成不同的书架,在进行逐级细分,方便文件的查找。我们知道,在windows中,有C盘,D盘等盘符的概念,其实就是说,他们在每一个磁盘上都安装了一个文件系统,也就是说每个分区都是独立的。windows将操作系统图形化后,简化了路径的概念,其实我们每进入一个文件夹,都有一个路径在背后运行。Linux一般在机房不提供显示屏,我们就不需要运行图形化界面去浪费资源,那我们访问文件的时候就需要输入路径去找到文件,其实本质是一样的。下面介绍Linux文件下的文件分类:
/ 根目录,也是进入文件系统的点;
/boot 系统引导启动时要加载的静态文件,内核,grub等;
/bin 系统自身启动和运行时可能会用到的核心二进制程序,不能关联至独立分区;
/sbin 管理类基本命令,不能关联至独立分区,系统启动时需要;
/lib 基本共享库文件,内核模块文件;
/lib64 64位系统辅助共享库文件存放位置;
/etc 大多数应用程序的配置文件的集中存放位置;
/home 普通用户的家目录的存放位置;
/root 管理员root的主目录;
/media 便携式设备挂载点;
/dev 设备文件及特殊文件存放位置;
/opt 第三方应用程序存放位置;
/usr UNIX操作系统软件资源存放位置;
/var 经常发生变化的文件的存放位置;
/selinux 相关安全策略等信息的存放位置 等其他目录。
上述基本列出了Linux系统中大部分文件,还有一些不重要的文件就不一一列举了。
那如果遇到系统崩溃,需要重新安装系统,但我们的数据又不想丢失怎么办?这就需要我们所提到的挂载的概念了,挂载就类似于把那个目录单独出来,而不是都在根目录下。根目录就好像我们的c盘,我们在重装系统时只选择格式化根目录即可,其他挂载点不动,这样我们就可以把其他数据不恢复,重装完后还能看到以前的数据。Linux和windows是两个概念,虽然不可以相提并论,但却可以对比学习,这更有助于我们理解和学习操作系统。
linux centos 中的挂载是什么意思?
Linux系统里是没有盘符的,所有的命令及我们Windows中的盘符都是用目录的形式进行管理,把每一个分区和某一个目录对应。那么,我们对这个目录的操作就是对这个分区的操作,这样就实现了硬件管理手段和软件目录管理手段的统一,这个比如D盘分区和linux系统中根目录/test一一绑定的过程就叫做Linux系统中的挂载。