存储网络:
1.DAS直接连接存储
2.NAS网络连接存储(NFS/SMB/CIFS)
3.SAN存储区域网络,通过IP,块存储
操作系统
用户态和内核态的概念:
当一个进程在执行用户自己的代码时处于用户运行态(用户态),此时特权级最低,为3级,是普通的用户进程运行的特权级,大部分用户直接面对的程序都是运行在用户态。Ring3状态不能访问Ring0的地址空间,包括代码和数据;当一个进程因为系统调用陷入内核代码中执行时处于内核运行态(内核态),此时特权级最高,为0级。执行的内核代码会使用当前进程的内核栈,每个进程都有自己的内核栈。
用户运行一个程序,该程序创建的进程开始时运行自己的代码,处于用户态。如果要执行文件操作、网络数据发送等操作必须通过write、send等系统调用,这些系统调用会调用内核的代码。进程会切换到Ring0,然后进入3G-4G中的内核地址空间去执行内核代码来完成相应的操作。内核态的进程执行完后又会切换到Ring3,回到用户态。这样,用户态的程序就不能随意操作内核地址空间,具有一定的安全保护作用。这说的保护模式是指通过内存页表操作等机制,保证进程间的地址空间不会互相冲突,一个进程的操作不会修改另一个进程地址空间中的数据。
用户态和内核态的切换
当在系统中执行一个程序时,大部分时间是运行在用户态下的,在其需要操作系统帮助完成一些用户态自己没有特权和能力完成的操作时就会切换到内核态。
用户态切换到内核态的3种方式
(1)系统调用
这是用户态进程主动要求切换到内核态的一种方式。用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作。例如fork()就是执行了一个创建新进程的系统调用。系统调用的机制和新是使用了操作系统为用户特别开放的一个中断来实现,如Linux的int 80h中断。
(2)异常
当cpu在执行运行在用户态下的程序时,发生了一些没有预知的异常,这时会触发由当前运行进程切换到处理此异常的内核相关进程中,也就是切换到了内核态,如缺页异常。
(3)外围设备的中断
当外围设备完成用户请求的操作后,会向CPU发出相应的中断信号,这时CPU会暂停执行下一条即将要执行的指令而转到与中断信号对应的处理程序去执行,如果前面执行的指令时用户态下的程序,那么转换的过程自然就会是 由用户态到内核态的切换。如硬盘读写操作完成,系统会切换到硬盘读写的中断处理程序中执行后边的操作等。
这三种方式是系统在运行时由用户态切换到内核态的最主要方式,其中系统调用可以认为是用户进程主动发起的,异常和外围设备中断则是被动的。从触发方式上看,切换方式都不一样,但从最终实际完成由用户态到内核态的切换操作来看,步骤有事一样的,都相当于执行了一个中断响应的过程。系统调用实际上最终是中断机制实现的,而异常和中断的处理机制基本一致。
用户态到内核态具体的切换步骤:
(1)从当前进程的描述符中提取其内核栈的ss0及esp0信息。
(2)使用ss0和esp0指向的内核栈将当前进程的cs,eip,eflags,ss,esp信息保存起来,这个过程也完成了由用户栈到内核栈的切换过程,同时保存了被暂停执行的程序的下一条指令。
(3)将先前由中断向量检索得到的中断处理程序的cs,eip信息装入相应的寄存器,开始执行中断处理程序,这时就转到了内核态的程序执行了。
简述/bin, /etc, /proc, /usr, /home所存储的文件作用。
\bin:命令所对应的可执行文件
\etc:系统配置文件
\proc:虚拟目录,内存的映射(以进程为单位)
\usr:资源目录 系统安装软件所需要的软件、库、文档、资源
\home:所有普通用户的家目录
\dev:所有的设备文件
\lib:系统使用的库文件
在命令前加time 可查看命令执行时间
uname -r
开源协议
命令
free -h,查看内存
切换图形
runlevel 查看当前模型
init -[3:符号,5:图形,6:重启,0:关机] 临时切换到终端模式ctrl+F2
tty 查看在哪个终端
chvt 2 切换到指定终端
pty 伪终端
关机:halt(关机不断电),poweroff,shutdown
statrx 切换模式不需要登录,相当于开启软件
xclock 开启时钟
Linux 显示系统主机名的命令是?
uname
-a或–all 显示全部的信息。
-m或–machine 显示电脑类型。
-n或-nodename 显示在网络上的主机名称。
-r或–release 显示操作系统的发行编号。
-s或–sysname 显示操作系统名称。
-v 显示操作系统的版本。
–help 显示帮助。
–version 显示版本信息。
cat /etc/centos-release
who 可以查询当前登录在系统上的登录用户的信息
who am i 等同于 who -m,只打印执行该命令的登录用户的信息
whoami 可以查询当前有效用户的名字
nmcli connection modify ens33 connection.autoconnect yes 开机自动联网
uid 用户id号
终端为#,管理员,id号为0
id -u 查看用户ID号
echo $SHELL 查看再用哪种命令解释器
>文件名 创建空的文件
exit , logout 退出终端重新打开
hostname 显示主机名
echo $PS1 显示变量
PS1=xxxxx 按格式可修改模式
设置自动登录账号
nano /etc/gdm/cumston.conf
设置登录后显示信息
cat /etc/motd
在里面编辑想显示的信息
shell执行命令过程
type -a(全部) 命令 查看命令类型 外部命令存放在文件中
查看文件位置信息
which
whereis 查看信息更详尽
执行外部命令
hits 标识被使用的次数
别名alias:临时
alias 别名 = 命令所在文件
永久别名 .bsharc 加
unalias 别名 临时删除别名
使文件生效
source 文件名
或 . 文件名
命令执行寻找顺序
sleep n 休眠n秒
同时执行命令 cmd;cmd;cmd;…
linux时钟
date系统时钟,有linux内核通过cpu工作频率
clock硬件时间:主板
设置时间 date MMDDHHmmYYYY.ss
同步时间 读取系统时间clock -w 读取硬件时间clock -s
查看时区 /etc/localtime
日历 cal MM -y或YYYY 默认为当月
远程桌面(需要安装)
ps aux 查看运行的进程
df 查看挂载的设备
echo
“xxx” 弱引用
‘xxx’ 强引用,相当于字符串
`xxx` 反向单引号,会执行内命令
-n 不自动换行
-E 就不翻译
-e “\xxx”
十六进制查看文件
hexdump -C filename
(原进制)ibase=16;(解进制)obase=2;xxx
man ascii
unicode编码
iconv -f gb2312 w.txt -o 1.txt 使windows文件在linux打开
shell编程
history 查看历史命令
!xxx 调用xxx条命令
HISTSIZE 历史记录条
中文man需要安装man-pages-zh-CN
修改登录前信息
ntpdate ip 与对方用户同步时间