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

相关推荐

  • LNMMP架构实现Web动静分离

    前言 前面的文章中说过LAMP架构包括:Linux操作系统,Apache网站服务器,MySQL数据库,Perl、PHP或者Python编程语言,而今天要说的LNMMP 和LAMP类似,只是作为Web服务器的不再是Apache而是高性能的Nginx,同时引进Memcached加速缓存效率,用于加快访问速度。 Memcached是一款开源、高性能、分布…

    Linux干货 2015-06-15
  • linux学习记录

    vm使用记录 1、安装vm程序; 2、下载Cenos—6.4*86_64_bin-DVD1.iso 安装: 1、新建一个虚拟机; 2、选择自定义安装(高级); 3、兼容性选择默认方式; 4、安装客户机操作系统(选择稍后安装操作系统方式); 5、选择客户机操作系统(选择Linux系统,版本号(选择自己下载的Linux系统版本,例如centos等)); 6、命名…

    Linux干货 2015-12-10
  • rpm&yum

    软件包管理 软件运行环境 软件包基础 Rpm包管理 Yum管理 定制yum仓库 编译安装 ABI 应用程序的二进制接口,和操作系统相关,一个程序二进制编好了,想要在你的系统上跑,要符合你的操作系统的接口标准Windows:PE  linux:ELF WINDOWS和LINUX二进制程序是不兼容的 库级别的虚拟化 Linux:WINE 可以让Windows程序…

    Linux干货 2018-01-02
  • Linux网络配置

    Linux网络基础配置 将Linux主机接入到网络,需要配置网络相关设置。 一般包括如下内容:     主机名     IP/netmask     路由:默认网关     DNS服务器  …

    Linux干货 2016-09-09
  • N22-第二周博客作业

    1、Linux系统上常见的文件管理类命令有哪些,其常用的使用方法及其示例演示。 常见的文件类管理命令:cp,rm,mv cp复制文件和目录: -f, –force 强制执行 -i 显示交互信息,默认cp 带-i选项 -r,-R 递归复制目录 -s 创建一个符号链接而不复制文件 -d 复制符号链接本身 cp aa.link qqq 相当于创建qqq…

    Linux干货 2016-08-22
  • HTTPD-相关的配置

    一次完整的HTTP请求处理过程: 1、建立连接:接收或拒绝链接请求 2、接受请求:接收客户端请求报文中对某资源的一次请求的过程 Web访问响应模型(Web I/O) 单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请 求被串行响应; 多进程I/O模型:并行启动多个进程,每个进程响应一个链接请求; 复用I/O结构:启动一个进程,同时响应N个…

    2017-08-29