1、LInux操作系统发展与演变
ENIARC:
CUP:运算器、控制器。寄存器、缓存
存储器:内存、RAM
Input:指令+数据
Output:结果
程序:指令+数据 算法+数据结构
字节是最小存储单位,cpu以字节的形式进行读取,32位操作系统一次可以读取32bit 2^32=2^2 * 2^10 * 2^10 *2^10 bit =4GB
内存是编址的存储单元
单任务: CPU和内存速度不匹配,CPU空闲
多任务:中断系统
Bell,MIT,GE=Mutics
DEC:PDP-汇编语言
Unics = unix(1969)
B:Dennis Ritch,C
Berkeley:
Bill Joy, BSRG,1977, BSD(Berkeley System Distribution)
Mircrosoft: Bills Gates
SUN: Bill Joy
Apple:XEROX
1985: Richard Stallman
GNU: GNU is NOT Unix
GPL:General Public License
FSF:Free Software Foundation
X-windows
gcc: GNU C Compiler
vi; visual interface
Unix二次发行版
SUN:Solaris
IBM:AIX
HP:HP-UX
Andrew: Minix, 4000+行
1990:BSD
1991年8月: Linux
GPL
2、操作系统改概念
操作系统为每个程序虚拟出一个美好花园,让每个程序觉得只有自己独占硬件系统,
程序是静态,进程是动态
广义上的操作系统:Kernel+Applications
狭义上的操作系统:Kernel
GNU提供Applications,Linus提供Kernel,就成了GNU/Linux,简称Linux
GNU/Linux是以源码(文本)的形式提供
大教堂式开发
集市式开发
Mac:BSD
选定了方向就一直坚持下去
OS的接口有两类:
GUI:Graphic User Interface
GNome:C,GTK
KED: C++,QT
CLI: Command LIne Interface
bash
zsh
sh
3、操作系统的功能:
驱动程序
进程管理
安全管理
网络管理
文件系统
......
API:Application Program Interface
程序员面对的编程接口
POSIX:Portable Operating system
是为了不同操作系统提供统一的编程接口,它会把统一的API转化成不同系统的ABI
硬件-->Kernel(system call)-->Library-->POSIX
ABI:Application Binary Interface windows(exe,msi),linux(deb,elf)
程序运行面对的运行接口
不同系统的API是一样的,不同系统的ABI不一样,中间通过POSIX转化,使得不同系统上开发的程序可以相互移植运行
linux和window的API兼容,编译后的ABI不兼容
Unix-Like的系统API和ABI都兼容
4、Linux 发行版
GNU:
不同厂商把Linux源码编译成二进制格式运行称为Linux的发行版
主要发行版:
1、Debian: 更轻巧,对技术能力要求更高
Ubuntu
mint
knopix
2、Slackware
S.u.S.E
OpenSUSE
3、Redhat
Redhat 9.0
Redhat Enterprise Linux: RHEL 主要是出问题了,只提供源码,编译成二进制运行要收服务费
CentOS:Community enterprise OS
Fedora Core
4、Gentoo
5、ArchLinux
软件版本号
major.minor.release 2.1.3
Linux:0.99, 2.2, 2.4, 2.6, 3.0, 4.0
www.kernel.org
GNU:
vi
gcc
发行版也有自己的版本号
RHEL:5.x, 6.x, 7.x
Debian: 8.x
OpenSuSE:13.x
5、Linux基础
CPU架构:
x86
x64(amd64)兼容x86
m68000:摩托罗拉
arm:手持智能设备
ultrasparch:SUN
power:IBM
MIPS
alpha:HP-ux
闭源:不提供源代码
开源协定:
GPL:General Public License 最为严格的开源
LGPL:Lesser GPL
FSF:Free Software Foundation
BSD:宽松的GPL
Apache:宽松的GPL
ASF:Apache Software Foundation
双线授权:许多人采用的方式
Community:遵循开源协定
Enterprise:更易用,收费
程序管理
程序的组成部分
二进制程序
配置文件
库文件(二次开发)
帮助文件
程序包管理
把程序组成的文件打包成一个或有限几个文件
安装:把程序的各部分文件放在指定目录下
卸载:把程序的各部分文件输删除
Debian:dpkg, apt-get
Redhat:rpm,yum(dnf)
S.u.S.E:rpm, zypper
ArchLinux:port
Gentoo:
LFS:Linux From Scratch
#localectl set-locale LANG=zh_CN.utf8 //设置中文