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)
N24_雪狼N24_雪狼
上一篇 2016-12-01 22:41
下一篇 2016-12-02 10:01

相关推荐

  • LVM2:创建、使用、扩展、缩减、快照五步骤

    LVM2这是个关键的概念,还是从操作中比较容易理解 1、创建一个至少有两个PV组成的大小为40G的名为testvg的VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录 注意点:在vmware中添加两块硬盘,但是并不能马上可以查看,需要扫描一下磁盘,磁盘未/dev/sdc,/dev/sdd 然后创建LVM的基…

    Linux干货 2016-09-05
  • Ip 地址 及 网络配置

    Ip 地址 及 网络配置 IP地址  它们可唯一标识 IP 网络中的每台设备  每台主机(计算机、网络设备、外围设备)必须具有唯 一的地址 IP地址由两部分组成:       网络ID:  标识网络  每个网段分配一个网络ID       主机 ID:  标识单个主…

    Linux干货 2016-09-05
  • FTP服务初探

    FTP FTP概述 FTP原理和模式 vsftpd vsftpd基础服务搭建 vsftpd基于数据库的实现虚拟用户 vsftpd基于mysql实现虚拟用户 常见问题 FTP概述 什么是FTP? FTP是File Transfer Protocol 文件传输协议的缩写,基于网络来传输文件的应用层通信协议。 FTP的功能是什么? FTP能够通过网络来传输文件,因…

    Linux干货 2016-04-28
  • 马哥教育网络班22期第二周课程练习

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示? cp命令:copy 源文件;目标文件;    单源复制:cp [OPTION]… [-T] SOURCE DEST    多源复制:cp [OPTION]… SOURCE… DIRECTORY  …

    Linux干货 2016-08-22
  • Linux命令1

    7-13 Linux命令   一、进入终端terminal 1..C1trl+Alt 释放鼠标 2.ifconfig 查询ip地址 3.Ping (IP地址) 查看联网状态 4.ls 查看            -l 列出文件 5.tty、who am i  查看当前的登录终端名…

    Linux干货 2017-07-15
  • VMware虚拟机三种连网原理简介

    一、前言         虚拟机(Virtual Machine),在计算机科学中的体系结构里,是指一种特殊的软件,可以在计算机平台和终端用户之间创建一种环境,而终端用户则是基于这个软件所创建的环境来操作系统软件。虚拟机根据它们运用和与直接机器的相关性分为两大类。系统虚拟机和程序虚拟机,系…

    Linux干货 2015-08-03