io

内存区域:
kernel
VFS树
fd
inode id
pagecache 4k
dirty 脏
flush

文件类型
-普通文件(可执行,图片、文件)
d:目录
l:连接文件
b:块设备
c:字符设备
s:socket文件
p:pipeline
eventpoll

stata查看文件属性


dd if=/dev/zero of=msb.img  bs=1048576 count=100  产生一个空的磁盘镜像
*if=输入文件
of=输出文件

dd if=/dev/sda1 of=~/sdf.img  备份文件
dd if=/dev/sda1 of=/dev/sdb2分区对拷贝
dd if=~/sdf.img of=/dev/sda1 恢复文件


把msb.img当做一个设备挂载

环回设备的挂载
losetup  /dev/loop0 msb.img
格式化磁盘分区
mke2fs /dev/loop0 
挂载分区 
mount -t ext2 /dev/loop0 /mnt

查看命令的动态链接库有哪些
ldd bash
把根目录切到当前目录,并且启动bash程序
chroot ./

查看当前进程号
echo $$

进程打开了哪些文件
lsof -op $$
FD:文件描述符
txt:文本域
mem:分配的内存空间
ou、1u、2u:标准输入输出错误描述符
REG:基本文件
CHR:字符文件
DEVICE:设备
offset:偏移量

记录文件描述符打开一个文件(用文件描述符8读取文件ooxx.txt)
ecec 8 < ooxx.txt
cd /proc/$$
lsof -op $$
文件描述符:
8r:读取文件
8u:读取都可以
8w:写文件

可以看见偏移量指针(用变量a读取8号文件描述符)
read a  0<& 8

pcstat  pagecache的状态
cat /proc/vmstat |grpe dirty查看脏读

方法
exec 9> blba.txt
ll /proc/$$/fd
查看到文件描述符9的进程id号
lsof -op $$ 当前进程就指向这个进程,就可以查看当前进程打开的文件
pcstat -pid 进程号

sysctl -a |grep dirty查看系统环境变量

查看socket文件
exec 8<> /dev/tcp/www.biadu.com/80
lsof -op $$

/proc映射内核的一些变量和属性,开机之后才会有文件存在,进程被内核管理,被映射程文件
$$当前bash的pid    $BASHPID
/proc/$$/fd  当前进程下所有的进程描述符    
lsof -op $$ 当前进程下所有的进程描述符的所有细节

cd /proc/$$当前进程下也有很多描述文件
ns :命名空间
fd:
task:进程数量
重定向功能,重定向不是命令,是一个机制(可以让io指向其他地方)
输入 <
输入 >
cat 0< xxoo.out 1> cat.out
read a
echo $a 刚才输入的东西

read a 0< cat.out
echo $a  变量里只有文件的第一行内容

ls ./ /ooxx.tx 1> ls01.out 2>ls02.out
ls ./ /ooxx.txt 1> ls03.out 2>ls03.out   重定向描述符会覆盖文件
ls ./ /ooxx.txt 2>& 1 1> lso4.out  1还没有指向文件,2指向了1还没有指向屏幕 2指向了1这个文件的位置
ls ./ /ooxx.txt 1>lso4.out 2>& 1  既有报错也有正常显示

重定向描述符左边一般是文件描述符1或2或0 右边一般是文件
如果右边要放文件描述符一般必须跟 >&

管道  |
head -1 text
tail -1 text
head -8  text| tail -1显示中间的第8行

父子进程
进程有父子关系
echo $$
/bin/bash

两个命令都可以看父子关系
pstree
ps -fe |grep 4398

x=100
echo $x
/bin/bash  子进程
echo $x        进程隔离取不出来值

export x   导入环境变量
echo $x   就可以取到值

/etc/profile
会有导入环境变量

指令块
{ echo "111"; echo "1111";}代码块,在同一进程执行

a=1
echo $$
{ a=9; echo "sfdsf"; } |cat
echo $a
管道启用两个子进程

echo $$
echo $$ | cat     bash没有先看到管道,而是先看到两个$$,先把进程替换过来,然后看到了管道,然后输出的是字符串
echo $BAHSPTH | cat  先看到管道 后看到启动的进程
$BASHPAHT 低于管道级别
$$高于管道级别

{ echo $BASHPID; read x; } | { cat; echo $BASHPID; read y; }

pagecache页缓存,kernel的这种方法

int 0x80
cpu的指令
0x80:128
1000 0000

寄存器
中断描述符表
0-128call back方法-255
保护现场,切换用户态和内核态

DMA协处理器
 

你可能感兴趣的:(io)