Yes.
In some cases, yes (if there are other runnable threads on this CPU's queue).
A better example: a page fault for a non-present page.
Don't forget gltron!
You are absolutely right. They are used everywhere in the Linux, OpenBSD, and FreeBSD kernels, and likely many other kernels. Replacing large linked lists with arrays is rarely an actual win. With an array, insertion…
> I don't see how it could. Kernel data structures don't go on pagecache pages. Kernel data structures could end up on a pagecache page: all it takes is a reference counting bug and the page could be reallocated in the…
OpenBSD's choice is arguably reasonable, given their prioritization of security, since it reduces opportunities for user programs to corrupt kernel memory. What is the problem with OpenBSD's plan for coherency? Why is…
Is recovery of a shared memory queue after one of the workers crashes even possible, in general? (what if the worker crashed before releasing a lock?)
This is a great point. Jargon can be really intimidating and make the simplest statements impossible to understand for the unfamiliar. But is often trivial to learn with a little study.
A particularly tricky task with GNU make is automatically adding target dependencies on header files and handling updates to them (gcc's -M and -MMD switches). It would be great if the article explained those best…
Turns out the x86 already has some bounds checking support; see chapter 17 in volume 1 of Intel's developer manuals and the BOUND and BND* instructions.
Hah, I am Cody and I'm not related to Dave Cutler (as far as I know!).
Different Linux kernel config options, probably. Different options can drastically affect performance.
That's correct. The primary performance benefit of generational GC (in terms of throughput and maybe also latency) is that it can reclaim the memory (backing the young generation) without marking or otherwise processing…
No, the size of the array doesn't need to be a power-of-2 if you use modulus to derive indices. But you need to deal with the overflow somehow. For instance: 0xffffffff % 7 = 3, but (0xffffffff + 1) % 7 = 0.
You are addressing criticisms of Stalin with a logical fallacy called "whataboutism".
I don't understand you. Is your answer to my question: "Modern UNIX OSes cannot take advantage of said ideas because they are POSIX compatible."?
Never before have I been so eager to shoot potatoes into the sun.
Obviously a direct translation from English to Russian -- I doubt a Russian would ever actually say this. They should change it to: молодец.
"Thousands of cycles" is definitely not true on modern CPUs. SYSENTER/SYSEXIT takes 150 cycles on my Xeon X3460.
The space overhead is significantly worse for native threading in the presence of many threads since each thread needs both a user and kernel stack. For M:N, there are N kernel stacks.
Why do you say "non-standard"? O_NOFOLLOW is specified by POSIX.
> The advantage of this construct is that you can use the flags set by the increment to test for loop termination, rather than needing an additional comparison. I don't understand your optimization. ZF is also set for…
My point is simply this: maybe the author wanted to write an OS that he could use on his PC without rewriting all of his programs. Maybe he did not want to do OS interface research.
Here are even more names for this fallacy: tu quoque and whataboutism.
Yes.
In some cases, yes (if there are other runnable threads on this CPU's queue).
A better example: a page fault for a non-present page.
Don't forget gltron!
You are absolutely right. They are used everywhere in the Linux, OpenBSD, and FreeBSD kernels, and likely many other kernels. Replacing large linked lists with arrays is rarely an actual win. With an array, insertion…
> I don't see how it could. Kernel data structures don't go on pagecache pages. Kernel data structures could end up on a pagecache page: all it takes is a reference counting bug and the page could be reallocated in the…
OpenBSD's choice is arguably reasonable, given their prioritization of security, since it reduces opportunities for user programs to corrupt kernel memory. What is the problem with OpenBSD's plan for coherency? Why is…
Is recovery of a shared memory queue after one of the workers crashes even possible, in general? (what if the worker crashed before releasing a lock?)
This is a great point. Jargon can be really intimidating and make the simplest statements impossible to understand for the unfamiliar. But is often trivial to learn with a little study.
A particularly tricky task with GNU make is automatically adding target dependencies on header files and handling updates to them (gcc's -M and -MMD switches). It would be great if the article explained those best…
Turns out the x86 already has some bounds checking support; see chapter 17 in volume 1 of Intel's developer manuals and the BOUND and BND* instructions.
Hah, I am Cody and I'm not related to Dave Cutler (as far as I know!).
Different Linux kernel config options, probably. Different options can drastically affect performance.
That's correct. The primary performance benefit of generational GC (in terms of throughput and maybe also latency) is that it can reclaim the memory (backing the young generation) without marking or otherwise processing…
No, the size of the array doesn't need to be a power-of-2 if you use modulus to derive indices. But you need to deal with the overflow somehow. For instance: 0xffffffff % 7 = 3, but (0xffffffff + 1) % 7 = 0.
You are addressing criticisms of Stalin with a logical fallacy called "whataboutism".
I don't understand you. Is your answer to my question: "Modern UNIX OSes cannot take advantage of said ideas because they are POSIX compatible."?
Never before have I been so eager to shoot potatoes into the sun.
Obviously a direct translation from English to Russian -- I doubt a Russian would ever actually say this. They should change it to: молодец.
"Thousands of cycles" is definitely not true on modern CPUs. SYSENTER/SYSEXIT takes 150 cycles on my Xeon X3460.
The space overhead is significantly worse for native threading in the presence of many threads since each thread needs both a user and kernel stack. For M:N, there are N kernel stacks.
Why do you say "non-standard"? O_NOFOLLOW is specified by POSIX.
> The advantage of this construct is that you can use the flags set by the increment to test for loop termination, rather than needing an additional comparison. I don't understand your optimization. ZF is also set for…
My point is simply this: maybe the author wanted to write an OS that he could use on his PC without rewriting all of his programs. Maybe he did not want to do OS interface research.
Here are even more names for this fallacy: tu quoque and whataboutism.