基本介绍
- 教材:马哥运维2016
一个操作程序由硬件,内核(kernel),库组成
其中硬件最重要的是CPU 而CPU是由运算器和控制器组成 CPU的多项功能都由CPU指令运行
而多个CPU指令称之为CPU指令集 CPU指令又划分为普通指令和特权指令
编程语言分为低级(汇编语言)和高级语言(php,python,c) 越方便人理解的就越高级 当然对于计算机来说低级更加方便其运算,高级语言需要经过编译才能成为机器语言进而运行 其中转换的速率取决于CPU的型号和格式
所以操作系统是一个软件 他能将低层计算机的各种计算机能力抽象为一个统一的接口程序
所以程序员大多数写的程序不是面向硬件层面的 而是面向操作系统的
一般进程是不能直接访问内核的 然而进程中需要调用CPU的特权指令时 会向操作系统发出调用请求 这个过程称之为系统调用(System Call)
编程有三个层次
- 硬件层次
- 系统调用
- 库调用(将低层功能聚集起来 提供离成品更接近的功能)
人要想让计算机运行程序首先就需要那么一个程序使人与计算机交互 这个程序称之为UI
UI分为两种
- GUI:Graphic User Interface 图形用户界面
- CLI:Command Line Interface命令行接口
用户在图形界面下所做的操作统统都需要编译成二进制文件这个时候用户面对的接口就是
ABI:Application Binary Interface 应用二进制接口格式(规范)
而程序员面对的接口则是
API:Application Programming Interface 应用编程接口(面向库)
Unix有两大正统分支
- System(Bell Lab)
AIX (IBM)
Solaris(SUN 现属Oracle)
HP-UX(惠普) - BSD(BSRG)Berkeley System DIstribution
NetBSD
OpenBSD
FreeBSD
名词解释
GUN:Gnu's Not Unix
GPL:General Public License
The Linux Kernel Archives
内核一般用C语言编写 所以在内核之上的库 一般指的是C程序库
程序:指令+数据 指令:只读 数据:读写
程序:算法+数据结构
基于库不仅仅减轻了程序员写代码的过程,还为以后程序运行节省资源奠定了基础
发行商是将代码编译好提供便利服务的组织,其结果就是发行版
Linux三大主流发行版:
- slackware:
二次发行版suse(欧美流行)
sles企业级发行版
三次发行版opensuse - debian:
二次发行版ubuntu
三次发行版mint - redhat:
rhel:redhat enterprise linux(企业版) 每十八个月发行一个新版本
CentOS:兼容rhel的格式
fedora(桌面版本卖给了fedora) 每六个月发行一个新版本
ArchLinux
Gentoo
LFS:Linux From scratch(一本书教你如何从头自己做一个Linux)
Android:kernel+busybox+java虚拟机
小知识
GUN:GPLv2,GPLv3,LGPL(lesser)
Apache:apache协定
BSD:bsd协定
红帽是卖技术支持的
红帽遵循GPL协定将每次版本的漏洞补丁公布但不包括编译成二进制 所以CentOS就是将编译后的补丁兼容到rhel里面
凡包含GRL协定的代码程序都需开源
rhel发现CentOS并不影响其生态并且引以为rhel的有益补充所以将CentOS收购了
GPL,LGPL,Apache,BSD
程序包管理器:
- rpm:
RHEL,Fedora,S.u.S.E,CentOS - dpkg:
Debian,Ubuntu
自由软件:
自由使用,自由学习和修改,自由分发,自由创建衍生版
Linux的哲学思想:
- 一切皆文件:
把几乎所有资源,包括硬件设备都组织为文件格式; - 由众多单一目的的小程序组成,一个程序只实现一个功能,而且要做好;
组合小程序完成复杂任务 - 尽量避免跟用户交互:
目标:实现脚本编程,以自动完成某些功能; - 使用纯文本文件保存配置信息:
目标:一款使用的文本编辑器即能完成系统配置工作;
如何获取CentOS的发行版:
问题
- 问题一:CentOS和Linux是什么关系?CentOS和RHEL是什么关系?
Linux有三大发行版:Slackware debian redhat。CentOS是linux众多发行版的一种。Redhat有收费的商业版和免费的开源版,商业版的业内称之为RHEL(RedHat Enterprise Linux)系列,而这个CentOS(Community ENTerprise Operationg System)是来自RHEL依照开放源代码规定释出的源代码所编译而成.
- 问题二:各种开源协议的具体细节?
GPL,LGPL,Apache,BSD
操作系统(OS).pngGPL(GNU通用公共许可证):禁止任何人不承认你的权利,或者要求你放弃这些权利。如果你修改了自由软 件或者发布了软件的副本,这些规定就转化为你的责任。
LGPL(GNU宽通用公共许可证):与GPL的最大不同是,可以私有使用LGPL授权的自由软件,开发出来的新软件可以是私有的而不需要是自由软件。
Apache:与BSD类似,同样鼓励代码共享和尊重原作者的著作权,同样允许代码修改,再发布(作为开源或商业软件).需要满足的条件也和BSD类似:
BSD:BSD开源协议是一个给于使用者很大自由的协议。可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
网友评论