计算机的组成及其功能
计算机的组成
简单来说,计算机应由两部分组成:
第一部分:硬件
冯诺依曼结构体系
当前计算机主要是基于冯诺依曼体系结构设计的,在该体系中,计算机硬件由5个部件组成。分别是:运算器、控制器、存储器、输入设备和输出设备。而现今运算器和控制器一般集成在一起,叫中央处理器(Central Processing Unit, CPU)计算机最核心的部件,相当于人类的大脑。
中央处理器(CPU)
-
运算器:主要负责程序运算与逻辑判断
-
控制器:则主要在协调各周边元件与各单元间的工作
在CPU中,还包含了通用寄存器组,是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,存器有累加器(ACC)。
-
存储器(memory)
存储程序和数据,并能在计算机运行过程中高速、自动地完成从程序或数据的存取,也就是俗称的内存RAM(Random Access Memory) -
输入设备(Input):外部设备之一。作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据输入到计算机。常见的输入设备有:键盘、鼠标、磁带机、磁盘机、光盘机等
-
输出设备(Output):外部设备之一。作用是把计算机的中间结果或最后结果、机内的各种数据及文字等信息输出来。常见的输出设备有:CRT、打印机、绘图仪等
第二部分:软件
- 汇编语言(assembly language):一种用于cpu的低级语言。它使用助记符代替二进制语言,方便人类的阅读及操作。但一种汇编语言只能与相对应的计算机系统结构对应,无法在不同平台移植
汇编语言是最接近机器语言的低级语言,相当于用人类看得懂的符号来代替0和1,汇编通过指令集来下达命令控制CPU,并且它操作的对象并不是具体的数据,而是各种寄存器和内存;不同类型的CPU 有着不同的机器指令系统,所以,汇编语言程序与机器有着密切的关系。除了同系列、不同型号CPU 之间的汇编语言程序有一定程度的可移植性之外,其它不同类型(如:小型机和微机等)CPU 之间的汇编语言程序是无法移植的,也就是说,汇编语言程序的通用性和可移植性要比高级语言程序低。
- 系统软件(system software):用来运行或控制硬件所开发的计算机软件,如操作系统、编译器、数据库等等
常见的软件
- 操作系统(Operating system):控制与管理硬件及软件资源,并提供用户操作接口,完成人机交互的软件,常见的有Unix、GNU/Linux、 MAC OS X、Microsoft Windows等
- 编译器(compiler):将使用汇编语言编写的代码,转换成计算机可识别的机器语言,常见的有GCC
- 解释器(interpreter):将高级编程语言一行一行解释运行。它的好处是可以消除编译整个程序的负担,缺点则是运行速度比较缓慢,且使用解释器的代码在运行过程中,不可脱离解释器。常见的使用解释器的语言包括Perl、Python、Ruby等
- 连接器(linker):将由汇编器或编译器产生的目标文件和外部程序库链接为一个可执行文件
- 加载器(loader):负责将程序加载到内存中,并配置内存与相关参数,使之能够运行
- 应用软件(application software):为了某种特定用途而被开发的软件。它可以是一个特定的程序,也可以是一个由众多独立程序组成的庞大的软件系统
什么是Linux
在Linux诞生之前,一直是UNIX的天下,只不过UNIX在1979年之后就不能免费获得,要想使用就需要购买,在当时,这不是一个小数目。
后来Richard Mathew Stallman在1984年发起GNU计划,该计划意在构建一个完全自由的操作系统,所谓完全自由,就要要求加入GNU计划的所有软件必须自由使用,自由更改,自由发布,也需要把更改后的代码发布。并且制定了明文规定许可协议:GPL协议
GNU计划发起后,在这期间诞生了很多有名的软件,如(VI,emacs,gcc)但GUN上的软件都是运行在UNIX系统上,并没有“自由的Unix核心”存在。直到1991年,芬兰赫尔辛基大学的一个学生:Linus Benedict Torvalds 开发了一个类unix内核,一经发布便得到广大爱好者的支持,这个内核就是linux,1994年,linux加入GNU计划并采用GPL协议发布,自此GNU/LINUX真正实现了构建一套完全自由的操作系统的设想。
Linux发行版(Linux distribution)
Linux发行版是一种为一般用户预先集成好的Linux操作系统及各种应用软件。一般不需要用户重新编译,在直接安装之后,只需要作出小幅度的更改设置即可。Linux发行版通常包含了桌面环境、办公包、媒体播放器、数据库等应用软件。这些操作系统通常使用Linux、以及来自GNU计划的软件、和基于X Window的图形界面组成。
Linux发行版通常分为商业发行版和社区发行版。也有少部分既不属于发行版又不属于社区发行版,其中最有名的是Slackware.
- 著名的Linux发行版
按照程序包管理器的不同,通常Linux的发行版也被分成了不同的派系。
Redhat系
名称 | 基于 | 特点 |
---|---|---|
Red Hat Enterprise | RPM管理包 | 红帽的商业版本 提供10年服务支持 |
CentOS | RedHat | 根据RHEL代码编译的社区版 文档充足 |
Fedora | RedHat | 红帽官方的社区版 RH公司新技术测试平台 |
Slackware系
名称 | 基于 | 特点 |
---|---|---|
Slackware | SLS | UNIX风格的Linux发行版 KISS(简洁)的设计理念 |
SUSE | Slackware | 界面华丽 照顾欧洲人的使用习惯 |
opensuse | SUSE | suse的社区版 |
Debian系
名称 | 基于 | 特点 |
---|---|---|
Debian | Dpkg管理包 | 一直为社区版 限制较少 功能较多 要求技术较高 |
Adamantix | Debian | 关注安全 |
Knoppix | Debian | 对硬件支持极佳 对中日韩环境不够友好 |
Gnoppix | Knoppix | Knoppix的GNOME版 |
Ubuntu | Debian | 界面华丽 与Debian、GNOME开源社区关系紧密 有资金支持 |
Linux Mint | Ubuntu | Ubuntu的衍生版 开箱即用 |
Ubuntu Kylin | Ubuntu | 中文定制版 |
BackTrack | Ubuntu | 专业安全检测操作系统 已不再维护 |
Kali Linux | BackTrack | BackTrack替代者 安全渗透软件 |
其他
名称 | 基于 | 特点 |
---|---|---|
Gentoo | Portage管理包 | 大量程序开放源代码 对硬件要求较高 |
ArchLinux | pacman管理包 | 软件更新速度快 包管理简易高效 |
LFS(Linux From scratch) | 高端玩法 DIY系统 |
- 发行版之间的不同
在Linux发行版中,通常均使用软件包管理系统,不同的操作系统,软件包管理系统也不尽相同。比较常见的软件包管理系统有以下几种
Debian:deb, apt-get
RedHat:rpm, yum --> dnf
S.u.S.E: rpm, zypper
ArchLinux:port
LFS: Linux From Scratch
Linux的哲学思想
- 一切皆文件:
把几乎所有资源统统抽象为文件形式;包括硬件设备,甚至通信接口、进程等;
如;
物理终端:/dev/console
虚拟终端:/dev/tty#
串行终端:/dev/ttyS#
伪终端:/dev/pts/# - 由众多功能单一的程序组成;一个程序只做一件事,并且做好;
通过组合众多小程序完成复杂任务; - 尽量避免跟用户交互;
目标:易于以编程的方式实现自动化任务; - 使用文本文件保存配置信息;
说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述
Linux命令格式与基础命令
什么是命令
命令其实就是一个可执行文件。程序本身只是一个静态文件,只有通过这个请求,才会转化为有生命周期的动态进程。命令本身是一个可执行的二进制格式程序文件(Linux哲学思想:一切皆文件),请求一个命令相当于在环境变量$PATH中的路径寻找与之同名的程序,而PATH变量一般包含的路径有:
普通命令:/bin
,/usr/bin
,/usr/local/bin
管理命令:/sbin
,/usr/sbin
,/usr/local/sbin
命令往往会调用到许多库文件,这些库可能许多程序都会遇到,我们形象的称之为共享库。这些共享库也是二进制文件,但是由于其没有程序执行入口,所以不能独立执行。只能被其他有执行入口的程序调用时才能执行,一般这些库都存放在这些目录下:
32bits的库:/lib
,/usr/lib
,/usr/local/lib
64bits的库:/lib64
,/usr/lib64
,/usr/local/lib64
命令的分类与格式
-
命令的分类:
由shell程序自带的命令:内置命令(builtin)shell程序是一种独特的程序(用户接口进程),它的作用是负责解析用户提供的命令。
独立的可执行程序文件:文件名即命令名:外部命令
查看命令类型:type COMMAND
注意:并非所有的命令都有一个在某目录与之相对应的可执行程序文件,shell程序已经内嵌了许多命令。 -
命令的格式:
命令必须遵循特定格式规范:比如说win的exe,msi,对于linux而言则是ELF -
命令使用格式
COMMAND [OPTIONS] ARGUMENTS
COMMAND: 发起一个命令
OPTIONS:
指定命令的运行特性
一般选项有两种表现形式:
短选项:-C
例如-l -d
注意:
有些命令的选项没有-
如果同一命令使用多个短选项,多数可以合并,比如说 -l -d就可以写作-ld
短选项一般使用“ ”(空格)来分割
长选项:–word
例如–help –human-readable
注意: 长选项不能合并
长选项一般用“=”来表示
ARGUMENTS:
命令的作用对象,以及命令对什么生效
注意:有些命令可以同时带多个参数,多个参数之间以空白字符分割 下面举例说明一下命令用法 -
ifconfig
ifconfig(interface configuration)是在Unix-like系统中用于查看以及配置网络接口设备的系统管理工具。其作用等同于ip addr或ip link
作用:作用于类Unix系统中,用于配置、控制及查询TCP/IP网络接口的系统管理工具语法:ifconfig [interface]
ifconfig interface options | address …
常用方法:
ifconfig:查看当前系统中存活的网络接口设备信息
ifconfig eth#:查看指定的网络接口设备的信息
ifconfig -a:查看所有网络接口设备(通过此命令,非运行状态的网卡也可显示)
ifconfig eth# up:启动指定网络接口设备
ifconfig eth# down:关闭指定网络接口设备
ifconfig eth# add 33ffe:3240:800:1005::2/64:为指定网络接口设备添加IPv6地址
ifconfig eth# del 33ffe:3240:800:1005::2/64:为指定网络接口设备删除IPv6地址
ifconfig eth# hw ether 00:16:3E:10:60:B5 : 修改指定网络接口设备MAC地址
ifconfig eth# xxx.xxx.xxx.xx:给指定网络接口设备配置指定ip地址
ifconfig eth# xxx.xxx.xxx.xx netmask 255.255.255.0 :给指定网络接口设备配置指定ip地址及子网掩码
ifconfig eth# xxx.xxx.xxx.xx netmask 255.255.255.0 broadcast 192.168.120.255:给指定网络接口设备配置指定ip地址及子网掩码、广播地址
ifconfig eth# mtu 1500:给指定网络接口设备设置最大传输单元
备注:使用此命令对于网络接口的所有操作,在系统重启后均会失效。若需永久生效,需要通过修改配置文件的方式,配置文件的路径一般为
[root@test ~]# cd /etc/sysconfig/network-scripts/
[root@test network-scripts]# ls
-
echo
echo用来将字符串输出到终端上。它通常在shell脚本中使用,以将状态信息输出到屏幕或文件中
作用:显示文字语法:echo [SHORT-OPTION]… [STRING]…
echo LONG-OPTION
常用方法:
-n 不进行换行
-e 让转义符生效
转义符如下
\a 发出警告声
\b 删除前一个字符
\c 最后不加上换行符号
\f 换行但光标仍旧停留在本身的位置
\n 换行
\r 光标移至行首,但不换行
\t 制表符
\v 等同于\f
\ 插入\字符
–help 显示帮助
–version 显示版本信息
备注:STRING可以使用引号,单引号双引号均可用
单引号:强引用,变量不执行替换
[root@iZ25test ~]# echo ‘$SHELL’
$SHELL
双引号:弱引用,变量引用会被替换
[root@iZ25test ~]# echo “$SHELL”
/bin/bash
-
tty
作用:查看当前的终端设备语法: tty [OPTION]…
常用方法:[root@test ~]# tty
`/dev/pts/0`
`startx`
作用:用来启动X Window,实际上是启动X Window程序
常用方法:
startx:在服务器上启动x会话
startx -w:在服务器上强制启动x会话
-
export
作用:用于将shell变量输出为环境变量,或将shell函数输出为环境变量语法:BASH BUILTIN COMMANDS
常用方法:
-f:代表【变量名称】中为函数名称
-n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中】
-p:列出所有shell赋予程序的环境变量
-
pwd
显示当前工作目录print name of current/working directory
作用:以绝对路径的方式显示用户当前工作目录。语法: pwd [OPTION]..
常用方法:
–help:显示帮助信息
–version:显示版本信息
pwd命令用于显示当前工作目录,一般而言,涉及pwd,就会涉及到三个环境变量
PATH:执行文件路径的变量
OLDPWD:表示前一次的工作目录
PWD:表示当前的工作目录
-
history
作用:
用于显示指定数目的指令命令
读取历史命令文件中的目录到历史命令缓冲区
将历史命令缓冲区写入命令文件语法:BASH BUILTIN COMMANDS
常用方法:
-c:清空当前历史命令
-a:将历史命令缓冲区中命令写入历史命令文件中
-r:将历史命令文件中的命令读入当前历史命令缓冲区
-w:将当前历史命令缓冲区命令写入历史命令文件中
n:打印最近n条历史命令(n为数字)
-
shutdown
作用:
系统关机
关闭所有程序
按照用户需要重启或关机语法:shutdown [OPTION…] [TIME] [WALL…]
常用方法:
-c:取消关机
-f:重新启动时不执行fsck
-F:重新启动时执行fsck
-h:将系统关机
-k:送出信息给所有用户,但不会实际关机
-n:不调用init程序进行关机,而由shutdown自己控制
-r:重启系统
TIME:设置多久时间后执行shutdown指令
WALL:要传送给所有登入用户的信息
-
** poweroff**
作用:用来关闭计算机操作系统并且切断系统电源语法: poweroff [OPTION]…
常用方法:
-n:关闭操作系统时不执行sync操作
-w:不真正关闭操作系统
-d:关闭操作系统时,不将操作写入日志文件
-f:强制关闭系统
-i:关闭系统之前关闭所有的网络接口
-h:关闭操作系统之前将系统中所有的操作设置为备用模式
-
reboot
作用:用来重新启动正在进行的Linux操作系统语法:reboot [OPTION]…
常用方法:
-d:重新开机时不把数据写入数据文件/var/tmp/wtmp
-f:强制重新开机,不调用shutdown指令的功能
-i:在重开机之前,先关闭所有网络界面
-n:重开机之前不检查是否有未结束的程序
-w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件
-
hwclock
作用:是一个硬件时钟访问工具,它可以显示当前时间、设置硬件时钟的时间和设置硬件时钟为系统时间,也可以设置系统时间为硬件时钟的时间语法: hwclock [functions] [options]
常用方法:
–adjust:校正目前的硬件时钟
–debug:显示hwclock执行时详细的信息
–hctosys:将系统时钟调整与当前的硬件时钟一致
–set –date=<日期与时间>:设定硬件时钟
–show:显示硬件时钟的时间与日期
–systohc:将硬件始终调整为与当前的系统时钟一致
–test:测试程序
–utc:使用格林威治时间
–version:显示版本信息
-
date
作用:显示或设置系统时间与日期语法:date [OPTION]… [+FORMAT]
常用方法:
-d<“字符串”>:显示字符串所指的日期与时间
-s<“字符串”>:根据字符串设置的日期与时间
+FORMAT:格式符
%F:年月日
%T:小时分钟秒
%Y:年
%m:月
%d:日
%H:小时(24小时进制)
%S:秒
%s:秒(从1970-01-01 00:00:00 开始到命令执行那一刻的秒数 unix元年)
设定日期时间:date [MMDDhhmm[[CC]YY][.ss]]
Linux系统上获取命令的帮助信息
-
Linux的命令
Linux命令的执行必须依赖于Shell命令解释器。Shell实际上是在Linux系统中运行的一种特殊程序,它位于操作系统内核与用户之间进行交互。Linux的帮助有多种方式,通过命令的不同,帮助的查看方式也不尽相同。上面介绍了命令分别有外部命令和内部命令: -
内部命令和外部命令
内部命令:shell程序的一部分,其包含的往往是一些简单的linux系统命令。它们被shell程序识别并通过shell内部完成运行,通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在shell程序源码里面的,其执行速度通常比外部命令快。
外部命令:linux系统中能够完成特定功能的脚本文件或二进制文件,每个外部命令对应了系统中的一个文件。这些文件通常比较强大,包含的程序量也很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。外部命令的实体通常并不包含在shell中,但是其命令执行过程是由shell程序控制的。shell程序管理外部命令执行的路径查找、加载存放,并控制命令的执行。
命令帮助
-
内部命令: help 作用:用于显示shell内部命令的帮助信息
语法:help(选项)(参数)
选项:-s:输出短格式的帮助信息。仅包括命令格式
-
外部命令: 1)可以使用man手册获取帮助
man 作用:Linux下的帮助指令语法:man(选项)(参数)
选项:
-a:在所有的man帮助手册中搜索
-f:等同于whatis,显示给定关键字的简短描述信息
-P:指定内容时使用分页程序
-M:指定man手册搜索的路径
man作为命令手册,有章节之分,同一个关键字,在不同章节中有着不用的解释和使用帮助,如passwd在章节1中是介绍命令的使用方法,在章节5中则介绍passwd这个文件的帮助
man章节介绍:
man1:用户命令
man2:系统调用
man3:c库调用
man4:设备文件及特殊文件
man5:文件格式(配置文件格式)
man6:系统游戏使用帮助
man7:杂项
man8:管理工具及守护进程
man9:含糊的内核规范和接口
man使用方法快捷操作: 翻屏操作: 空格键:向文件尾部翻一屏
b:向文件首部翻一屏
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
回车键:向文件尾部翻一行
k:向文件首部翻一行
G:跳转至最后一行
数字G:跳转至指定行
1G:跳转至文件首部
文本搜索:
/keyword:从文件首部向文件尾部依次查找,不区分字符大小写
?keyword:从文件尾部向文件首部依次查找
n:与查找命令方向相同
N:与查找命令方向相反
Linux发行版的基础目录名称命名法则及功用规定
linux操作系统中的主要目录及目录内容,是由文件系统层次结构标准(Filesystem Hierarchy Standard,FHS)定义的,采用倒置树形结构,该标准由Linux基金会维护。在大多数情况下,它都是一个传统BSD文件系统层次结构的形式化与扩充。
-
文件名法则
对于我们自身所创建的文件及目录,则需要按照如下的法则
文件名使用法则:
严格区分字符大小写:file1 File1 FILE1 并不是一个文件
目录也是文件,
在同一路径下,两个文件不能同名
支持使用除”/“以外的任意字符;
最长不得超过255个字符 -
目录结构
Linux发行版的基础目录名称命名法则及功用规定
linux操作系统中的主要目录及目录内容,是由文件系统层次结构标准(Filesystem Hierarchy Standard,FHS)定义的,采用倒置树形结构,该标准由Linux基金会维护。在大多数情况下,它都是一个传统BSD文件系统层次结构的形式化与扩充。
下表中大部分目录都以相似的功能存在于所有的UNIX系统中。但是,以下的描述仅针对FHS,且对非Linux系统并非权威
目录/文件 | 用途 | 来源 |
---|---|---|
/ | /处于Linux文件系统树形结构的最顶端 它是Linux文件系统的入口 所有的目录、文件、设备都在/之下 |
|
/bin | 该目录存放着系统最常用的最重要的命令 是以独立的文件形式存在 这个目录中的文件都是可执行的并且是普通用户都可以使用的命令 作为系统最基础的命令都放在这里 |
binary |
/usr | 该目录是系统存放程序的地方 比如普通命令、帮助文件、安装的软件等 当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里 /usr目录下包括涉及字体目录/usr/share/fonts、帮助目录/usr/share/man或/usr/share/doc等 |
unix shared resource |
/var | 该目录的内容是经常变动的 /var下有/var/log目录用来存放系统日志的目录 /var/www目录用来定义Apache服务器站点存放目录 /var/lib用来存放一些库文件 |
variable |
/sbin | 大多数涉及系统管理的命令都存放在该目录中 它是超级权限用户root的可执行命令存放地 凡是目录sbin中包含的命令都是root权限才能执行的 |
super user binary |
/root | Linux超级权限用户(系统管理员)root的主目录 | |
/home | 普通用户的主目录都默认存放在该目录中 | |
/etc | 该目录是系统配置文件的所在地 一些服务器的配置文件也在这里 |
etcetera |
/dev | 设备文件存储目录 该目录下是所有Linux的外部设备文件 |
device |
/boot | 存放Linux的内核及引导系统的程序所需要的文件 | |
/opt | 该目录是可选的软件包安装目录 | optional |
/tmp | 该目录用于存放临时文件 | temporary |
/lib | 该目录用于存放库文件 这个目录里存放着系统最基本的共享库 |
library |
/mnt | 该目录是用于存放挂载储存设备的挂载目录的 | mount |
/proc | 操作系统运行时进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放处 /proc目录是伪装的文件系统proc的挂载目录 可以通过直接访问这个目录来获取系统信息 |
process |
网友评论