关键词:
虚拟文件系统、文件描述符、IO重定向
一切皆文件,进程隔离
操作系统宏观介绍
-
常用的IO设备有哪些? 磁盘、网卡
-
Linux 中物理盘是怎么映射到操作系统中的? Kernel 中VFS(Virtual File System)
-
在Linux中如果两个程序都去加载同一个文件,那么内存中会有几份?1份。文件在打开的时候会有一个inode id,程序在访问文件的时候VFS首先会判断当前文件有没有在pagecache中被加载过,没有的话触发缺页就会加载对应inode id 对应的源数据,然后再内存中开辟pagecache(默认4k) 给当前文件,后续的如果发现pagecache里面已经加载了就直接返回了。
-
延伸:
1:当多个程序操作同一个文件,其中一个程序修改了文件,对应pagecache的变化和什么时候会同步到磁盘? 1)首先会吧pagecache里面标记为dirty状态 2)然后会通过flush同步到磁盘(flush的方式取决于IO模型,OLD IO flush后并非直接刷新到磁盘,而是需要等待kernel调度, NIO 调用了flush 则是会直接调用kernel将数据刷新到磁盘) 2:程序最终是通过什么访问文件的? 1)fd (file descriptor) 文件描述符 2)指针seek (偏移量)对应文件的不同位置
虚拟文件系统
-
Linux 中如何查看kernel维护的目录树结构? df 命令
-
Linux 中swap 分区的作用? 当系统运行当前进程内存不足时会把暂时用不到的进程转移到swap 分区,然后把当前需要执行的进程资源放入内存。
-
Linux 中常见的文件类型有哪些?
-
-:普通文件 lsof 中TYPE 为REG
-
d:目录
-
b:块设备 延伸 : 如何创建块文件,使用dd 命令
dd if=/dev/zero of=mydisk.img bs=1048576 count=100
-
c:字符文件 lsof 中TYPE 为CHR
-
s:socket
-
p:pipeline
-
l:链接
ln #创建硬链接 ln -s #创建软链接延伸 软链接和硬链接区别? 共同点: 修改链接文件和源文件中任何一个互相都能看到修改后的内容。 不同点 硬链接类似java里面的多个引用指向一个对象,删除其中一个对另一个并没有影响。 软链接更像是windows 中应用的桌面快捷方式,如果删除源文件,则软链接就会报错,类似windows 中应用程序被删了,桌面快捷方式没有被清理,然后点击桌面快捷方式的情景。
-
文件描述符nodeid、脏读
Linux 中一切皆文件,进程对应的文件目录是哪里?
/proc
/proc/$$ #当前bash的目录
KaTeX parse error: Can't use function '$' in math mode at position 15: 当前bash的pid,它和$̲BASHPID 有什么区别? 的优先级高于管道,$BASHPID 则没有管道优先级高,所以下面两个命令执行的结果会不同
echo $$ | cat
echo $BASHPID | cat
-
Linux 中如何查看一个进程打开了多少文件?(查看所有的文件描述符)
lsof -op $$ #查看所有的文件描述符细节 /proc/$$/fd #查看所有的文件描述符
延伸:开发过程中如何查看8080端口被那个进程占用
lsof -i :8080
-
每个程序都会有标准输入输出吗?
是的,那么对应的文件描述符是什么? 0 标准输入,1标准输出,2标准错误输出 u 表示可以读写
当前进程的用到的文件描述符目录是什么?
cd /proc/$$/fd #查看所有的文件描述符 ls -al
-
如何查看一个文件的Inode 号
stat /test.txt
延伸命令,read 只会读到换行符
exec 8< test.txt read a 0<& 8
socket pipeline
-
如何查看进程使用pagecahe 的情况
pcstat -pid $$
-
如何查询当前脏页
cat /proc/vmstat | grep dirty #延伸,查询当前脏页的刷新时间 sysctl -a | grep dirty
-
Socket 文件怎么创建?
exec 8<> /dev/tcp/www.baidu.com/80 cd /proc/$$/fd ll lsof -op $$
-
重定向是什么?
重定向是一种机制,注意不是命令。< 输入重定向 > 输出重定向
ls . 1> ~/test/t.txt #将当前目录的文件列出,重定向输出到t.txt中 cat 0< text.txt 1> cat.out #将cat的输入,输出分别重定向 ls ./ /dddosl 1>04.txt 2>& 1 #文件描述符的时候一定是2>& 1 要带&,如果是文件名则不需要
io流学习笔记(代码片段)
文章目录IO流,什么是IOIO流的分类javaio的四大家族需要掌握的十六个流FileInputStream(从文件中读)往byte数组中读FileInputStream中一些其他的方法FileOutputStream的使用(往文件中写)文件拷贝FileReader(字符输入流使用方法)FileWriter(字符... 查看详情
repuest转发学习笔记一(代码片段)
学习图:Java代码importjava.io.IOException;importjava.io.InputStream;importjava.util.Properties;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletR 查看详情
http请求内容压缩学习笔记(代码片段)
importjava.io.ByteArrayOutputStream;importjava.io.IOException;importjava.io.PrintWriter;importjava.util.zip.GZIPOutputStream;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;i 查看详情
ios学习笔记--数据存储(代码片段)
iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3CoreData1.XML属性列表(plist)归档每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系... 查看详情
io学习笔记(代码片段)
虚拟文件系统、文件描述符、IO重定向一切皆文件,进程隔离操作系统宏观介绍常用的IO设备有哪些?磁盘、网卡Linux中物理盘是怎么映射到操作系统中的?Kernel中VFS(VirtualFileSystem)在Linux中如果两个程序都去加载同一个文件&... 查看详情
java学习笔记-io篇:对象流objectinputstreamobjectoutputstream(代码片段)
Java学习笔记-IO篇:对象流ObjectInputStream、ObjectOutputStreamObjectOutputStreamObjectInputStream序列化、反序列化序列化writeObject将对象写入磁盘文件反序列化readObject取出对象自定义Serializable对象writeObject、readObjectputFields、readFiel 查看详情
java学习笔记-io篇:对象流objectinputstreamobjectoutputstream(代码片段)
Java学习笔记-IO篇:对象流ObjectInputStream、ObjectOutputStreamObjectOutputStreamObjectInputStream序列化、反序列化序列化writeObject将对象写入磁盘文件反序列化readObject取出对象自定义Serializable对象writeObject、readObjectputFields、readFiel 查看详情
javaio学习笔记四:socket基础(代码片段)
作者:Grey原文地址:JavaIO学习笔记四:Socket基础准备两个Linux实例(安装好jdk1.8),我准备的两个实例的ip地址分别为:io1实例:192.168.205.138io2实例:192.168.205.149安装必要工具:yuminstall-ystracelsofpmaptcpdump准备服务端代码importjava.io.*;i... 查看详情
reactnative学习笔记(代码片段)
1、搭建开发环境英文文档:http://facebook.github.io/react-native/docs/getting-started.html中文文档:https://reactnative.cn/docs/0.51/getting-started.html所有的环境配置好后react-nativeinitmyProjectcdmyProjectreact-nativerun-ios开 查看详情
学习笔记之microsoftazure(代码片段)
World‘sMostPopularAPIFramework|Swaggerhttps://swagger.io/Swaggeristheworld’slargestframeworkofAPIdevelopertoolsfortheOpenAPISpecification(OAS),enablingdevelopmentacrosstheentireAPIlifecycle,from 查看详情
request应用-请求头学习笔记(代码片段)
request对象常用API1)取得请求头相关的信息*a)request.getHeader(String):Stringb)request.getHeaders(String):Enumerationc)getHeaderNames():Enumerationjava代码实现:importjava.io.IOException;importjava.io.PrintWriter;importja 查看详情
apue学习笔记1:unix文件io(代码片段)
前言本文总结APUE第三章:文件IO的知识点和对代码实践的总结。实践的系统api头文件:<fcntl.h>为了节省时间,仅简单记录函数的名字忽略原型,重点在于记下自己实践中的感悟。functioncreatopenclosereadwritelseekfcntl实践... 查看详情
apue学习笔记1:unix文件io(代码片段)
前言本文总结APUE第三章:文件IO的知识点和对代码实践的总结。实践的系统api头文件:<fcntl.h>为了节省时间,仅简单记录函数的名字忽略原型,重点在于记下自己实践中的感悟。functioncreatopenclosereadwritelseekfcntl实践... 查看详情
java学习笔记-io篇:读写文本文件txt(代码片段)
Java学习笔记-IO篇:读写文本文件txt读字符FileReader逐字读取BufferedReader逐行读取Scanner逐行读取StringReaderProperties读配置文件FileInputStream读UTF-8字符集读取整个文件到byte[]字节流转字符流Java7-Files读取整个文件到byte[]读取整个文件... 查看详情
java学习笔记-io篇:文件与目录(代码片段)
Java学习笔记-IO篇:文件与目录File介绍增删改递归删除Java7Files状态检测设置权限获取文件信息遍历目录FilenameFilter过滤FileFilter过滤参考资料File介绍File作为一个工具类,没有太多要学习的东西。把方法过一遍知道它能干啥... 查看详情
java学习笔记-io篇:文件与目录(代码片段)
Java学习笔记-IO篇:文件与目录File介绍增删改递归删除Java7Files状态检测设置权限获取文件信息遍历目录FilenameFilter过滤FileFilter过滤参考资料File介绍File作为一个工具类,没有太多要学习的东西。把方法过一遍知道它能干啥... 查看详情
pil(pillow)的学习笔记(代码片段)
1将图像的字节数组转换为Image对象image_bytes#图像字节码importiofromPILimportImageimg=Image.open(io.BytesIO(image_bytes))#io.BytesIO():转换为字节流 查看详情
重定向302与localhost学习笔记(代码片段)
1、新建工程:importjava.io.IOException;importjava.io.PrintWriter;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.htt 查看详情