Linux 基础知识

Linux基础入门

完整的linux OS的由来 
* linus创建了Linux的kernel,GNU提供了N多的应用程序Application; 
* 侠义上的OS指的就是kernel;

软件开发的模式 
* 大教堂式 
* 集市 
Linux就是由无数个黑客共同开发来的,属于集式式的

评判操作系统的快慢监测网站:www.top500.org

Linux在服务器领域占有了绝对领域

OS的接口

有两类:

  • GUI:Graphic User Interface
  • CLI:Command Line Interface

GUI下流行的图形界面:

  • GNome: C语言研发的,研发环境是gtk
  • KDE:C++研发的,研发环境是qt

CLI 下流行的文本界面:

  • bash
  • zsh
  • sh
  • csh
  • tcsh
  • ksh

API和ABI

操作系统的功能: 
驱动程序 
进程管理 
安全 
网络功能 
内存管理 
文件系统

用户通过接口程序,来启动管理这些功能。

API:Application Program Interface

  • 操作系统把底层复杂接口隐藏起来,然后提供更为简捷的接口,叫做系统调用(system call),程序员在写程序就不用面对硬件了;
  • 库(libraries),把底层简洁的接口再次封装;
  • 程序员在写程序时,可以调用系统调用,也可以调用库调用(lib call);
  • 库调用比系统调用快;

ABI:Application Binary Interface

POSIX: Portable Operating System 可移植操作系统

  • 遵循POSIX 的API,能在多个系统上使用,编程接口兼容,同时并不意味着二进制编程接口兼容; 
    遵循POSIX的API程序,经过windows编译器编译成二进制的ABI适合于windows使用;同样Linux同理;

API: 程序员开发视角看,程序员面对的编程接口 
ABI:程序运行视角看,程序应用着面对运行程序的接口

OS的接口实际上就是一种应用程序; 
是在内核外提供的接口; 
占用接口的叫前台程序,不占用前台接口的叫后台程序(如: 开机自动启动); 
对服务器来讲接口未必是必要的;


Linux的发行版

GNU 提供的各种程序都是源码,要编译成二进制格式的。 
发行商把GNU的这些源码程序编译成二进制,然后打包对外提供,这就是发行版。

著名发行版:

  • RedHat
    • RedHat Enterprise Linux (简称为RHEL) 
      • Centos
      • Oracle Enterprise
    • Fedora Core (桌面版)
  • Debian (以社区方式运行)
    • Ubuntu 
      * mint
    • knopix(安全著称)
  • slackware
    • S.u.S.E(界面美) 
      • SLES(企业版)
      • OpenSUSE
  • Gentoo
  • ArchLinux

Linux版本号 
三部分组成: major(主版本号),minor(次版本号),release(修正号,修复bug)

  • 内核版本,版本号:0.99,2.2,2.4,2.6,3.0,4.0
  • 发行版本,版本号: 
    • RHEL: 5.x, 6.x, 7.x
    • Debian: 8.x
    • OpenSuSE: 13.x

Linux网站:www.kernel.org 
最新内核版本4.3

不必追求最新版本,求稳定!


Linux基础

GNU/Linux 通常以源码方式提供:自由、灵活

源代码—是文本格式的 
二进制—由 0 1 组成

计算机仅仅能够处理二进制指令

要把应用程序的的源代码用编译器翻译成对应机器能够运行的机器语言(二进制格式数据)

CPU架构

  • 32位 x86 系列
  • 64位 x64 系列 ,它兼容x86
  • m68000
  • arm系列cpu 
    它只设计 
    移动终端cpu,功耗非常低
  • ultrasparc 
    sun公司生产的 
    运行系统是solaris
  • power 
    IBM的cpu 
    cpu主频超过4GHZ,性能强大 
    运行系统是 AIX 
    个人电脑不能使用power cpu
  • powerpc(简称ppc) 
    简装power 
    能够运行在个人电脑上 
    早些年,苹果系统
  • MIPS
  • alpha 
    惠普生产的 
    收购康柏的安藤 
    运行系统是 hp-ux

编译和汇编:

  • 微码编程的接口(汇编接口)我们称为汇编语言;
  • 面对机器一层的叫做机器语言;
  • 汇编语言不能直接在机器上运行,需要汇编器翻译成机器语言,然后才能运行;
  • 汇编语言的移植性非常差,不能做到各种在各种cpu上兼容运行;
  • 高级语言(C,C++,JAVA)和你底层的cpu没有关系,都可以运行。不过这种程序写完以后得需要用编译器编译成汇编语言(和cpu系列就有关系了,绑定行强,不能在多种cpu上运行);
  • 交叉编译(cross compil)–编译器支持交叉编译的,即在inter的x64编译成能做arm系列上运行的程序; 
    高级语言所编写的代码就能有较好的移植性;

POSIX 规范–是可移植性操作系统。 
API 应用程序调用接口 
ABI 应用程序二进制调用接口。windows的二进制格式是exe或者msi;Linux的二进制格式是elf

