目录
1、Linux允许核心转发:DHCP、FTP、HTTP、Cobbler
5、GUN(是一个自由的操作系统,其内容软件完全以GPL方式发布):GPLv2, GPLv3, LGPL(lesser)
9、交互式接口:启动终端后,在终端设备附加一个交互式应用程序
1、Linux允许核心转发:DHCP、FTP、HTTP、Cobbler
2、现代计算机设备的组成部分:
- 运算器、控制器、存储器、输入设备、输出设备(如:CPU、BUS(总线)、Memory(编址存储设备)、Read Ahead(高速缓存))
- IO:(磁盘、网卡)
- CPU:(运算器、控制器)CPU指令、指令集
- 特权指令:OS运行特权指令
- 普通指令:
- OS:Operating System
- 软件程序
- 通用目的
- 硬件驱动
- 进程管理
- 内存管理
- 网络管理
- 安全管理
- System Call:Syscall(系统调用)
- 编程层次:
- 硬件规格(Hardware Spenifiacation)
- 系统调用
- 库调用(Library Call)
- UI:
- GUI(Graphic User Interface):图形用户界面
- CLI(Command Programming Interface):指命令行界面
- ABI(Application Binary Interface):应用程序二进制接口
- API(Application Programming Interface):应用程序接口
- CPU架构类型:
- x86
- x64
- arm
- m68000,m68k
- power
- powerpc
- ultrasparc
- alpha
- 安腾
3、计算机基础知识:
- 程序运行模式:
- 用户空间(User Space)
- 内核空间(System Space)
- POS(Portable Operating System):可移植性的操作系统
- POSIX:可移植性的系统操作接口
- API:编程接口
- 运行程序格式:
- Windows:EXE(执行程序),DLL(Dynamic Link Library:动态链接库)
- Linux:ELF(可执行文件),SO(Shared Object:共享库)
- 程序:指令+数据
- 指令:只读
- 数据:读写
- 程序:算法+数据结构
- 库调用、系统调用:允许被调用的程序:
- malloc():C语言中动态内存分配
- free():C语言中释放空间的函数
- 编程语言:
- 汇编语言:微码编程(系统中某些于硬件相关的特有代码、驱动程序开发)
- 高级语言C、C++:系统级应用、驱动程序
- 高级应用JAVA、Python、PHP:应用程序
- Unix-like:各种传统的UNIX系统
4、Linux发行版本:
- Linux From scratch:较古老的Linux发行版,灵活性和稳定性作为主要目标
- SUSE:SUSE Linux原是以Slackware Linux为基础,并提供完整德文使用界面的产品
- OPENSUSE:openSUSE是一个一般用途的基于Linux内核的GNU/Linux操作系统,由openSUSE项目社区开发维护,在2004年2月Novel收购SUSE Linux之后,Novell决定以100%开源产品发布SUSE Linux专业版,并作为一个开源项目
- SUSE:SUSE Linux原是以Slackware Linux为基础,并提供完整德文使用界面的产品
- Debian:是指一个致力于创建自由操作系统的合作组织及其作品(最接接近于Linux源版本)
- Ubuntu:是一个以桌面应用为主的Linux操作系统,Ubuntu基于Debian发行版和Gnome桌面环境
- Linux Mint:致力于使桌面系统对个人用户每天的工作更易用,更高效
- Ubuntu:是一个以桌面应用为主的Linux操作系统,Ubuntu基于Debian发行版和Gnome桌面环境
- RedHat:红帽公司的产品
- RHEL(Read Hat Enterprise Linux):Red Hat公司发布的面向企业用户的Linux操作系统。大概每18个月发行一次;
- Centos:基于RHEL上开源的Linux发行版本,Centos最后加入Red Hat公司
- Fedora:Fedora基于Red Hat Linux,在Red Hat Linux终止发行后,红帽公司计划以Fedora来取代Red Hat Linux在个人领域的应用
- ArchLinux:Arch Linux项目注力于简洁主义(对开发者而言),其贡献在于对发行版的组件提供具有良好注释的配置文件,而非带有图形界面的配置工具。这也为其赢得适合“不惧怕命令行的中高级Linux用户”的发行版称号
- Gentoo:Gentoo是一个基于Linux的自由操作系统,它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点
- LFS: Linux From scratch:就是一种从网上直接下载源码,从头编译LINUX的安装方式。它不是发行版,只是一个菜谱,告诉你到哪里去买菜(下载源码),怎么把这些生东西( raw code) 作成符合自己口味的菜肴──个性化的Linux,不单单是个性的桌面。
- Android构成:Kernel+Busybox+Java虚拟机
5、GUN(是一个自由的操作系统,其内容软件完全以GPL方式发布):GPLv2, GPLv3, LGPL(lesser)
- LGPL: 是 GNU Lesser General Public License (GNU 宽通用公共许可证)的缩写形式,旧称 GNU Library General Public License (GNU 库通用公共许可证);
- GPL:GPL 是 GNU General Public License (GNU 通用公共许可证)的缩写形式;
- Apache: Apache取自“a patchy server”的读音,意思是充满补丁的服务器,因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
- BSD: BSD协议是“宽容自由软件许可证”中的一员,在软件复用上给予了最小限度的限制。BSD协议允许作者使用该协议下的资源,将其并入私人版本的软件,该软件可使用闭源软件协议发布。BSD UNIX发展起来,修改版本被Apple、Apache所采用
6、程序包管理器:
- RPM
- RHEL,Fedora、SUSE、Centos
- DPT
- Debian, Ubuntu
7、Linux哲学思想
- 一切皆文件:把几乎所有资源,包括硬件设备都组织为文件格式;
- 有众多单一目的小程序组成:一个程序只实现一个功能,而且要做好组合组合小程序完成复杂任务;
- 尽量避免根用户交互:实现脚本编程,已自动完成某些功能
- 使用纯文本文件保存配置信息:一款使用的文本编辑器既能完成系统配置工作
8、终端
- 用户与主机交互,必然用到的设备
- 物理终端:直接接入本机的显示器和键盘设备:/dev/console
- 虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端,Centos默认启动6个虚拟终端:Ctrl+Alt+F{1:6}
- 图形终端:附加在物理终端之上的以软件方式虚拟实现的终端:但额外会提供桌面环境
- 设备文件路径:/dev/tty#
- 模拟终端
- 图形界面下打开的命令接口,基于SSH协议或Telnet协议等远程打开的界面
- 设备文件:/dev/pts/[0,∞)
- 查看当前终端设备:tty
9、交互式接口:启动终端后,在终端设备附加一个交互式应用程序
- GUI:图形用户界面
- X Protocol:X视窗系统协议
- Windows Manager:窗口管理器
- Desktop:桌面
- GNOME (C:C语言编写, GTK:一套跨多种平台的图形工具包):GNOME是Linux操作系统上最常用的图形桌面环境之一
- KDE(C++:用C++编写,QT:跨平台C++用户图形界面应用程序开发框架):KDE 是一个网络透明的现代化桌面环境,支持Linux、 FreeBSD、Unix、其它类Unix、MOS Max 和微软的Windows
- XFCE :是一个自由软件,运行在类Unix系统上(如Linu、FreeBSD和 Solaris)上,提供轻量级桌面环境
- CLI:指令行界面
- Shell程序:
- sh:Bourne shell :Bourne shell 是一个交换式的命令解释器和命令编程语言
- csh:C shell:主要是为了让用户更容易的使用交互式功能,并把ALGOL风格的语法结构变成了C语言风格。它新增了命令历史、别名、文件名替换、作业控制等功能。
- tcsh:ENEX/TOPS C shell:Tcsh是csh的增强版,并且完全兼容csh。它不但具有csh的全部功能,还具有命令行编辑、拼写校正、可编程字符集、历史纪录、作业控制等功能,以及C语言风格的语法结构。
- ksh:Korn shell :ksh结合了所有的C shell的交互式特性,并融入了Bourne shell的语法,新增了数学计算,进程协作(coprocess)、行内编辑(inline editing)等功能
- bash:Bourne Again shell :bash是GUN计划的一部分,用来替代Bourne shell。它用于基于GNU的系统如Linux.大多数的Linux(Red Hat,Slackware,Caldera)都以bash作为缺省的shell,并且运行sh时,其实调用的是bash。
- zsh:Zsh初版由原作者保罗·弗斯塔德(Paul Falstad)于1990年在普林斯顿大学求学时编写 [3] 。其名称zsh源于普林斯顿大学助教的邵中(Zhong Shao,现任耶鲁大学教授)——保罗将邵中的用户名"zsh"作为此Shell的名称
- Shell程序:
- 显示当前使用的shell:[root@localhost ~]# echo ${SHELL}
/bin/bash - 显示当前系统使用的所有shell:[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh - 命令提示符:管理员:[root@localhost ~]# #代表管理员
- 命令提示符:管理员:[zhang@localhost ~]$ $代表普通用户