作者回复: very good~
作者回复: 不是这个意思哈。首先,共享库是被私有映射的,一开始设置为可读是为了当有进程对它进行写操作的时候可以触发页中断。页中断里会做写时复制。这是为了保证只有一个进程使用这个共享库时也不会更改全局变量的值。不管哪个进程去改写全局变量,操作系统都会弄一个副本给他,让他一边玩去。操作系统那里必须维护一份完全干净的版本。你先理解了这个机制,这两个问题,应该都能明白了,你再想想?
作者回复: very good~
作者回复: DirectBuffer和FileChannel这里对吧?好,我先记下来,也许后面的答疑课程里可以写一下这个主题。
作者回复: task_struct是内核态才能访问的。在内核态里只能执行linux kernel代码。而kernel代码是值得信任的。
作者回复: 哈哈,那你实验过没有?和你的猜想是否相符?
作者回复: 不能。主要是不需要。我写的时候,系统给我一个副本让我自己一边玩去了。别人不关心我拿走的副本是怎么样的,我也不关心除了我自己的副本之外的其他人是怎么处理的了。
作者回复: 是一样的。代码段是用来执行的,运行时不允许修改。这个结论我们在第8节就介绍了,这是因为运行时修改代码段会带来安全风险,我们要避免这么做。再细一点说,编译型的语言就是这么规定的,编译器绝对不能产生运行时修改代码段的代码。
作者回复: 这就是引用计数嘛。我会在19,20节稍微提一下。