Linux概述

计算机组成概述

计算机组成原理.png

计算机组成原理

如上图计算机的组成结构,CPU运行速度远远高于内存,而内存运行速度又远远高于I/O;
由于三者运行速度巨大差异,如果系统仅运行一个任务(单任务系统),那么将有大量的CPU空闲时间等待缓慢的I/O及内存的读取。为提高CPU的使用效率,于是便产生了多任务系统系统的需求。

多任务系统

多任务实现的基础,我们知道计算机处理任务主要靠CPU和存储,我们分别针对以上两个重要组成部分讨论如何时间多任务处理。

首先考虑单个CPU如何处理多个事件呢?
其实CPU无法真正实现同时处理多个事件,CPU将时间分割成为时间片,第一个时间时间片用于处理task1,第二个时间片用于处理task2……依次类推。这种方式为CPU的时分复用(时分复用概念在计算机领域应用非常广泛)。

其次存储是如何实现多个事件处理,而互不干扰呢?
内存将自身分为指定大小的存储单元,8位2进制为一个存储单元,称之为一个Byte,这些存储单元都拥有自己的地址。为一个程序分配一定数量的存储单元用于存储程序指令与数据,各程序所获得的存储单元地址互不重复,以此实现存储的复用,与时分复用不同,存储采用的是空间的分割复用。

附:内存寻址基础
8bit –> 1Byte
1024Bytes –> 1KB
1024KB –> 1MB
1024MB –> 1GB
以上是位到字节个单位的换算关系,我们考虑考虑一下32bit 的寻址范围:即232

附:内存寻址基础
8bit –> 1Byte
1024Bytes –> 1KB
1024KB –> 1MB
1024MB –> 1GB
以上是位到字节个单位的换算关系,我们考虑考虑一下32bit 的寻址范围:即232


32bit寻址范围计算.png

32位CPU内存寻址范围计

回到正题,CPU与内存实现了复用机制,CPU时间片依次从指定内存段中存取指令与数据进行事件处理,实现多任务:

多任务处理机制.png

显而易见,要实现CPU时间片与内存地址段之间的调度与管理,我们需要一套有效的监控机制,于是多任务的需求便引出了操作系统的诞生。

操作系统发展史

现在流行修家谱,我们看看Unix/Linux的族谱

162406575.gif

该图援引自 http://os.51cto.com/art/200810/92024.htm 