Linux,BSD,AIX,… 称为 Unix-like 
Unix类的系统,它们的API和ABI都兼容

pc机指的就是x86或者x64系列 
小机指的是某些硬件厂商生产的工作站,像ibm的power

指令集: 
分为精简指令集和复杂指令集。指的是支持指令的数量 
power属于精简指令集 
inter系列的cpu属于复杂指令集

高级语言–编译器–编译后–汇编语言(对应cpu支持的源代码) 
汇编语言–汇编器–汇编后–翻译成机器语言(二进制)

底层硬件设计的比较丑陋,各厂家的规格不一样,所用的驱动也不同; 
在底层硬件之上,编写了kernel,能隐藏底层复杂性。kernel研发也就是开发操作系统; 
现在Linux的kernel源代码编译成对应机器的二进制就能在各种的cpu架构上运行; 
系统调用(system call),调用kernel中的功能; 
在kernel之上创造了库(libraies),库是统一而规范;


开源协定

  • GPL
  • BSD
  • Apache

GPL协议(GNU组织的):General Public License 
任何程序只要内置了GPL代码,就遵守GPL协定; 
LGPL: (宽松的GPL协定):Lesser GPL 
调用我的库接口,不用开源

  • Apache:

双线授权: 
Community (社区版): 遵循开源协定 
Enterprise(商业):提供很多商业服务

Apache 组织会: 
ASF: Apache Software Foudation ,风头正盛,旗下的 hadoop、spark 
GNU组织会: 
FSF: Free Software Foudation

开源和闭源区别

  • 闭源: 
    windows 在公司内部开发出来的源代码就直接编译成二进制格式(防止反编译采用了加密)再对外提供。
  • 开源: 
    提供源代码,编译后使用; 
    各种企业捐赠支持开源程序; 
    商业版提供服务赚钱;

程序管理

程序的组成部分:

  • 二进制程序
  • 配置文件(文本或半结构化文件)
  • 库文件(应用程序自己的库,完成二次开发)
  • 帮助文件(文本文件)

程序包管理器 
程序的组成文件打包一个或有限几个文件; 
安装; 
卸载; 
查询;

不同发行版所用到的程序包管理器是不一样的,它们的安装、使用、卸载方式是不一样的

  • Debian: 
    所用的包管理器: dpkg(deb) 
    前端管理工具:apt-get
  • RedHat: 
    所用的包管理器: rpm 
    前端管理工具:yum, 以后就不用了,改为用dnf了。centos7 还是用的yum
  • S.u.S.E: 
    所用的包管理器: rpm 
    前端管理工具:zypper
  • ArchLinux: 
    所用的包管理器: port 
    前端管理工具:
  • Gentoo: 
    安装难度高,安装时需要编译

LFS: Linux From Scratch

rpm包管理器 是现在Linux的工业标准


安装Linux

  • 计算机组成:cpu、内存、硬盘、I/O;
  • 将这些资源切割出来(cpu时序复用,内存和硬盘空间复用、I/O时序复用)把这些资源分配给多个程序,所以操纵系统本身就是虚拟出来的一个计算机;
  • 虚拟机就是在原有的计算机上创建出多个虚拟的计算机,靠软件实现;

虚拟化软件程序: 
vmware workstation 
virtualbox


 

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

(0)
allanallan
上一篇 2018-04-11
下一篇 2018-04-12

相关推荐

  • 文本处理——sed初步

    sed是一种流编辑器,它一次处理一行内容。
    处理时,把当前处理的行存储在临时缓冲区(pattern space),同时输出到屏幕,接着用sed命令处理缓冲区中的内容,接着读取下一行,这样不断重复,直到文件末尾。

    Linux笔记 2018-04-20
  • 磁盘相关概念

    这场易碎的雨季 用节奏轻快的鼓点 在敲打过去

    2018-06-26
  • linux发行版的基础目录名称命名法则和功用规定

    一.文件名使用法则;      1.严格区分字符大小写      2.目录也是文件,在同一路径下,两个文件不能同名      3.文件名除了/以外的任意字符都可以使用,最长不超过255字符。      4.所有由.开头的文件都是隐藏文件。 二.文件系统:层级结构;有索引;      /:原初起点:      第二层结构;      第三层结构;      倒…

    Linux笔记 2018-05-13
  • Linux基本指令

    hostname  完整主机名cat +文件路径  可查看文件信息cat /etc/shells  显示所有shelluname -r    查看内核版本ls cpu   查看cpu信息free命令  查看内存 后面加-k是显示的内存以kb为单位,-m(MB),-g(GB),-h显示易读单位lsblk  查看硬盘dmesg  查看计算机启动的一些相关信息dm…

    2018-07-22
  • rm 和 inode

    mv和inode :  

    Linux笔记 2018-04-01
  • Linux文件管理总结和文件元数据

    Linux文件系统;目录结构;bash特性;文件的元数据

    2018-07-09