(一)计算机的基础认识
1. 冯诺依曼体系:
运算器(ALU Arithmetic Logical Unit):完成算数和逻辑运算。
控制器(CU Control Unit):发出各种控制信息,让计算机各部件协调工作。
存储器(Memory):记忆程序和数据的部件
输入设备(Inputdevice):将程序和数据输入的部件。
输入设备(Outputdevice):将数据和其他信息输出
上图表明,计算机内部5大部件共有两类信息流动,数据类(原始数据,中间结果,程序指令等);控制类用单线表示,两类都是用二进制0或1组成。数据输入到存储器要经过运算器,输出时有运算器输出到输出设备,前提是有控制器发送控制信号完成的。计算机工作时将存放在存储器上的程序逐条输出到控制器,控制器执行指令发送到控制信号到其他4个部件。
2.计算机的总线结构:
数据总线(DB):CPU与存储器,I/O接口设备之间传送数据信息(各种指令数据信息)的总线,双向传输。
地址总线(AB):CPU向存储器,I/O接口设备发出的地址信息,寻址能力CPU特有,因此单向传输。
控制总线(CB):CPU到存储器,I/O接口设备的控制信号,有存储器,I/O设备的应答,请求信号。
控制信号包括:时序信号,状态信号,命令信号(读写,繁忙,中断)等。
3.处理器架构(CPU所采用的指令系统)
CISC的英文全称为“Complex Instruction Set Computer”,即“复杂指令系统计算机”程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。主要有Intel,Amd系列
RISC的英文全称为“Reduced Instruction Set Computing”,中文即“精简指令集”,它的指令系统相对简单,它只要求硬件执行很有限且最常用的那部分执令,大部分复杂的操作则使用成熟的编译技术,由简单指令合成。目前在中高档服务器中普遍采用这一指令系统的CPU,特别是高档服务器全都采用RISC指令系统的CPU。在中高档服务器中采用RISC指令的CPU主要有Compaq(康柏,即新惠普)公司的Alpha、HP公司的PA-RISC、IBM公司的Power PC、MIPS公司的MIPS和SUN公司的Spare。
(二)操作系统的基础认识
1. linux操作系统
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。
用户进程:运行在linux系统内核(sh csh tcsh ksh bash zsh 等)之上,一个庞大软件集合。
系统调用:内核的出口,用户程序通过系统调用使用内核提供的功能或者更高级一点C库调用。
内核子系统:硬件驱动,进程管理,内存管理,网络管理,安全管理等
硬件:计算机硬件。
程序的运行模式:
用户空间:用户空间中的代码指令运行在较低的特权级别ring3上,只能看到允许它们使用的部分系统资源, 并且不能使用某些特定的系统功能,也不能直接访问内核空间和硬件设备,以及其他一些具体的使用限制
内核空间:Linux系统对自身进行了划分,一部分核心软件独立于普通应用程序,指令运行在较高的特权级别 上CPU ring0,它们驻留在被保护的内存空间上,拥有访问硬件设备的所有权限,Linux将此称为内核空间
运行程序格式ABI:
Windows: EXE, dll(dynamic link library)
Linux: ELF, so(shared object)
POSIX规范:Portable Operating System 只是规范了操作系统为应用级程序开发的API,没有规范程序的ABI,因此 Windows和Unix,Linux的应用程序编译成二进制后是不兼容的。
C程序运行过程:
加深linux源码安装过程的认识
预处理阶段(cpp):根据义字符#开头的命令,修改原始C程序,例如#include <stdio.h>,就是告诉于处理器读取系统头文件stdio.h,插入到程序文本,形成另一个C程序,通常是以.i结尾的扩展名。
编译阶段:编译器(ccl)将hello.i文件翻译成.s文件,它包含了一个汇编语言程序,加入了汇编代码。
汇编阶段:编译器(as)将.s文件翻译成机器语言指令,形成机器可读的二进制数据。
链接阶段:假如hello程序条用了printf函数,C库,由编译器提供,而printf函数存在一个名为printf.o的单独的预编译目标文件中,这个文件必须以某种方式并入到hello.o程序中,连接器(ld)负责这种并入,结果得到hello文件,他是一个可执行目标文件,加载到存储器上,系统负责执行。
2. linux操作系统不同发行版的区别和联系
其中Gentoo,Archlinux,LFS可定制性很强,充分发挥硬件性能,但配置比较复杂,有时间单独研究安装使用下再总结了。
3.linux的哲学思想
一切皆文件:对所有文件(目录、字符设备、块设备、 套接字、打印机等)操作,读写都可用 fopen()/fclose()/fwrite()/fread()等函数进行处理(VFS)。屏蔽了硬件的区别,所有设备都抽象成文件,提供统一的 口给用户。
由众多单一目的小程序组成:一个程序只实现一个功能,组合小程序完成复杂任务。
尽量避免跟用户交互:使用脚本编程,以自动完成某些功能。
使用纯文本文件保存配置信息:一款使用的文本编程器即能完成系统配置和软件配置工作。
(三)linux操作系统的FHS和基础命令
1.Filesystem Hierarchy Standard(文件系统目录标准)
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录;
/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序;
/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序;
/lib:基本共享库文件,以及内核模块文件(/lib/modules);
/lib64:专用于x86_64系统上的辅助共享库文件存放位置;
/etc:配置文件目录(纯文本文件);
/home/USERNAME:普通用户家目录;
/root:管理员的家目录;
/media:便携式移动设备挂载点;
/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相关的安全策略等信息的存储位置;
2.基础命令
格式 : Command 选项 参数
选项:长选项– 短选项- 参数:要处理的文件,有的命令可以有多个参数
命令帮助:
man COMMAND
手册页:/usr/share/man
man1 … man8
man1: 用户命令
man2: 系统调用
man3: C库调用
man4: 设备文件及特殊文件
man5: 配置文件格式
man6: 游戏
man7: 杂项
man8: 管理类的命令
注意:有些关键在不止一个章节中存在帮助手册;
要查看指定章节中的手册:man # COMMAND,1,5,8比较常用。
man命令的操作方法:
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:翻至文件尾部
ifconfig命令:已被废弃的命令,建议以后使用ip命令
查看所有网卡
查看网卡详细统计数据
临时给网卡配ip
禁用启用网卡
echo命令:
-e 允许转义符 -n 不允许自动添加换行符换行
转义符:反斜线 报警 退格键 ESC键 换页符 换行符 回车键 Tab键
pwd 命令:打印出当前工作目录(绝对路径)
export命令:查看和临时更改登录shell的环境变量
shutdown命令:
-r reboot -h halt -H halt -P poweroff -c清除shutdown相关任务 -k 警告,用户不能登录,不关机
date命令:
常用FORMAT
%Y YYYY格式的年份(Year)
%m mm格式的月份(),01-12
%d dd格式的日期(day of month),01-31
%H HH格式的小时数(),00-23
%M MM格式的分钟数(),00-59
%S SS格式的秒数(),00-59
%F YYYY-mm-dd格式的完整日期(Full date),同%Y-%m-%d
%T HH-MM-SS格式的时间(Time),同%H:%M:%S
%s 自1970年以来的秒数。C函数time(&t) 或者Java中 System.currentTimeMillis()/1000, new Date().getTime()/1000
%w 星期几,0-6,0表示星期天
%u 星期几,1-7,7表示星期天
注意以上格式是可以任意组合的,还可以包括非格式串,比如 date "+今天是%Y-%d-%m,现在是$H:%M:%S"
格式:date -d STRING
格式:date –date=STRING
格式:date -d STRING +FORMAT
显示用STRING指定的日期时间(display time described by STRING, not ‘now’)
格式:date -s STRING
格式:date –set=STRING,date [MMDDhhmm[[CC]YY][.ss]]:设置来设置系统时间
更多格式 man date 或 date –help
hwclock命令:
-r 显示硬件时钟 -s 同步硬件时钟到系统时间 -w 同步系统时间到硬件时间
history命令:~/.bash_history 为命令历史记录文件,不退出不记录,只会记录在缓存中
-a: 追加本次会话新执行的命令历史列表至历史文件中;-d: 删除历史中指定的命令;-c: 清空命令历史
!#: 调用历史中第#条命令;!string:调用历史中最近一个以string开头的命令;!!: 上一条命令
tty命令:查看当前登录终端 物理终端/dev/console 虚拟终端/dev/tty# 模拟终端/dev/ps/#
startx命令:读取/etc/X11/xorg.conf进入图形界面终端
原创文章,作者:Snoo,如若转载,请注明出处:http://www.178linux.com/21782
评论列表(1条)
写的很好,排版还可以在漂亮一点,加油