计算机的组成及功能
根据冯·诺依曼原理
现在计算机有五部分组成
分别是:运算器、控制器、存储器、输入设备和输出设备
现在把运算器和控制器做到一块就是所谓的CPU
CPU = 运算器+控制器
存储器:memory 用于存储信息的记忆设备,存储器分为ROM和RAM
编址存储设备
ROM:只读存储器,寻址地址空间的组成部分
RAM:随机存储器
输入和输出设备:
输入设备:向计算机输入信息的设备
输出设备:向人提供运行结果的设备
bus:总线
总线的作用:将电气信号转换为数字信号
总线划分:数据总线、地址总线、控制总线
南桥:低速
北桥:高速
地址总线是实现寻址的
计算机工作流程图:
程序:
指令+数据
指令:只读
数据:读写
运行程序格式:
Windows: EXE, dll(dynamic link library) 动态链接库
Linux: ELF, so(shared object) 共享对象
程序:算法+数据结构
库调用,系统调用:允许被调用的程序;不提供数据,只提供指令
编程语言:
语言:
解释型语言
编译型语言
编译方式:
首先将源程序翻译成等价的目标程序,然后再执行此程序,运行速度较快。如:C 、FORTRAN
解释方式:
是把源程序逐句翻译,翻译一句执行一句,边翻译边执行,运行速度较慢。解释程序不产生将被执行的目标程序,而是借助解释程序直接执行源程序本身。如:BASIC 、 LISP
编程语言:
汇编语言:微码编程
系统中某些与硬件相关的特有代码、驱动程序开发;
高级语言C, C++:
系统级应用、驱动程序
高级应用java, python, php:
应用程序
malloc() 申请, free() 释放 节约内存资源
通用软件:
向上提供接口统一接口,负责硬件的翻译
OS: Operating System
将底层的细节隐藏起来,并提供一个统一的规范的,简介的接口提供出来,这就是操作系统的用途
软件程序
通用目的
硬件驱动
进程管理
内存管理
网络管理
安全管理
System Call
Syscall:系统调用
编程层次:
面向硬件编程称为:
硬件规格:hardware specifiacation
系统调用:任何只有内核才能执行的操作,通过接口的形式表现出来,这些接口称之为系统调用:操作系统之上再抽象一次
库调用:library call
把系统调用封装成更复杂的程序,以供别人使用,称之为库,又称重复造轮子
系统启动=内核+外壳
软件开发相关的概念介绍:
UI:前端,用户接口
GUI: Graphic User Interface 图形界面
CLI: Command Line Interface 命令行
ABI: Application Binary Interface 应用二进制接口 编译以后
API:Application Programming Interface 开发以后 应用编程接口
ANSI:协议
glibc:C的标准库 Linux库
生命周期:进程切换(上下文切换)
集成开发环境(IDE):包括文本编写,gcc编译,库链接等
GCC:预处理、编译、汇编、链接 GNU C Complier
内核通过任务结构管理进程
进程:由父进程fork自身而来(由父进程申请,内核完成)
多任务:process
进程:程序实例,程序子集
POS: Portable Operating System
POSIX:可移植操作系统规范
POSIX 定义 API: 编程接口
CPU的架构类型:
x86
x64
arm
摩托罗拉:m68000, m68k
IBM:第一个多核CPU power
苹果、IBM、摩托罗拉联合设计:powerpc,简装版power
sun:ultrasparc
HP:alpha
安腾
操作系统介绍:
Windows
dos
windowsNT
Windows2012
Unix
System (Bell Lab)
AIX (IBM)
Solaris (SUN)
HP-UX (HP)
BSD: (BSRG)Berkeley System Distribution
NetBSD
OpenBSD
FreeBSD 在pc机上运行
Linux
Linus –> Linux
GNU/Linux
荷兰安德鲁教授仿造unix弄了一个Minix
Linus Torvalds 写了Linux内核
Linus:1991,8月份
1994年linux1.0内核发布
麻省理工学院MIT:Richard Stallman 激进分子 80年代中期
Free,软件行业自由运动
GUN:GUN is Not Unix(递归缩写)
GPL:通用公共许可证:General Public License
以下软件
emacs,gcc, bash vi
Linux内核是有Linus Torvalds,而相关的软件是由GNU软件组织提供。
Linux开发版介绍:
Slackware系列:
slackware
suse SLES:suse的企业版
opensuse
debian系列:
debian:不是商业组织,最接近原汁原味的Linux
ubuntu
mint
redhat系列:
rhel: redhat enterprise linux
每18个月发行一个新版本
CentOS:兼容rhel的格式
fedora:2003 年 由社区维护 每6个月发行一个新版本
archlinux系列:
ArchLinux:轻量级,下去找资料
Gentoo系列:
Gentoo:程序包在硬件上现编译
LFS系列:
LFS: Linux From scratch 自己定制Linux
程序包管理器:
rpm:
RHEL, Fedora, suse, centos
dpt:
Debian, Ubuntu
开源协议说明:
GNU: GPLv2, GPLv3, LGPL(lesser) 宽松的
Apache: apache
BSD: bsd
A: 1000, GPL,
B: 20000, 20 B借用到A的20条代码,B必须也要遵循GPL协议,流毒无穷协议。
自由软件:
自由软件:
自由使用;自由学习和修改;自由分发;自由创建衍生版;
Linux 的哲学思想:
1、一切皆文件;
把几乎所有资源,包括硬件设备都组织为文件格式;
2、由众多单一目的小程序组成;一个程序只实现一个功能,而且要做好;
组合小程序完成复杂任务;
3、尽量避免跟用户交互;
目标:实现脚本编程,以自动完成某些功能;
4、使用纯文本文件保存配置信息;
目标:一款使用的文本编程器即能完成系统配置工作;
Linux命令格式:
COMMAND [OPTIONS…] [ARGUMENTS…]
选项:用于启用或关闭命令的某个或某些功能;
短选项:-c, 例如:-l, -h
多个短选项可命令使用,例如-l -h, 可写作-lh;
长选项:–word,例如:–long, –human-readable
参数:命令的作用对象
向命令提供数据
命令总结:
ifconfig
1、命令格式
ifconfig [选项] [参数]
2、命令功能
查看和配置网络设备
3、选项
up:启动网络接口
down:关闭网络接口
-s:显示摘要信息
add:增加ipv4地址
-a:显示网卡详细信息
不带选项,相当于-a
echo
1、命令格式
echo [选项] [参数]
2、命令功能
回显
3、选项
-n: 禁止自动添加换行符号;
-e: 允许使用转义符;
\n: 换行
\t: 制表符
tty
显示当前所在的终端
startx
进入图形界面
export
设置或显示环境变量
修改环境变量值的方式:export 变量名="值"
变量赋值:把赋值符号后面的数据存储于变量名指向内存空间;
相当于调用PWD变量,显示当前的目录
OLDPWD变量上一级目录
hash
shell搜寻到的外部命令的路径结果会缓存至kv(key-value)存储中;
history
管理命令历史;
登录shell时,会读取命令历史文件中记录下的命令:~/.bash_history
登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中;
history:
-a: 追加本次会话新执行的命令历史列表至历史文件中;
-d: 删除历史中指定的命令;
-c: 清空命令历史;
快捷操作:
!#: 调用历史中第#条命令;
!string:调用历史中最近一个以string开头的命令;
!!: 上一条命令
调用上一条命令的最后一个参数:
!$:
ESC, .
环境变量:
HISTSIZE:命令历史记录的条数;
HISTFILE:~/.bash_history;
HISTFILESIZE:命令历史文件记录历史的条数;
控制命令历史的记录方式:
环境变量:HISTCONTROL
ignoredups:忽略重复的命令;连续且相同方为“重复”;
ignorespace:忽略所有以空白开头的命令;
ignoreboth:ignoredups, ignorespace;以上两种都生效
shutdown
shutdown [OPTION]… TIME [MESSAGE]
-r: reboot
-h: halt
-c:cancel :取消关机或重启操作
TIME:
now: 立刻
+m: 相对时间表示法,从命令提交开始多久之后;例如 +3;
hh:mm: 绝对时间表示,指明具体时间;
poweroff
关机
reboot
重启
date
date [OPTION]… [+FORMAT]:显示
FORMAT: 格式符号
%a或%A:星期
%Y:四位年份
%y:两位年份
%m:月
%M:分钟
%d:日
%h:英文简写的月
%H:时
%S:秒
%s:现在距离1970年1月1号0点0分(unix元年)的秒数,timestamp(时间戳)
%D:月/日/年
%F:年-月-日
%T:时:分:秒
date [MMDDhhmm[[CC]YY][.ss]]:设置
MM: 月分
DD:几号
hh: 小时
mm: 分钟
YY: 两位年份
CCYY: 四位年份
.ss: 秒钟
显示今天为周几?
date +%a ; date +%A
设定当前系统时间?
date [MMDDhhmm[[CC]YY][.ss]]
date 0815170115.21
显示今天的日期,形如:08/15/15?
date +%D
显示当前的时间,形如: 16:01:21?
date +%T
clock
硬件时钟
hwclock
显示硬件时钟
-s, –hctosys :以硬件为准
-w, –systohc:以软件为准
cal
显示日历
type
显示内部命令还是外部命令
which
查找外部命令的路径
whereis
定位可执行文件、源代码文件、帮助文件在文件系统中的位置
目录相关的命令:
当前目录或工作目录
主目录,家目录:HOME
root: /root
普通用户:/home/USERNAME
/home/tom
~:用户的主目录
cd
cd 或 cd ~: 回当前用户的主目录
cd ~USERNAME: 切换至指定用户的主目录 如: cd ~ abc
cd -: 在上一个目录和当前目录之间来回切换
. :当前目录
.. :上一级目录
ls
显示指定路径下的文件列表;不能显示文件本身
ls [OPTION]… [DIR]…
-a, –all: 显示所有文件,包括隐藏文件;
-l: 长格式
-rw-r–r– 1 root root 44800 Aug 14 14:32 install.log
-rw-r–r–:
最左侧的第一位:文件类型
-, d, l, b, c, p, s
后面的9位:访问权限,perm
数字:文件被硬链接的次数;
左root: 文件的owner :所有者
右root: 文件的group:所属组
44800:文件的size
Aug 14 14:32 : 文件的最近一次被修改的时间
install.log: 文件名
-h, –human-readable:单位换算
-d: 显示目录自身的相关属性;通常要与-l一起使用;
-r, –reverse: 逆序显示
-R, –recursive: 递归
stat
stat /PATH/TO/SOMEFILE:获取指定文件的元数据
Access: 访问时间
Modify: 修改时间
Change:改变时间
文件查看命令:cat, tac
cat
cat [OPTION]… [FILE]…
-E: 显示行结束符$
-n: 对显示出的每一行进行编号
file
文件内容类型查看命令
file /PATH/TO/SOMEWHERE
pwd
显示当前目录
basename
显示当前目录的基名
dirname
显示当前目录的目录名
用户登录信息查看命令:
whoami
显示当前登录有效用户
who
系统当前所有的登录会话
w
系统当前所有的登录会话及所做的操作;
USER:登录用户名
TTY:登录后的终端
FROM:远程主机名
LOGIN@:何时登录
IDLE:空闲时间
JCPU:tty链接所有进程占用的时间
PCPU:在WHAT显示的进程占用的时间
WHAT:正在运行的进程命令行
常用的环境变量
PATH
bash 默认搜索路径
SHELL
显示当前所在的shell
PS1
命令提示符:prompt
[root@localhost ~]#
prompt:
管理员:#
普通用户:$
\u:当前用户
\h:主机名
\W:工作目录的路径基名
基名:当前目录的最后一段
PWD
保存了当前目录路径
OLDPWD
上一次所在目录路径
HOME
显示当前用户的家目录
命令帮助
内部命令:
# help COMMAND
外部命令:
(1) # COMMAND –help
# COMMAND -h
(2) 使用手册(manual)
# man COMMAND
手册页:/usr/share/man
man1 … man8
man1: 用户命令
man2: 系统调用
man3: C库调用
man4: 设备文件及特殊文件
man5: 配置文件格式
man6: 游戏
man7: 杂项
man8: 管理类的命令
注意:有些关键在不止一个章节中存在帮助手册;
要查看指定章节中的手册:man # COMMAND
man命令的配置文件:/etc/man.config
MANPATH /PATH/TO/SOMEWHERE: 指明新的手册文件搜索位置
# man -M /PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页并显示之;
帮助手册中的段落说明:
NAME:程序的名字及简要说明
SYNOPSIS:命令的简要使用帮助
DESCRIPTION:功能详细描述
OPTIONS:选项
EXAMPLES:使用示例
AUTHOR:作者
REPORTING BUGS:报告bug的联系人
SEE ALSO:参考
SYNOPSIS:
[]:可选内容
<>: 必选内容
a|b:二选一
…: 同一内容可出现多次
{ }:定界,说明[]和<>
操作方法:
Space, ^V, ^f, ^F: 向文件尾翻屏;
b, ^B: 向文件首部翻屏;
d, ^D: 向文件尾部翻半屏;
u, ^U: 向文件首部翻半屏;
RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行;
y or ^Y or ^P or k or ^K:向文件首部翻一行;
q: 退出;
#:跳转至第#行;
1G: 回到文件首部
G:翻至文件尾部
文本搜索:
/KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写;
n: 下一个
N:上一个
?KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;
n: 跟搜索命令同方向,下一个
N:跟搜索命令反方向,上一个
(3) 信息页
# info COMMAND
(4) 程序自身的帮助文档
README
INSTALL
ChangeLog
(5) 程序官方文档
官方站点:Documentation
(6) 发行版的官方文档
(7) Google
(8) slideshare
http://www.slideshare.net/
Linux的文件系统
根文件系统(rootfs):
root filesystem
LSB:Linux标准库 FHS: (FileSystem Heirache Standard)文件系统层级标准
/etc, /usr, /var, /root, /home, /dev
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录;
/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序;
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序;
/lib:基本共享库文件,以及内核模块文件(/lib/modules);
/lib64:专用于x86_64系统上的辅助共享库文件存放位置;
/etc:配置文件目录(纯文本文件);
/home/USERNAME:普通用户家目录;
/root:管理员的家目录;
/media:便携式移动设备挂载点;
cdrom
usb
/mnt:临时文件系统挂载点;
/dev:设备文件及特殊文件存储位置;
b: block device,随机访问 块设备
c: character device,线性访问 字符设备
/opt:第三方应用程序的安装位置;
/srv:系统上运行的服务用到的数据;
/tmp:临时文件存储位置;
/usr: universal shared, read-only data;只读的
bin: 保证系统拥有完整功能而提供的应用程序;
sbin:
lib:
lib64:
include: C程序的头文件(header files);
share:结构化独立的数据,例如doc, man等;
local:第三方应用程序的安装位置;
bin, sbin, lib, lib64, etc, share
/var: variable data files 经常发生变化的文件
cache: 应用程序缓存数据目录;
lib: 应用程序状态信息数据;
local:专用于为/usr/local下的应用程序存储可变数据;
lock: 锁文件
log: 日志目录及文件;
opt: 专用于为/opt下的应用程序存储可变数据;
run: 运行中的进程相关的数据;通常用于存储进程的pid文件;
spool: 应用程序数据池;
tmp: 保存系统两次重启之间产生的临时数据;
/proc: 用于输出内核与进程信息相关的虚拟文件系统;
/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统;
/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置;
Linux上的应用程序的组成部分:
二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc
Linux下的文件类型:
– (f):普通文件;
d: 目录文件;
b: 块设备;
c: 字符设备;
l: 符号链接文件;(软连接)
p: 管道文件;
s: 套接字文件;socket; 通信接口(IP地址+端口)
socket文件不跨主机通信,在同一台主机中实现通信,打开
通信信道,就是套接字文件。跨主机利用协议通信,不跨主机
利用套接字通信。
原创文章,作者:N21_ Dominic,如若转载,请注明出处:http://www.178linux.com/20127
评论列表(1条)
写的很好,可以多注意一下排版问题,有没有尝试自己去画一些图来理解问题,加油