1.计算机的组成及其功能:
从1946年第一台通用计算机ENIAC诞生至今,几乎所有的计算机系统都是建立在冯诺依曼体系结构上的。那么何为冯诺依曼体系结构?
冯诺依曼体系结构:
控制器:是整个计算机的中枢,负责计算机的整体调度工作,将指令从存储器中取出,并对指令进行解释执行。
运算器:对数据进行加工,完成算术运算,逻辑运算。
存储器:基于二进制格式对指令和数据进行存储。
输入设备:提供数据给存储器,如:硬盘,鼠标,键盘等。
输出设备:输出数据处理后的结果,展示给用户,如:显示器,打印机等。
补充知识点:
1.通常我们所说的CPU是由控制器,运算器,寄存器,缓存组成,核心是控制器和运算器。
2.内存是以8 bits为单位来存储数据的,对于32位CPU,总共能寻址2的32次方个以8 bits为单位的内存,因此32位CPU最大支持4GB内存,计算过程如下:
8 bits * 2^32 = 1KB * 2^10 * 2^10 * 2^10 * 4 = 4GB
2.Linux发展史:
1969年,Ken Thompson 利用汇编语言开发了FIle Server System(Unics,即Unix的原型)。
1973年,Dennis Ritchie和Ken Thompson发明C语言,并通过C语言重写了Unix的内核。
1977年,Berkeley大学的Bill Joy针对他的机器修改Unix源码,称为BSD(Berkeley Software Distribution)
1985年,Richard Stallman创立GNU组织(GNU is Not Unix),旨在创建一套完全自由的操作系统。
1991年,Linus Torvalids基于Minix开发了Linux内核,并在之后通过整合各种GNU组件形成了如今我们通常所说的Linux系统即:Linux内核+GNU应用程序。
Linux发行版三大分支:
发行版由个人,松散组织的团队,以及商业机构和志愿者组织编写。一个典型的Linux发行版包括:Linux内核,一些GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,并包含数千种从办公套件,编译器,文本编辑器到科学工具的应用软件。目前Linux发行版主要有三大分支:
a.Redhat
目前最著名的Linux发行版,包括RHEL(Redhat Enterprise Linux,收费版本),FedoraCore(由原来的Redhat桌面版本发展而来,免费版本),Centos(Community ENTerprise Operating System,免费版本)由RHEL的源代码编译而成。
b.Debian
主要包括Debian和Ubuntu等。Debian是社区类Linux的典范,是迄今为止最遵循GNU规范的Linux系统。Debian最具特色的是apt-get/dpkg包管理方式,Redhat的YUM也是在模仿Debian的APT方式,但是在二进制文件发行方式中,APT应该是最好的。其后的Linux Mint也是在Ubuntu的基础上开发而来,是一款专门为PC和X86电脑设计的操作系统。
c.Slackware
Slackware体系中,最著名的莫过于德国公司开发的SuSE发行版系统,主要包括:SLES(SuSE Linux Enterprise,企业版)和社区版open suse。
发行版之间的联系:
-
各发行版本采用Linux的内核(kernel)
-
各发行版本遵循GPL版权协定
-
各发行版本遵循Linux Standard Base(LSB)等标准来开发
-
各发行版均遵循FHS(File system Hierarchy Standard)标准规范
发行版之间的区别:
各发行版的包管理系统不同,如:Ubuntu的apt-get,红帽的yum,Gentoo的源码编译。
3.Linux哲学:
-
一切皆文件,不仅普通的文件,目录、字符设备、块设备、套接字等在Unix/Linux中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面。
-
避免令人困惑的用户界面,所有的操作均可以通过简洁的命令行实现排错,修改系统的配置,一切都是简洁明了为基础。
-
配置文件保存在文本文件中,无论什么配置修改都只需修改其配置文件即可,配置文件时文本形式的只需任意一款文本编辑器修改即可而不是类似于windows那样将保存在注册表中,并且windows的注册表需要专门的二进制或十六进制的编辑器才可编辑,修改比较复杂。
4.Linux上命令的使用规则:
命令的通用语法:COMMAND OPTIONS ARGUMENTS
a.COMMAND:
命令在本质上是一个可执行的二进制格式文件,发起命令的过程其实就是请求内核将某个二进制程序运行为一个进程在内存中。程序是静态的,而进程是动态的。
多数程序文件存放在:/bin,/sbin,/usr/bin,/usr/sbin,/usr/local/bin,/usr/local/sbin
普通命令:/bin,/usr/bin,/usr/local/bin
管理命令:/sbin,/usr/sbin,/usr/local/sbin
共享库文件存放在:/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib,/usr/local/lib64
32位库文件:/lib,/usr/lib,/usr/local/lib
64位库文件:/lib,/lib64,/usr/lib,/usr/lib64,/usr/local/lib,/usr/local/lib64
额外知识点:
1.并非所有的命令都有一个在某目录与之对应的可执行程序文件,如ls是有,但是cd并没有。其原因在于ls是外部命令,而cd是shell内置的命令。可以通过type命令去区分。
2.为什么输入在任何地方ls就可以直接调用/bin/ls,其原因在于linux中定义的PATH环境变量,当键入一个命令后,shell会自动在PATH定义的各个目录自左而右去寻找同名的命令程序,并执行。
b.OPTIONS:
指定命令的运行特性,选项有两种表现形式:
短选项:-C,-l,如果同一个命令使用多个短选项,多数可合并
长选项:–word,–color,长选项不能合并
注意:有些选项可以带参数,此称为选项参数。
c.ARGUMENTS:
命令的作用对象
注意:不同的命令带的参数不同,有些命令可以带多个参数,参数之间用空格区分。
常用命令举例:
ifconfig:
作用:查看当前系统中所有激活的网卡的状态,如IP地址,MAC地址,流量等。
语法:ifconfig [interface]
示例:ifconfig eth0
echo:
作用:回显,打印字符串
语法:echo [SHORT-OPTION]… [STRING]…
示例:echo -e hello mageedu
补充:
-n:默认情况下echo是会自动换行的,使用-n输出内容将不换行
-e:让转义字符生效,如:\n,\t等
tty:
作用:查看终端设备
语法:tty [OPTION]…
示例:tty
startx:
作用:启动图形化界面
语法:直接在命令行键入,使用init 5亦可启动图形化界面
示例:startx
export:
作用:显示或者设置环境变量
语法:export 变量=值
示例:export test=mageedu
pwd:
作用:显示当前工作目录(print working directory)
语法:直接在命令行键入
示例:pwd
history:
作用:查看当前shell所保存的历史命令
语法:直接在命令行键入
示例:history
补充:
-c:清空历史命令
-d:删除指定的命令记录
-a:将当前内存的命令历史追加到文件中
-w:将历史列表中的命令追加至文件中
-r:从文件到内存
shutdown:
作用:关机命令
用法:shutdown [OPTION]… TIME [MESSAGE]
示例:shudown -h now //立刻关机
poweroff:
作用:关机命令
用法:poweroff [OPTION]…
示例:poweroff
reboot:
作用:重启主机
用法:reboot [OPTION]…
示例:reboot
hwclock:
作用:显示或设置系统硬件时钟
用法:hwclock [functions] [options]
示例:
hwclock -s, –hctosys 以硬件为准
hwclock -w, –systohc 以系统为准
date:
作用:显示或设置系统时间
用法:date [OPTION]… [+FORMAT]
示例:
date +%Y%m%d%H%M%S
说明:%Y年,%m月,%d日,%H时,%M分,%S秒
date +%s
说明:从1970年1月1日0点0分0秒到当前时间的秒数,unix元年
date [MMDDhhmm[[CC]YY][.ss]]
说明:设置系统时间
5.如何获取命令帮助:
获取命令的使用帮助:
内部命令:help COMMAND
外部命令:
1.命令自带简要格式的使用帮助
#COMMAND –help
2.使用手册:manual 在/usr/share/man
man1:普通用户命令(普通用户和管理员用户都可以调用)
man2:系统调用命令
man3:C库调用:
man4:设备文件及特殊文件
man5:文件格式(配置文件格式)
man6:游戏使用帮助
man7:杂项
man8:管理工具及守护进程
6.FHS:
FHS是Linux规定的文件系统规则,发行版都要遵循:
/bin:供所有用户使用的基本命令程序文件
/sbin:供系统管理员使用的工具程序
/boot:内核及内核引导程序文件
/dev:特殊文件或设备文件
设备文件:
字符设备:显示器 //线性设备,有时序
块设备:硬盘(4k,32k),内存 //随机设备
/etc:存放主机的配置文件,只能为静态的,不能为二进制文件
/home:普通用户的家目录的集中位置
/lib:为系统启动/bin,/sbin中的应用程序提供基本共享库为内核提供内核模块
/lib64:64位系统的库文件
*.so:动态链接C库
ld*:执行时链接器
modules:存储内核模块
/mnt:其他文件系统的临时挂载点(没有严格要求,可随便挂)
/media:对便携性设备提供挂载位置,光盘,U盘
/opt:附加程序(第三方应用程序oracle)的安装位置
/root:管理员用户的家目录
/srv:当前主机为服务提供的数据,几乎用不到
/tmp:存储临时文件的目录,可供所有用户执行写入操作
/usr:层级目录,全局共享的只读程序路径
/usr/bin:用户命令
/usr/share:命令自带文档
/usr/include:C程序的头文件
/usr/lib:库文件
/usr/local:层级目录,第三方程序的安装目录
/var:层级目录,存储常发生变化的数据的目录
/proc:内核和进程信息的虚拟文件系统,多为内核参数,如:/proc/sys/net/ipv4/ip_forward
/sys:基于内存的文件系统,关机后就没了,与/proc类似,为管理linux设备提供了一种统一模型接口
原创文章,作者:N24_总考十分,如若转载,请注明出处:http://www.178linux.com/54460
评论列表(1条)
内容格式把握得很好,希望可以将这段发展史和几个关键性时间点熟知,加油!