首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果不使用零拷贝技术,普通的IO操作在OS层面是如何执行的

提前说明有些操作系统的相关概念自行百度,但是个人认为,很多面试官可能对于操作系统也懂的不多,当然不排除一些真正的大佬,往往面试的面试官也就那样,废话不多说,开始讲解普通IO的底层原理 早期的数据IO,由用户进程向...CPU发起,应用程序与磁盘之间的 I/O 操作都是通过 CPU 的中断完成的,如下图 用户发起读取数据请求到CPU....,然后系统调用返回 我们再看一张图如下 从这种图中,我清晰可以看到由于CPU把数据从磁盘读取到寄存器中,然后放入到内存,中间CPU是不能干其他事情的,为了解放cpu的占用,所以出现了DMA技术...DMA技术 DMA 的全称叫直接内存存取(Direct Memory Access),是一种允许外围设备(硬件子系统)直接访问系统主内存的机制,之后数据的拷贝都有DMA进行处理,如下图 CPU把IO请求发送给...,整体流程如下 用户进程调用read进行第一次用户态到内核态的切换 磁盘收到请求,DMA会把磁盘缓冲区的数据拷贝到内存缓冲区完成第一次拷贝DMA拷贝 然后进行第二次内核态用户态的转换 把内核缓冲区的数据

17340

在 Linux 上查找和删除损坏的符号链接

符号链接(symbolic link)在 Linux 系统上扮演了非常有用的角色。...通常称它们为“符号链接”或“软链接”,符号链接是非常小的文件。实际上,符号链接真正包含的是它指向的文件的名称,通常包含路径(相对于当前位置或绝对路径)。...另一方面,如果删除符号链接,你将删除该链接,而不是引用的文件。再说一次,Linux 知道怎么做。符号链接使得使用和共享文件更加容易,仅此而已。...如果你尝试使用指向一个不存在的文件的符号链接,那么将出现如下错误: $ tail whassup tail: cannot open 'whassup' for reading: No such file...实际上,如果需要,你可以使用一条命令查找并删除损坏的符号链接,如: $ find .

