2017-10-4Linux基础知识(3)

在上一章中讲到了操作系统的历史的发展以及Linux的如何诞生,在1991年的8月份,创始人Linus宣布成立Linux的,Larry Wall开发diff和patch打补丁的命令程序使得Linux可以在安全性方面有很大的提升。

一、完整的OS

所谓完整的OS无非指的就是Kernel+Application这两项的结合,而狭义上的OS仅仅指的是Kernel,Linux其实就是个内核,它的功能就是将硬件的复杂性和差异性给隐藏起来,通过内核输出为一个简洁而又统一的接口,我们称之为系统调用,但内核又太过于底层,使得程序开发周期会很长,所以在系统调用的接口上面又封装了一个库函数,离人又更近了一步,使得程序可以快速的开发而且易于维护。
开发的程序的门派有那么一下两类:一种是大教堂式,我个人理解为集中式开发,另一种是集市,个人理解就是有着不同的应用程序,可以任意的定制或修改,而前者是已经定制完成且不可修改,我们开发程序时,必然会用到与计算机所联系的程序接口,这种与计算机交互的接口我们叫做Shell接口,它分为两大类:一个GUI,另一个是CLI

OS的两类接口:
    GUI: Graphic User Interface
        GNome: c, qtk
        KDE: C++, Qt
    CLI: Command Line Interface
        bash
        zsh
        sh
        csh
        tcsh
        ksh

二、操作系统的功能

操作系统是一个通用的软件,对硬件进行一个资源的整合与利用同时对硬件进行监控,对于程序的运行提供了一个可靠的平台,使得开发不用面向复杂的硬件,对统一而又简洁的接口进行开发,那么操作系统的功能大致分为以下几种:

    驱动程序
    进程管理
    安全相关
    网络功能
    文件系统
    内存管理
    ... ...

之前我们讲过系统调用和库调用,那么操作系统是一个通用的软件,即使我在Linux写的程序源码在Windows上也是可以兼容编译之后是可以运行的,这个我们就叫做API接口,它是程序员面对的编程接口,程序接口兼容的话,在Linux上写的源码程序可以在Windows进行编译,遵从POSIX(可移植操作系统)

  系统调用:(System Call)将底层的复杂差异化硬件接口封装起来,向上提供一个简洁而又统一的接口。
    库调用:(Libraies)是将系统调用的简洁接口在此之上封装为更复杂的接口,离人又更近了一步。

那么我们程序编译完成之后就会生成二进制可执行文件,它是程序应用者所面对运行的接口,我们称之为ABI接口,这种接口是在不同的操作系统之间是不能运行的,因为Windows的可执行格式为.exe,Linux的可执行格式为.elf,我们可以用file命令查看某个命令的可执行格式。

# file /usr/bin/ls
/usr/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d705971a4c4544545cb78fd890d27bf792af6d4, stripped

三、Linux与发行版之间的关系

我们现在都知道Linux本身就一个内核,除此之外,其它的应用程序都是GNU协议所开源的应用程序运行在该内核之上,这些应用程序提供的都是源代码,我们都知道要想在电脑上用应用程序,必须要编译成为二进制格式才能运行,好处就是灵活性和自由性很强,举个例子:我给你个面粉,你可以做任何面食都行,但缺点就是不易用,所以对于很多人来说,但凡编译中出错,解决这些问题需要很长的时间,为了解决这些问题,这些发行版就提供了已经编译好的,能够直接在电脑上安装的发行版安装程序供你使用,而且发行版有数百种之多,有的发行版昙花一现,有的经久不衰一直进行着。
主要的三大版本有:Debian、Slackware、RedHat,这三个发行版是主要的支点,在它们的支点上有很多我们所熟悉的分支,比如说Debian发行版上的分支有:Ubuntumint等,这个操作系统对于入门级别来说上手很难,但上手了会觉得很好用,是黑客最喜欢的一个操作系统,它是社区级别,任意免费下载,Slackware这个支点是有点特殊,它的前身是sls,不过sls也是昙花一现,但Slackware保留了下来,并且有许多的分支,最熟知的是S.u.S.EOpenSUSE等,RedHat是一个商业公司,提供的系统是免费的,不过后续的服务是要收费的,比如打补丁或者升级软件等,不过虽然收费,但是源代码根据开源协议是要开放的,所以有个社区组织就把RedHat的源代码进行二次编译,也将把收费的服务变的免费起来,这个分支就是CentOS,不过,CentOS也被RedHat收购了。另一个分支就是Fedora,用的是最新的技术,每6个月更新一次,专注于做图形化设计等,是RedHat 9之后的技术转让,在此之后,RedHat就开发企业版,也就是我们称之为RHEL,通常是18个月更新一次,甚至更久。
软件的程序发布也是有格式的,比如:2.6-568.el6

  major.minor.release
   2.6-568
   主版本号.词版本号-修正的版本号.发行平台

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/87648

(0)
刘 祥宇刘 祥宇
上一篇 2017-10-03 12:36
下一篇 2017-10-05 19:04

相关推荐

  • 编程真难啊

    上周,在Sun的Java论坛上出现了一个这样的帖子,这个贴子的链接如下:http://forums.sun.com/thread.jspa?threadID=5404590&start=0&tstart=0 LZ的贴子翻译如下: 大家好,我是一个Java的新手,我有一个简单的问题:请问我怎么才能反转一个整数的符号啊。比如把-12转成+12。是…

    Linux干货 2015-04-03
  • 浅述vim操作

    vim是一种比vi更加强大的模式化的全屏文本编辑器。vim在工作过程中有三种模式:编辑模式、插入模式、末行模式。 编辑模式(默认):又称命令模式,其工作内容包括移动光标、剪切、粘贴、删除等 输入模式:亦可称为插入模式,主要是在文件中修改文本内容 末行模式:亦称扩展命令模式,主要是执行vim内置命令的 vim三种模式之间的切换:如下图   (1)编辑…

    Linux干货 2016-08-11
  • mysql基础

      mysql基础 数据模型: 数据模型:层次模型、网状模型、关系模型、…… 关系模型: 二维关系:表     行:row, entity     列:colume, attribution 索引:数据结构,辅助完成数据查找;  &nbsp…

    Linux干货 2016-11-01
  • shell脚本基础

    shell脚本基础 基本介绍 Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高。换一种说法也就是,shell script是利用shell的功能所写的一个程序,这个程序是使用…

    2017-07-01
  • vim编辑器

    vim基础的认识

    2017-11-26
  • MySQL与nfs的实验

    (1) 创建一个共享mydata,路径为/mysql/data,客户端1挂载至/mydata;而后客户端1主机安装mysql或mariadb,将数据目录设定为/mydata,要确保mysql服务能正常 运行,但数据目录位于samba server上; (2) 客户端2主机使用类似客户端1主机的方式挂载mydata共享至本地的/mydata目录,而后,直接安装…

    Linux干货 2016-10-30