首页
学习
活动
专区
工具
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拷贝 然后进行第二次内核态用户态转换 把内核缓冲区数据

14740

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技术等等

20140

Linux程序怎样运行

具体来说:如果valuesimple,则直接调用execute_simple_command函数进行执行,execute_simple_command再根据命令内部命令或磁盘外部命令分别调用execute_builtin...如果value其他类型,则调用对应类型函数进行分支控制。举例来说,如果valuefor_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快捷方式。它实际一个特殊文件。在符号连接中,文件实际一个文本文件,其中包含有另一文件位置信息。

5.9K10

可能 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 "难用"错觉,如果你喜欢这些特色,坚持用很短时间就会喜欢它,并享受它给你带来全新使用体验。

2.8K10

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

4K40

含大量图文解析及例程 | LinuxELF文件、链接、加载与库(

注意:在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

2.5K52

在 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.1K21

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

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

4.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.7K10

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

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

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.8K90

深入理解linux执行文件提示No such file or directory背后原因

1 背景 最近一直在研究在ZC706-ARM开发板linux系统中弄一套编译系统(不支持apt),刚好发现公司有一套英伟达ARM开发板且带有ubunut系统(支持apt),此时产生一个想法,英伟达板子编译程序能否在...ZC706板子运行?...建立软链接 ln -s /lib/ld-linux.so.3 /lib/ld-linux-armhf.so.3 3. 编译程序时,加入-static选项静态链接程序,即不使用动态库 ?...3 介绍 ld装载器 Linux 使用这个ld-linux.so*(虚拟机x86ubuntu 使用ld-linux.so2)中来装载(其实这只是一个链接)其他库。...测试是否动态连接,如果列出libtest.so,那么应该是连接正常了 这时候找不到libtest.so, 动态链接查找路径出问题,因此加入上面动态库查找位置即可 3 ldconfig命令主要是在默认搜寻目录

7.3K41

Python 小技巧 | Windows 文件名非用反斜杠

如果你想让你 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

2.6K10
领券