ruby - Ruby 中的写时复制 fork

标签 ruby fork

我正在学习进程 fork ,以及它是如何在 Ruby 中具体实现的。在我的阅读中,我了解了“写时复制”行为。据我了解,在子线程尝试进行写操作之前,这基本上不会复制内存。这是否意味着当子进程确实尝试写入时,父内存被复制和修改,并且原始内存保持不变(因此父内存不受子进程的影响?)。谢谢。

最佳答案

是的。写时复制意味着只有两个进程相同的内存页保持共享。如果子进程或父进程写入共享页面之一,写入将被拦截,页面将被复制,写入将发生在子进程/父进程独有的新页面上。

值得一提的是,这与 Ruby 没有任何关系。 Ruby 使用底层系统的 fork 系统调用,它在 Linux 和大多数 UNIX 上具有写时复制行为。

关于ruby - Ruby 中的写时复制 fork ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21862857/

相关文章:

ruby-on-rails - 检查多个(两个以上)数组是否匹配,无论 ruby​​ 中的元素顺序如何

perl - 我如何向 fork 的 child 发出信号以终止在 Perl 中?

c - 使用等待和信号让父进程等待子进程结束

python - 同时运行多个python脚本实例

Perl,如何从 Win32 和 Unix 上的 exec、system、open 函数获取线程的 pid

ruby - 如何使用 ruby​​1.9 部署 Rack 应用程序?

ruby - 添加 gem "tesseract-ocr"Rails 4 后尝试运行服务器时出错

javascript - 表单提交后使用ajax在rails中渲染内容

ruby - Rails 4 : Custom routes, 单个模型的多个编辑表单

linux - 多线程fork