完整的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 (桌面版)
- RedHat Enterprise Linux (简称为RHEL)
- Debian (以社区方式运行)
- Ubuntu
* mint - knopix(安全著称)
- Ubuntu
- slackware
- S.u.S.E(界面美)
- SLES(企业版)
- OpenSUSE
- S.u.S.E(界面美)
- 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