CPU的核心设备:运算器、控制器、寄存器。(实现加法器)
-
南桥(south bridge):低速总线控制器,早期用来连接大量I/O设备、硬盘、键盘鼠标、显示器
北桥(north bridge):高速总线控制器,实现高频率、大数据传输,快速实现数据交换;早期用来连接内存。现在北桥连接南桥直接实现控制
-
缓存:CPU <-- 一级缓存 <-- 二级缓存 <-- 内存(快 <-- 慢)
缓存工作的基本前提:程序的局部性原理(时间局部性、空间局部性)
a.时间局部性:刚访问过的数据短时间内会再次被访问。
b.空间局部性:离刚访问过的数据非常近的数据会被马*问到。(将所需访问的数据全部调入内存等待访问)
-
程序的移植:
(Why:底层芯片工作机制不同,程序需要依赖芯片来运行)--芯片运算程序时以二进制数进行(机器语言);不可移植
--> 为加速程序员的开发速度,芯片支持微码编程(汇编语言),利用编译器进行转换,转换结果为机器语言;不可移植
--> (Because:汇编语言与芯片的结合程度非常紧密--低级语言)产生高级语言;可移植
API:应用编程接口(Application Program Interface)。利用API中间层实现程序移植。
-
CPU芯片的不同系列:硬件架构
ARM、x86、x64、安腾、alpha、UltraSparc、Power、M68000(M68k)、PowerPC
-
操作系统(OS):负责管理硬件资源
Windows、Linux、Unix(HP-UX、Solaris、AIX、SCO UNIX、Unixware)、os/2
-
批处理系统:jobs1$$$$jobs2(每次执行一个作业,结束后自动执行下一个作业)
多任务(CPU--分片slice:5ms、5ms;Memory--分段1,2--虚拟地址空间)
进程(process)
-
库:程序(无程序入口,只提供调用接口,被程序调用执行)
system call:系统调用 library call:库调用
【程序 <--> 内核 <--> 硬件】【硬件--OS--库--应用】
-
shell:人(回车)机交互接口(shell本身就是一个命令行接口)
GUI:Graphic User Interface图形用户界面
Windows、X-Window(Gnome-C、KDE-C++、XFace)
CLI:Command Line Interface命令行接口
sh、bash、csh、zsh、ksh、tcsh
-
GNU运动 --> GPL:General Public License宣言 -- *使用
--> LGPL:Lesser --> GPLv2/GPLv3
Emacs:文本编辑器
gcc:GNU C Complier
ABI:Application Binary Interface应用二进制接口
Debian:dpt RedHat:rpm
-
Linux的基本原则:
由目的单一的小程序组成,组合小程序完成复杂任务;
一切皆文件;
尽量避免捕获用户接口(无需用户输入);
配置文件保存为存文本格式;
-
命令提示符(prompt):bash(shell)
#:root $:普通用户
命令格式:命令 选项 参数(# command options... arguments...)
选项(短选项:-character多个选项可以组合 / 长选项:--word多个选项不能组合 )
参数(命令的作用对象)
magic number:魔数标示二进制程序的执行格式(Windows和Linux是不一样的)
#!/bin/bash
-
使用凭证:login + passwd (Linux严格区分大小写)
login:用户名:用户ID
认证机制:Authentication鉴别用户所有者(密钥)
授权:Authorization
审计:Audition监督被授权者(日志)
-
虚拟终端(terminal):
Ctrl+Alt+F(2-6)增加新用户登录、
Ctrl+Alt+F1返回原用户、
Ctrl+Alt+F7图形界面(未必适合所有笔记本,跟键盘格式有关)
模拟终端:图形界面打开的终端
-
切换用户:su(switch user)
# su [-l] 用户名 (不加-l是半切换,加-l是完全切换)
# exit (退回原来用户)
修改当前用户密码:passwd(pass word)
# passwd (密码复杂性规则)
-
常用命令:
# ls [参数] (list 列出指定路径下的文件)
-l(--long):长格式
文件类型:
-:普通文件(f)
d:目录文件
b:块设备文件(block)
c:字符设备文件(character)
l:符号链接文件(symbolic link file)
p:管道文件(pipe)
s:套接字文件(socket)
文件权限:9位,每3位一组,每一组:rwx(读,写,执行)
文件硬链接的次数
文件的属主(owner)
文件的属组(group)
文件大小(size):默认单位是字节
时间戳(timestamp):最近一次被修改的时间(月 日 年)
访问:access
修改:modify改变内容
改变:change,metadata(元数据)改变属性
文件名
-h:做单位转换
-a:显示以.开头的隐藏文件(-A:显示所有隐藏文件,不包括.和..)
. 表示当前目录
.. 表示当前目录的上一级目录(父目录)
-d:显示目录自身属性
-i:显示inode节点(index node)
-r:逆序显示文件(-R:递归recursive显示递归消耗资源)
# pwd (Printing Working directory 列出当前所在目录)
# cd [参数] (change directory 切换目录)
空/~:回到用户家目录
~ USERNAME:进入指定用户家目录
-:在当前目录和前一次所在目录之间来回切换
..:切换到上级目录
# type (显示指定命令属于哪种类型)
命令类型:
内置命令(shell builtin),内部,�冉�
外部命令:在文件系统的某个路径下有一个与命令名称相应的可执行文件
获得命令的使用帮助:
内部命令:help COMMAND 外部命令:COMMAND --help
命令手册:manual
# man [代码] COMMAND
man命令的可用帮助文档分类 代码 | 代表内容 1 | 普通的命令 | (/bin,/usr/bin,/usr/local/bin) 2 | 内核调用的函数与工具 3 | 常见的函数与函数库 4 | 特殊文件(设备文件的说明) 5 | 文件格式(配置文件的语法) 6 | 游戏 7 | 惯例与协议 8 | 管理员可用的命令 |(/sbin,/usr/sbin,/usr/local/sbin) 9 | 内核相关的文件 |
帮助文档的目录结构 NAME:命令名称及功能简要说明 SYNOPSYS:用法说明,包括可用的选项 DESCRIPTION:命令功能的详尽说明,包括每个选项的意义 EXAMPLES:使用事例(附带简单说明) OVERVIEW:概述 DEFAULTS:默认的功能 OPTIONS:说明每个选项的意义 ENVIRONMENT:环境变量 FILES:用到的文件 SEE ALSO:相关的资料 HISTORY:维护历史与联系方式 |
在线文档: # info COMMAND (更详细)
环境变量:命名的内存空间
PATH:使用冒号分隔的路径(外部命令使用时的查找路径)
# date (时间管理)
# clock (显示硬件时间)
# hwclock [参数] (读取、修改时间)
-r:读取时间
-w:将系统时间改为硬件时间
-s:将硬件时间改为系统时间
# cal [参数] (获取完整日历calander)
# echo "****" (默认有换行符,加-e时\n起作用)
# printf "****" (默认没有换行符,\n直接起作用)