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
下一篇 2016-12-02

相关推荐

  • bash编程初体验(一)

    bash编程初体验(一) 认识bash编程 变量与赋值 算术与逻辑运算 条件测试与退出状态 认识bash编程 Bash(GNU Bourne-Again Shell)是许多Linux发行版的默认Shell,我们要认识的bash中,就是在bash的环境下的一种编程。 众所周知,程序=指令+数据,由此也决定了两种不同的编程风格,过程过与对象式; 过程式:以指令为…

    Linux干货 2016-08-15
  • Linux开学一周的学习心得

    Linux,这个名字第一次听到是通过张超老师给我讲解,因为我在学校学的是金融数学,平时对这方面没有太多接触。当时对Linux就知道是个系统,随后在网上搜了搜,了解也不太多。 直到今天已经来马哥教育一星期了,刚入学的这一星期上课,都是一些基本的命令,感觉学着还蛮有意思,教学的安排也非常合理,我们大家学一天还能自己动手操作一天,既能专心听课,又能把学到的知识巩固…

    2017-07-15
  • 第三次 练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 ~]# who | cut -d "" -f1 |uniq root     pts/0        2016-11-13 12:17 (172.16.220.14) 2、取出最后登录到…

    Linux干货 2016-11-16
  • CentOS 5和6的启动流程

    Linux: kernel+rootfs  kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能 rootfs: glibc 库:函数集合, function, 调用接口 过程调用:procedure 函数调用:function 程序  内核设计流派: 单内核设计:Linux 把所有功能集成于同一个程序; 微内核设计…

    Linux干货 2016-08-23
  • CentOS 7破解密码教程

    启动时任意键暂停启动  按e键进入编辑模式  将光标移动linux16开始的行,添加内核参数rd.break  按ctrl-x启动  mount –o remount,rw /sysroot  chroot /sysroot  passwd root  touch /.autorelabe…

    Linux干货 2016-12-01
  • N–25期 第九周作业

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别这两类用户的个数;通过字符串比较来实现; #!/bin/bash declare -i sumlogin=0 declare -i sumnologin=0 for i …

    Linux干货 2017-03-07