2.6K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如果不使用零拷贝技术,普通的IO操作在OS层面是如何执行的(二)

    零拷贝常用技术 上一次我们说了传统的IO操作是如何是实现的,最后引出了零拷贝技术,这次我们看看有那些零开拷贝技术....(如果不使用零拷贝技术,普通的IO操作在OS层面是如何执行的) mmap+write sendfile+DMA gather copy splice mmap+write零拷贝技术 mmap+write...拷贝技术替换了传统的read+write技术,减少了一次CPU拷贝,mmap实际上Linux提供的一种内存映射技术,他把用户进程的一段虚拟地址映射到磁盘文件的地址....,减少两者之间的CPU拷贝 上图表示,整体上经历了两次切换,和两次DMA拷贝,0次cpu拷贝 我们常用的组件kafka就是用的sendfile+DMA gather copy技术,而我们的RocketMq...使用的是mmap+write技术等等

    21940

    Linux上的程序是怎样运行的

    具体来说:如果value是simple,则直接调用execute_simple_command函数进行执行,execute_simple_command再根据命令是内部命令或磁盘外部命令分别调用execute_builtin...如果value是其他类型,则调用对应类型的函数进行分支控制。举例来说,如果是value是for_commmand,即这是一个for循环控制结构命令,则调用execute_for_command函数。...如果这些检查之一成功,我们将设置二进制参数文件名: bprm->file = file; if (fd == AT_FDCWD || filename->name[0] == '/') { bprm...从磁盘上读取与我们的可执行二进制文件链接的程序解释器和库,并将其加载到内存中。 elf_phdata = load_elf_phdrs(&loc->elf_ex, bprm->file); if (!...elf_phdata) goto out; 程序解释器指定在可执行文件的.interp部分(在大多数情况下,对于x86_64,链接器为– /lib64/ld-linux-x86-64.so.2

    3.4K30

    Linux创建软连接是红色的_ln命令建立软链接

    ln 为某一个文件在另外一个位置建立一个同不的链接,这样操作之后就不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下用ln命令链接它就可以,不必重复的占用磁盘空间...使用-s参数它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间 不使用-s参数, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还 是硬链接,文件都保持同步变化。...,因为所有路径链接到的文件是同一份。...在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。...软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。

    6K10

    可能是 Mac OS 上最好用的浏览器: Arc 浏览器

    由于 Arc 浏览器是基于 Chrome 改造而来,虽然有很多特色,但是多少还有一些似曾相识的感觉,而且基于 Chrome 内核改造而来,品质有保障, Chrome 插件都可以用。...2.2 支持多工作区,可以轻松切换 Arc 浏览器可以创建多个空间,比如一个工作空间,一个 AI 空间,一个知识空间,和 Mac OS 上的多桌面设计理念有些类似。...如果的确是非常重要的任务,想在工作空间中处理,可以通过 Commnad+ O或者右上角手动在对应的空间中打开。 2.4 支持分屏!...如果开启 5-Second Previews ,当你按下 Shift 然后在超链接上 Hover 超过 5 秒,Arc 会自动总结链接对应页面的内容。...舒适区”而感到“不适”,甚至有想退回去,觉得 Arc "难用"错觉,如果你喜欢这些特色,坚持用很短的时间就会喜欢上它,并享受它给你带来的全新使用体验。

    5.1K10

    winscp链接linux网络错误被决绝,解决了winscp连接不上的问题

    大家好,又见面了,我是你们的朋友全栈君。 在windows系统和虚拟机装的linux上互传文件时,可以用winscp。第一次用winscp时,老是连接不到linux上。...还以为是端口22被什么进程占用。 我的是windows 2003的,虚拟机是red hat linux9.0的。 昨天下午又试试了,就解决这个问题啦。 2.把linux里的防火墙给关了。...3.还有就是windows下的ip不要是自动获取的。呵呵。 这样就能把两个系统连通了。这样传文件很方便。...附上今天用到的命令: 用到的命令 1.光驱挂载 mount /mnt/cdrom 2.samba /sbin/service smb status查看状态 /sbin/service smb stop...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/193607.html原文链接:https://javaforall.cn

    4.4K40

    含大量图文解析及例程 | Linux下的ELF文件、链接、加载与库(上)

    注意:在Linux中并不以后缀名作为区分文件格式的绝对标准。...但并不是所有以上三种ELF的形式都有这两张表, 如果用于编译和链接(可重定位目标文件),则编译器和链接器将把elf文件看作是节头表描述的节的集合,程序头表可选。...如果用于加载执行(可执行目标文件),则加载器则将把elf文件看作是程序头表描述的段的集合,一个段可能包含多个节,节头部表可选。 如果是共享目标文件,则两者都含有。...我们编译链接这些代码,Makfile如下: CFLAGS := -Os a.out: a.o b.o main.o  gcc -static -Wl,--verbose a.o b.o main.o...程序的编译 - 可重定向文件 我们先用file命令来查看main.c编译生成的main.o文件的属性: file main.o 输出: main.o: ELF 64-bit LSB relocatable

    3.6K52

    【Linux】理解文件系统与软硬链接,观察inode号理解<“软链接是包含路径的新文件“,“硬链接是关于文件名的机制“>,最终明白<什么是真正删除一个文件>

    ,磁盘是典型的块设备, 硬盘分区被划分为一个个的block。...为什么软连接是一个独立的文件而硬链接不是? 是因为软连接 有独立的inode编号 数据区(Data blocks):存放文件内容 三....【软/硬链接】理解与介绍 1.软硬链接基本知识 软链接: 独立的文件, 有着独立inode , 软连接的内容是目标文件路径 ,类比windows系统的快捷方式 硬链接: 关于文件名的机制,非独立文件...,指定目录内的一组 映射 关系,inode内部有引用计数,会记录映射关系 ※为什么软连接是一个独立的文件而硬链接不是?...我们对test2创建一个硬链接文件test1.hard.link 发现 二者inode编号一致 4.一个操作理解-“硬链接是关于文件名的机制” 我们删除test2的硬链接后,发现其硬链接数量由2变为

    10710

    在 WSL 上忘记了 Linux 密码?下面是如何轻松重设的方法

    对于那些想从舒适的 Windows 中享受 Linux 命令行的人来说,WSL(Windows Subsystem for Linux) 是一个方便的工具。...当你 在 Windows 上使用 WSL 安装 Linux 时,会要求你创建一个用户名和密码。当你在 WSL 上启动 Linux 时,这个用户会自动登录。...现在的问题是,如果你有一段时间没有使用它,你可能会忘记 WSL 的账户密码。而如果你要使用 sudo 的命令,这将成为一个问题,因为这里你需要输入密码。 不要担心。你可以很容易地重置它。...在 Ubuntu 或任何其他 Linux 发行版上重置遗忘的 WSL 密码 要在 WSL 中重设 Linux 密码,你需要: 将默认用户切换为 root 重置普通用户的密码 将默认用户切换回普通用户 让我向你展示详细的步骤和截图...**你必须重新输入新的密码来确认,当你输入密码时,屏幕上也不会显示任何东西。 image.png 恭喜你。用户账户的密码已经被重置。但你还没有完成。默认用户仍然是 root。

    2.3K21

    尝试了数种方法,我坚信使用Docker在Mac上构建Linux环境是最靠谱的

    我的工作环境一直是Mac,Mac用于办公和程序开发的体验个人觉得是非常酷的。...于是我开始了我的捣鼓之路了~ 一、Macbook安装Elasticsearch Elasticsearch的安装和配置是支持Mac系统的,下载适配Mac的安装包即可,但是在我安装的过程中就发现了配置上存在不少与在...) 快乐总是短暂的,在使用了一段时间以后开始发现问题了: 网络不太稳定 输入法有时候不太灵,可能是版本问题 Macbook的存储空间太小,双系统分区以后空间不足 Linux下办公需求无法满足,例如企业微信的使用等...后来又尝试了一下Parallels Desktop,体验是好了很多,毕竟是花了钱的,性能也不错,最大的硬伤是贵啊,新的许可证是498元起,适用于开发人员的Parallels Desktop Pro是698...下载elasticsearch-8.1.0-linux-x86_64.tar存放在app目录下,解压缩以后创建软链接,便于后续的版本升级。

    6.7K30

    Windows 文件名非用反斜杠?Python 小技巧帮你解决这个麻烦

    如果你想让你的 Python 代码同时在 Windows 和 Mac/Linux 上工作,你就需要处理这种与平台相关的问题。...如果你在错误的操作系统上使用了错误类型的斜杠(尤其是在它们与外部程序或代码库交互时),并不是所有的 Python 库都会正常工作。...问题是它使用起来很麻烦。写出「os.path.join()」并将路径的每个部分作为独立的字符串传给该函数非常冗长,而且很不直观。...你再也不用一遍又一遍地输入「os.path.join(a, b)」了。 如果「pathlib」所做的就这么多,它也已经是对于 Python 的一个很好的补充了。但是,它还能做更多!...原文链接:https://medium.com/@ageitgey/python-3-quick-tip-the-easy-way-to-deal-with-file-paths-on-windows-mac-and-linux

    1.2K20

    Windows文件名非用反斜杠?Python小技巧帮你解决这个麻烦

    如果你想让你的 Python 代码同时在 Windows 和 Mac/Linux 上工作,你就需要处理这种与平台相关的问题。...如果你在错误的操作系统上使用了错误类型的斜杠(尤其是在它们与外部程序或代码库交互时),并不是所有的 Python 库都会正常工作。...问题是它使用起来很麻烦。写出「os.path.join()」并将路径的每个部分作为独立的字符串传给该函数非常冗长,而且很不直观。...你再也不用一遍又一遍地输入「os.path.join(a, b)」了。 如果「pathlib」所做的就这么多,它也已经是对于 Python 的一个很好的补充了。但是,它还能做更多!...原文链接:https://medium.com/@ageitgey/python-3-quick-tip-the-easy-way-to-deal-with-file-paths-on-windows-mac-and-linux

    1.8K10

    Android 增量更新和升级

    在年初的时候,尝试了一把热修复技术,当时选择的是阿里的andfix,使用起来也很简单,这里就不在多少,如果你对andfix有兴趣请链接:点击打开链接。...如果有想对ClassLoader做深入了解的同学,可以去看我之前一篇对ClassLoader的分析:点击打开链接 热修复(打补丁) 打补丁:服务端通过新版本APK和旧版本APK生成patch补丁(也成为差分包..., String patchPath); } 这里用到了一个ndk,如果有需要了解如何生成动态库文件的可以访问下面的点击打开链接 ?...目前只在Linux64位的系统下编译,其他系统大家可自行编译。Linux下的可直接修改makefile,windows下可用VC编译。 Diff工具:生成差分包 linux-x86_64/Patch DaemonProcess-1.apk DaemonProcess-3.apk dp.patch 代码地址:点击打开链接

    1.9K90

    Python小技巧:3个处理文件路径的简单方法

    原标题 | Python 3 Quick Tip: The easy way to deal with file paths on Windows, Mac and Linux 作者 | Adam Geitgey...译者 | 林肯二百一十三(西安交通大学)、Dooria 注:本文的相关链接请访问文末【阅读原文】 几乎所有计算机在文件夹名称间使用的都是正斜杠,但微软Windows使用的是却反斜杠, 这不免造成了编程的一个小烦恼...如果希望你的Python代码能够同时在Windows和Mac/Linux上运行,你需要解决这类平台的特定问题。幸运的是,Python3的新模块pathlib可以使文件操作变得更简单。...如果这就是pathlib做的事情,那它可真是Python的一个不错的补充——但它做的其实更多呢~ 比如,我们可以不用调用open()或者close()之类的函数,而直接读文件的内容: 注:上上部分的例子是有...---- 本文编辑:Pita 英语原文:https://medium.com/@ageitgey/python-3-quick-tip-the-easy-way-to-deal-with-file-paths-on-windows-mac-and-linux

    1.7K20
    领券