伴随着GNU的需求,Linux最终千呼万唤始出来,1994年Linux 1.0发布。
对以上历史感兴趣的话,可以参考该文《Unix/Linux历史和大事记》(http://os.51cto.com/art/200810/92024.htm )此处不再赘言。

操作系统基础

计算机只能识别二进制机器语言,然而我们是基本上不可能理解复杂的二进制语言的,如何让CPU、内存、I/O这些硬件设备工作?如何让多个任务并行执行而互不冲突?这就是操作系统所要完成的最重要的任务

操作系统的核心功能

  1. 硬件驱动

  2. 进程管理

  3. 安全管理

  4. 网络管理

  5. 内存管理

  6. 文件系统管理

操作系统充当着人与机器之间的翻译官,尽管操作系统仍然难于理解,但相比于010101串已经更容易让人理解了。基于这种思想,我们在系统之上不断增加层次,内核之上的系统调用,系统调用之上的类库,再之上的高级程序语言,由此,操作系统以其相对友好的接口与人类建立了沟通渠道。当然,类库,系统调用,内核,汇编程序这些还是需要人类编写的,但这些工作就交给哪些只可仰望的牛人吧。

系统结构.png

上图描述了操作系统的组成结构,就是这样一层层组织起来的,与OSI七层模型一样,分层的思想充斥着计算机世界。

这里引入两个概念:
API:应用程序接口
ABI:应用程序二进制接口
这两个概念涉及到程序的可移植性,这里仅提出,包括程序编译等相关知识原理,欲知详情请问google。

Linux发行版本

所谓Linux发行版本,就是将Linux内核包括一些常用APP,打包编译好,从而使得我们这些无法掌握编译安装的“小白们”能够更容易安装和使用操作系统。

想了解更全面的Linux发行版本信息详见《Linux发行版本时间线》,这里只对主要分支进行说明。

绘图1.png

Slackware与redhat背后是有商业公司支撑的,而Debian则没有。国内RHEL与Centos的应用较为广泛。

开源软件为Linux发展提供了巨大的推动力,开源软件以提供源码的方式将软件与外界共享。目前的开源协定主要有GNU的GPL, BSD licenses,Apache licenses,相比于GPL后两者的限定较为宽松,协议详情参考wikipedia

闭源软件为用户提供编译完成的二进制可执行程序,源码不对外公开。目前流行的做法是对某软件进行双线授权,分为社区(Community)版本和企业(Enterprise)版本,企业版本提供更为强大的功能和服务,而社区版本在软件基本功能的前提下,在水平足够的时候可以进行你的私人定制(二次开发)。

一个完整的程序包括:二进制可执行文件、配置文件、库文件(程序库)、帮助文件。如果众多文件杂乱无章对于我们进行软件管理来说将带来巨大不便。还好,我们有软件包管理器,它用于将众多文件打包,在安装时展开到文件系统指定位置,卸载时找到程序相关文件并删除,查询软件信息等功能。

不同的Linux发行版本中使用不同的软件包管理工具:

发行版本        软件包管理工具            前段管理工具
Debian          dpkg                   apt-get
Redhat          rpm                    yum(dnf 即将开始使用)
S.u.S.E         rpm                    zypper

最后,介绍一个极具挑战版本,LFS(Linux from Scratch),是一本从零开始编译安装Linux的指导书。

原创文章,作者:N24_雪狼,如若转载,请注明出处:http://www.178linux.com/61945

(0)
上一篇 2016-12-01 22:41
下一篇 2016-12-02 10:01

相关推荐

  • LVM逻辑卷管理器(Logical Volume Manager)

    逻辑卷管理器(Logical Volume Manager) 简介      LVM的做法是将几个物理的分区通过软件组合成为一块看起来是独立的大磁盘(VG),然后将这块大磁盘再分成可以使用的分区(LV),最终就能够挂载使用了。内部通过PE来进行扩展或缩小。 PV(PhysicalVolume)物理卷 用fdisk命令调整系统标识…

    Linux干货 2016-09-01
  • N25_第十二周作业

    1、请描述一次完整的http请求处理过程;     1)建立或者处理连接:建立请求或拒绝请求     2)接收请求:接收来自于网络上的主机请求报文中对特定资源的一次请求的过程;     3)处理请求:对请求报文进行解析,主要获取客户端请求的…

    Linux干货 2017-03-06
  • find命令浅谈

    本章内容   使用locate命令 使用find命令 使用Gnome搜索工具 压缩和解压缩工具 文件查找 在文件系统上查找符合条件的文件; 文件查找:locate, find 非实时查找(数据库查找):locate 实时查找:find locate 查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 依…

    Linux干货 2016-08-15
  • Linux的基本介绍

    1、Linux的发行版分为:Debin,Slackware,Rhel,Redora,CentOS,Gentoo等,其中Rhel(Red Hat Enterprise Linux)使用的是版本比较老的内核,但它的系统比较稳定,一个发行周期是36个月,Fedora使用最新的应用和华丽的节目,但系统比较不稳定,一个发行周期是6个月。 2、Linux的哲学思想是一切…

    Linux干货 2016-02-14
  • ansible部分功能详解

    一. 架构: 组成     ansible core:     modules:     Core Module     Custom Module   Host Inventory: 主机清单       File   &nbs…

    Linux干货 2016-11-11
  • 任务计划和本地系统的默认邮件

    一、前言 二、本地mail的使用方法 三、at /batch 四、cron 五、小结   一、前言 linux 中执行任务计划有三种命令:at ,batch ,cron.其中,at,batch 是一次性执行,而crontab,则是周期性执行; 作业执行完成后,会通过邮件通知给作业提交者;因此,以下就从邮件说起。 二、邮件服务 Centos ,默认会…

    Linux干货 2015-05-13