2015年3月24日 第一节 Linux基础知识讲解
一、导语及背景知识:
计算机发展到现代已经发展了四代;并且呈现加速发展趋势;
1945-1956年,电子管时代,ENIAC
1956-1968年,晶体管时代, 开始穿线编程语言;
60年代中后期,中小规模集成电路时代
电流方向:负极——>正极
电流在运动过程中会有损耗,所以以通电与否来代表二进制,而不是以电压多少来代表具体数字;
CPU=运算器(加法器等)+控制器(电路控制开关)
CPU的主频代表的是cpu电路在单位时间内完成的开关闭合的次数及能力。所以,主频越高则输入输出能力就越强。
70年代,超大规模集成电路;
1.编程语言:
解题空间:代表计算机计算能力--机器语言;
问题空间:人类问题--自然语言。
编程语言的执行过程就是自然语言转换为机器语言的执行过程。
①低级语言
微码编程接口:汇编语言,原生的与计算机01代码一一对应,性能高效。
执行过程:汇编语言-->汇编器-->01代码
②高级语言:与汇编语言相比更加接近自然语言;
运行过程:高级语言-->编译器-->汇编语言-->机器语言;
③编程语言执行过程:
操作界面(输入设备)-->硬件-->程序(运行依赖硬件,处理操作)-->输出结果
键盘是标准的输入设备;
屏幕是标准的输出设备。
2.程序:指令+数据
指令集分为: 精简指令集
复杂指令集
3.冯 诺依曼结构:5大部件:运算器、控制器、存储器、输入设备、输出设备。
CPU:运算器和控制器(中央处理器)
CPU只和内存交互!
内存:可编址存储单元;
00, 01, 10, 11
32操作系统每次读取32bit;32bits, 2^32, 2^10=1024
1024*1024*1024*4 bytes
1024*1024*4 k bytes
1024*4 m bytes
4 g bytes
五大部件运行过程:内存--(内存控制器:寻址)--CPU(控制器)--CPU(运算器)--CPU(控制器)--内存
二、操作系统的发展历程:
1.Unix
CTSS: Compatible Time-Sharing System 兼容分时系统;
BATCH: job1 $$$$$$ job2 $$$$$ job3 ;批处理系统
*进程:活动状态的程序,执行中的程序
2.Multics,
MULTIiplexed Information and Computing Service
项目应为功能设置太强大、太广泛,而解散,其中的Ken、Dennis、Doog等人均参与该项目。
3.Unix
ken thompson, dennis ritchie,dogg
为打星际旅行,寻找到一个DEC生产的PDP-7,(当时版本为PDP11)
开发小型的文件系统
Unics: (后改名为Unix)
Uniplexed Information and Computing Service
Unix:汇编语言,B语言写程序
C语言:兼具低级语言特性的高级语言
1973:用C重写Unix
Berkeley, BSRG兴趣小组,
1977 Bill Joy 【SUN创始人】,创建BSD发行版:
1980, DARPA, 美国国防先进研究项目局,需求开发 TCP/IP,BSD获得授权。
Unix中世纪,为版权打官司,闭源;
现在主要Unix发行版: System V, BSD Lite
BSD: FreeBSD(386平台), OpenBSD, NetBSD
4.Windows
Bill Gates :
QDOS
QDOS+GUI=Windows 1.0
VAX(VMS)+GUI+QDOS=widows NT
WindowsNT+OS/2=Windows Vista & Windows 7
5.Linux:
Linus 芬兰,赫尔辛基大学
Linus, Linux
Richard Stallman, GNU(GNU is Not Unix)运动, Free
GPL: General Public License (free)
①自由学习,自由修改;
②处于任何目的获取源代码;
③可以自由分发源代码;
④自由创建延伸版。
https://www.gnu.org/copyleft/gpl.html
https://www.gnu.org/licenses/gpl-2.0.html
LGPL: lesser GPL
gcc, gnu c complier,编译器。
FSF: Free Software Fundation 自由软件基金会
X window:开源,遵循GPL协定。 图形管理协议。
Stallman 试图开发HURD内核,作为操作系统。但进展缓慢。
Linux 1.0, Unix-like 类Unix系统。
开发及版本控制:
patch: Larry Wall(语言学家), perl,相当于版本控制软件
GNU, Linux = GNU/Linux
6.MAC OS
脱身于BSD,乔布斯
7.MINIX: Andrew, 4000行
三、经验教训总结:
Unix的历史教训:
别和低价灵活的方案较劲;
越开源越繁荣;
Uinx的哲学基础:
①让每个程序只做好一件事;如果有新任务,那么就新启一个程序,而不要在原程序中增加功能;
②假定每个程序的输出,都会做为另一个程序的输入;输出中不要有无谓信息干扰;不要交互式输入;
③尽可能早地将设计和编译的程序投入试用,哪怕是系统级的程序也不例外;
④使用工具而不是人力来减轻负担;
简而言之:一个程序只做一件事,并做好;程序间要能互相协作;程序要能处理文本流;
Rob Pike: C语言大师:
①除非你确定,否则不要轻易修改代码;
②评价算法复杂度:O(n),只有当n很大的时候,才能体现出花哨的算法的优势来,但是n通常很小;
③数据压倒一些,即编程的核心是数据。
四、操作系统介绍:
1.计算机结构简介:
底层硬件
系统级开发OS-- C、C++
系统级开发库(System Call)--C、C++
提供共享功能模式,作为程序组成部分而存在,是指是指令功能模块;
减少程序体积
Windows:dll: dynamic link labrary
Linux:so: shared object
应用开发App-Shell --Perl、Python
用户
2.CPU架构类型:
①复杂指令集
X86:Intel,AMD,32Bits-->PC Server
X64:ADM64 -->PC Server
ARM:只做技术规范,后给三星、高通生产。知本主义,32Bits & 64Bits
②精简指令集
IBM Power 高性能,高价格
PowerPC 高性能,高价格
SUN Sparc,Unlrasparc
摩托罗拉 M68000 M68k
惠普 Alpha
2.OS的功用:
1、将硬件规格抽象为系统调用(System Call);硬件管理
2、进程管理;多任务,分片
3、文件系统;
4、硬件驱动;
5、网络协议栈;
6、安全功能;
7、内存管理;
3.shell:用户接口,用户与OS交互。
*终端类型介绍:
a.MainFrame框架介绍:
主机--分屏器--终端(n)
Linux模拟了MainFrame框架的模式。
b.分类:
物理终端--控制台--/dev/console
虚拟终端--tty --/dev/tty(n)
@@@ tty @@@:显示当前终端;
Ctrl+Alt+F(n):切换到tty(n);默认tty7为图形终端;
伪终端--SSH或Telnet远程连接打开的终端--/dev/pts/(n)
串行终端-- --/dev/ttys(n)
图形终端--GNOME & KDE -- Ctrl+Alt+F(n)
启动终端:$startx Ctrl+Alt+F7
后台启动:$startx & Ctrl+Alt+F7
第二次启动:$startx -- :1 & |Ctrl+Alt+F8
第三次启动:$startx -- :2 & |Ctrl+Alt+F9
①CLI:命令行接口,Command Line Interface
sh, bash, ksh, zsh, csh, tcsh
用户工作环境:
命令提示符:
root:#
普通:$
作用:提供命令行界面;
提供编程界面;
@@@@ echo $SHELL:显示当前shell @@@@
②GUI:图形用户接口,Graphic User Interface,提供桌面环境
X window:图形界面管理协议
Gnome:C语言开发,gtk环境
KDE:C++开发,QT环境
Xfce:轻量级
③用户:
管理员:管理权限;
命令提示符:#
普通用户:系统资源使用权限
命令提示符:$
④定制shell工作环境:通过内置变量实现:[变量的实质是内存空间]
变量赋值:VAR_NAME=VALUE
echo $VAR_NAME:显示变量值
echo $SHELL:显示当前用户shell
echo $PS1:显示命令提示符信息
PS1:定义命令提示符前的信息:
\u:用户名称
\h:主机名称,短名称
\H:主机名称,长名称
\w:当前路径,相对路径
\W:当前路径,绝对路经
\$: 提示字符
定义方法:
export PS1=
export PS1=‘\033[3(n)m***\033[0m‘*其中n表示1-7的数字,代表其中颜色;
4.软件及软件接口:
①接口:
API:Application Programming Interface,应用编程接口;为库的调用规范和接口;
POSIX:IEEE制定的统一的API规范,前身POS(Portable Operating System)
ABI:Application Binary Interface:编译后二进制源码与内核、CPU相关,不同平台及操作系统均不兼容。
②自由软件:
GPL:较为严格
LGPL;Lesser GPL
Apache:较为松散
BSD:较为松散
5.系统运行模式:
①用户模式:
②内核模式:
程序在运行时,一般只使用普通命令集。
当程序需要调用库时,库做系统调用,从而软中断,系统做运行模式转换。
CPU指令集分为四层:
环0,硬件级别调用,只用内核才有权限
环1,未使用
环2,未使用
环3,普通命令集,
五、Linux发行版:
1、Linux发行版简介:
Linux:项目源代码,独立存在;
常见开源协定:****开源软件也是有版权的!!**** CopyRight & CopyLeft
GNU:GPL开源协定
gcc, bash, vim, openssl
Apache: Apache开源协定
BSD: BSD开源协定
Linux发行版:
Kernel+GNU程序+系统安装程序
Linux内核
网址:https://www.kernel.org/
最新版本:3.19.2
version: major.minor.release
major: 主版本号
minor: 次版本号
release:发行号,修正号
2、三大常见Linux发行版:
①Red Hat
Fedora:桌面版
CentOS:社区企业版,Community ENTerprise OS
RHEL:企业版,Red Hat Enterprise Linux
*CentOS与RHEL完全兼容。
②slackware
S.u.S.E
OpenSUSE:北美
③Debian
Ubuntu
3、其他常见Linux发行版:
Gentoo: 高级发行版
LFS:linux from scratch
kali:主要用于安全测试领域;
Android:java虚拟机
Linux + java vm + android
ios:
基于FreeBSD
开发采用object-C
六、Linux 哲学思想:
一切皆文件(包括硬件);
由众多目的单一的小程序组成;
组合小程序完成复杂任务;
尽量避免跟用户交互;为了方便脚本编程实现程序自动化运行;
使用文本文件保存程序的配置数据;
K.I.S.S:Keep It Simple, Stupid.
七、Linux的文件系统:
①一切皆文件;
②层级格式的树状结构:
③数据类别:
元数据(metadata):索引文件
数据(data):文件内容
④路径:
路径分隔符:/
相对路径:从当前位置开始定义的路径表示方式
绝对路径:从根开始定位的路径表示方式
④文件表示方法:
a.名字
严格区分大小写
可以使用除了/以外的任意字符
b.数字:inode
⑤目录:
家目录/主目录:
/root:
/home/USERNAME
工作目录/当前目录:working directory:
#pwd: print working directory
八、Linux命令:
1.分类:
内建命令:buildin,shell自带的基本命令;
外置命令:独立于shell之外的有这可执行程序文件:
#type CMD:查看命令类别
2.命令使用方法:在命令提示符下键入命令;
命令书写格式:COMMAND OPTIONS ARGUMENTS
例:ls -a /root
OPTIONS:选项
形式:
-CHAR:短选项,多个段选项可以合并;
--WORD:长选项,
功能:定义命令运行行为
ARGUMENTS:参数
功能:致命命令的作用对象。
!注意:有些选项自身也可以带参数,用于指定选项的作用方式或者作用对象;
例:mkfs -t btrfs /dev/sda3将/dev/sda3格式化为btrfs文件格式;
3.命令使用帮助:
===================================================
九、总结:
1.命令总结:
-----------------------------------------------
#tty:显示当前终端类别
#startx &:启动图形终端,后台 Ctrl+Alt+F7
startx -- :1启动另一个图形终端 Ctrl+Alt+F8
startx -- :2启动第三个图形终端 Ctrl+Alt+F9
#echo $VAR_NAME
echo $LANG :查看当前系统默认语言
echo $SHELL :显示当前默认shell
echo $PS1 :显示命令提示符信息;
\u:
\h
\H
\w
\W
export PS1=[\u@\h \w]\$*默认形式,可依据上面选项更改
export PS1=‘\033[3(n)m \033[0m‘*n=[1-7]数字,代表不同颜色,可以更改文字的默认颜色;
#pwd:查看当前工作路经
#type CMD:查看命令类型
--------------------------------------------------------
2.作业问答:
a.什么事GPL,有设么限定?
3.书籍推荐:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。