1. Linux:仅仅是一个内核,不包含其他应用程序。
GNU/Linux:通常以源码方式提供,包含提供的开源应用程序,这样给使用者使用方式的更多的选择,区别于windows,我们将windows系统安装在裸机上,几乎所有功能接口都是被锁定的,但是Linux与之相反。
2. Linux发行版本:
- Debian:
衍生版:Ubuntu,Knopix - Slackware:
衍生版:S.u.S.E - RedHat:
衍生版:Fedora,CentOS
常见CPU架构:
- X86:见得最多的intel体系
- X64:一般指AMD64,当然intel也有
- m68000,m68k
- arm:主要用于移动设备
- ultrasparc
- power
- MIPS
- alpha:惠普,hp-unix
3. Posix 标准:
原因:由于存在不同的CPU体系架构,而且不同的CPU提供不同的汇编器,不同汇编器翻译出来的二进制码存在差异,A CPU可能编译翻译出来的指令不能运行在B CPU,跨CPU、移植太过于难,因为没有统一的标准。
Posix标准就是将操作系统的API统一起来。
举个反例:对于常见进程linux下是fork函数,windows下是creatprocess函数。在linux下写一个程序,用到fork函数,那么这个程序该怎么往windows上移植?需要把源代码里的fork通通改成creatprocess,然后重新编译…
编译完成后生成的指令只能在某一种平台编译,编译完成以后肯定就不能在其他平台运行,交叉编译指A平台编译生成B平台可以执行指令,但是一般不能在A平台执行;
4. ABI:程序运行时的二进制接口名,当然是二进制的,二进制时的接口名称。所以判断一个程序能不能跨平台跑,可以先判断编译以后ABI是否一样。
API:程序接口,可以简单理解为函数名称;
Unix类的系统:
需要澄清的是Unix和Linux是两个不同的系统,可以理解为都遵循Posix标准的两个操作系统。
编译后的ABI和编译前源码API的接口都可以兼容,也就是说在Unix编译的程序在Linux上也可以运行,跨操作系统运行。
5.开源协定:
- GPL->LGPL->GPLv2->GPLv3
- BSD
- Apache
- 双线授权:免费开源版本(社区版),商业授权版本(企业版,提供服务,功能强大)
6.程序管理:
-
程序的组成部分:
1.二进制程序
2.配置文件
3.库文件:程序中调用到的库
4.帮助文件:使用说明 -
程序包管理器及作用:
将程序的组成文件打包成一个或者有限的几个文件,安装,卸载,查询方便;
常见管理程序:
Debian:dpkg apt apt-get
RedHat:rpm yum dnf(yum升级版)
S.u.S.E:rpm zypper
LFS:Linux From Scratch
7.操作系统虚拟技术:将有限的计算机资源切割开成多个分配出来(如CPU,内存等),每个被分配的是独立的,让使用者感觉到自己是独占计算机资源的。
常见的虚拟机软件:
VMware Workstation ,virtualbox