SlideShare une entreprise Scribd logo
1  sur  54
Télécharger pour lire hors ligne
Memory Barriers in the Linux Kernel
Semantics and Practices
Embedded Linux Conference – April 2016. San Diego, CA.
Davidlohr Bueso <dave@stgolabs.net>
SUSE Labs.
2
Agenda
1. Introduction
• Reordering Examples
• Underlying need for memory barriers
2. Barriers in the kernel
● Building blocks
● Implicit barriers
● Atomic operations
● Acquire/release semantics.
3
References
i. David Howells, Paul E. McKenney. Linux Kernel source:
Documentation/memory-barriers.txt
ii. Paul E. McKenney. Is Parallel Programming Hard, And, If So, What
Can You Do About It?
iii. Paul E. McKenney.
Memory Barriers: a Hardware View for Software Hackers. June 2010.
iv. Sorin, Hill, Wood. A Primer on Memory Consistency and Cache
Coherence. Synthesis Lectures on Computer Architecture. 2011.
4
5
Flagship Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
6
Flagship Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
(x, y) =
7
Flagship Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
(x, y) =
(0, 1)
A = 1
x = B
              B = 1
              y = A
8
Flagship Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
(x, y) =
(0, 1)
              B = 1
              y = A
A = 1
x = B
(1, 0)
9
Flagship Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
(x, y) =
(0, 1)
A = 1
              B = 1
              y = A
x = B
(1, 0)
(1, 1)
10
Flagship Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
(x, y) =
(0, 1)
x = B   y = A   
A = 1 B = 1
(1, 0)
(1, 1)
 (0, 0)
11
Memory Consistency Models
• Most modern multicore systems are coherent but not
consistent.
‒ Same address is subject to the cache coherency protocol.
• Describes what the CPU can do regarding instruction
ordering across addresses.
‒ Helps programmers make sense of the world.
‒ CPU is not aware if application is single or multi-threaded.
When optimizing, it only ensures single threaded correctness.
12
Sequential Consistency (SC)
“A multiprocessor is sequentially consistent if the result of any
execution is the same as some sequential order, and within any
processor, the operations are executed in program order”
– Lamport, 1979.
• Intuitively a programmer's ideal scenario.
‒ The instructions are executed by the same CPU in the order in
which it was written.
‒ All processes see the same interleaving of operations.
13
Total Store Order (TSO)
• SPARC, x86 (Intel, AMD)
• Similar to SC, but:
‒ Loads may be reordered with writes.
[l] B
[s] B
[l] B
[s] C
[l] B
[s] A
[l] A
[s] B
14
Total Store Order (TSO)
• SPARC, x86 (Intel, AMD)
• Similar to SC, but:
‒ Loads may be reordered with writes.
[l] B
[s] B
[l] B
[s] C
[l] B
[s] A
[l] A
[s] B
L→L
15
Total Store Order (TSO)
• SPARC, x86 (Intel, AMD)
• Similar to SC, but:
‒ Loads may be reordered with writes.
[l] B
[s] B
[l] B
[s] C
[l] B
[s] A
[l] A
[s] B
L→L
S→S
16
Total Store Order (TSO)
• SPARC, x86 (Intel, AMD)
• Similar to SC, but:
‒ Loads may be reordered with writes.
[l] B
[s] B
[l] B
[s] C
[l] B
[s] A
[l] A
[s] B
L→L
S→S
L→S
17
Total Store Order (TSO)
• SPARC, x86 (Intel, AMD)
• Similar to SC, but:
‒ Loads may be reordered with writes.
[l] B
[s] B
[l] B
[s] C
[l] B
[s] A
[l] A
[s] B
L→L
S→S
L→S
S→L
18
Relaxed Models
• Arbitrary reorder limited only by explicit memory-
barrier instructions.
• ARM, Power, tilera, Alpha.
19
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
x = B
CPU1
B = 1
y = A
CPU1
B = 1
y = A
20
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
<MB>
x = B
CPU1
B = 1
y = A
CPU1
B = 1
<MB>
y = A
21
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
<MB>
x = B
CPU1
B = 1
y = A
CPU1
B = 1
<MB>
y = A
● Compiler barrier
22
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
<MB>
x = B
CPU1
B = 1
y = A
CPU1
B = 1
<MB>
y = A
● Compiler barrier
● Mandatory barriers (general+rw)
23
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
<MB>
x = B
CPU1
B = 1
y = A
CPU1
B = 1
<MB>
y = A
● Compiler barrier
● Mandatory barriers (general+rw)
● SMP-conditional barriers
24
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
<MB>
x = B
CPU1
B = 1
y = A
CPU1
B = 1
<MB>
y = A
● Compiler barrier
● Mandatory barriers (general+rw)
● SMP-conditional barriers
● acquire/release
25
Fixing the Example
A = 0, B = 0 (shared variables)
CPU0
A = 1
<MB>
x = B
CPU1
B = 1
y = A
CPU1
B = 1
<MB>
y = A
● Compiler barrier
● Mandatory barriers (general+rw)
● SMP-conditional barriers
● acquire/release
● Data dependency barriers
● Device barriers
Barriers in the Linux Kernel
27
Abstracting Architectures
• Most kernel programmers need not worry about
ordering specifics of every architecture.
‒ Some notion of barrier usage is handy nonetheless – implicit
vs explicit, semantics, etc.
• Linux must handle the CPU's memory ordering
specifics in a portable way with LCD semantics of
memory barriers.
‒ CPU appears to execute in program order.
‒ Single variable consistency.
‒ Barriers operate in pairs.
‒ Sufficient to implement synchronization primitives.
28
Abstracting Architectures
mb()
mfence
dsb
sync
...
● Each architecture must implement its own calls or
otherwise default to the generic and highly
unoptimized behavior.
● <arch/xxx/include/asm/barriers.h> will
always define the low-level CPU specifics, then rely
on <include/asm­generic/barriers.h>
29
A Note on barrier()
• Prevents the compiler from getting smart, acting as a
general barrier.
• Within a loop forces the compiler to reload conditional
variables – READ/WRITE_ONCE.
30
Implicit Barriers
• Calls that have implied barriers, the caller can safely
rely on:
‒ Locking functions
‒ Scheduler functions
‒ Interrupt disabling functions
‒ Others.
31
Sleeping/Waking
• Extremely common task in the kernel and flagship
example of flag-based CPU-CPU interaction.
CPU0 CPU1
while (!done) { done = true;
schedule();      wake_up_process(t);
current→state = …;
}
32
Sleeping/Waking
• Extremely common task in the kernel and flagship
example of flag-based CPU-CPU interaction.
CPU0 CPU1
while (!done) { done = true;
schedule();      wake_up_process(t);
current→state = …;
set_current_state(…);
}
33
Sleeping/Waking
• Extremely common task in the kernel and flagship
example of flag-based CPU-CPU interaction.
CPU0 CPU1
while (!done) { done = true;
schedule();      wake_up_process(t);
current→state = …;
set_current_state(…);
}
smp_store_mb():
  [s] →state = … 
  smp_mb()
34
Atomic Operations
• Any atomic operation that modifies some state in
memory and returns information about the state can
potentially imply a SMP barrier:
‒ smp_mb() on each side of the actual operation
[atomic_*_]xchg()
atomic_*_return()
atomic_*_and_test()
atomic_*_add_negative()
35
Atomic Operations
• Any atomic operation that modifies some state in
memory and returns information about the state can
potentially imply a SMP barrier:
‒ smp_mb() on each side of the actual operation
‒ Conditional calls imply barriers only when successful.
[atomic_*_]xchg()
atomic_*_return()
atomic_*_and_test()
atomic_*_add_negative()
[atomic_*_]cmpxchg()
atomic_*_add_unless()
36
Atomic Operations
• Most basic of operations therefore do not imply
barriers.
• Many contexts can require barriers:
cpumask_set_cpu(cpu, vec­>mask);
/*
 * When adding a new vector, we update the mask first,
 * do a write memory barrier, and then update the count, to
 * make sure the vector is visible when count is set.
 */
smp_mb__before_atomic();
atomic_inc(&(vec)­>count);
37
Atomic Operations
• Most basic of operations therefore do not imply
barriers.
• Many contexts can require barriers:
/*
 * When removing from the vector, we decrement the counter first
 * do a memory barrier and then clear the mask.
 */
atomic_dec(&(vec)­>count);
smp_mb__after_atomic();
cpumask_clear_cpu(cpu, vec­>mask);
38
Acquire/Release Semantics
• One way barriers.
• Passing information reliably between threads about a
variable.
‒ Ideal in producer/consumer type situations (pairing!!).
‒ After an ACQUIRE on a given variable, all memory accesses
preceding any prior RELEASE on that same variable are
guaranteed to be visible.
‒ All accesses of all previous critical sections for that variable
are guaranteed to have completed.
‒ C++11's memory_order_acquire,
memory_order_release and memory_order_relaxed.
39
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
40
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
smp_store_release(lock→val, 0) <­> cmpxchg_acquire(lock→val, 0, LOCKED)  
41
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
RELEASE
ACQUIRE
smp_store_release(lock→val, 0) <­> cmpxchg_acquire(lock→val, 0, LOCKED)  
42
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
RELEASE
(LS, SS)
ACQUIRE
(LL, LS)
smp_store_release(lock→val, 0) <­> cmpxchg_acquire(lock→val, 0, LOCKED)
43
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
RELEASE
ACQUIRE
smp_store_release(lock→val, 0) <­> cmpxchg_acquire(lock→val, 0, LOCKED)
44
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
RELEASE
ACQUIRE
smp_store_release(lock→val, 0) <­> cmpxchg_acquire(lock→val, 0, LOCKED)
45
Acquire/Release Semantics
CPU0
spin_lock
  …
  …
CPU0
spin_lock(&l)
spin_unlock(&l)
CPU1
spin_lock(&l)
  
 
spin_unlock(&l)
CR
CR
RELEASE
ACQUIRE
smp_store_release(lock→val, 0) <­> cmpxchg_acquire(lock→val, 0, LOCKED)
46
Acquire/Release Semantics
• Regular atomic/RMW calls have been fine grained for
archs that support strict acquire/release semantics.
• Currently only used by arm64 and PPC.
‒ LDAR/STLR
cmpxchg()
cmpxchg_acquire()
cmpxchg_release()
cmpxchg_relaxed()
smp_load_acquire()
smp_cond_acquire()
smp_store_release()
47
Acquire/Release Semantics
• These are minimal guarantees.
‒ Ensuring barriers on both sides of a lock operation will require
therefore, full barrier semantics:
smp_mb__before_spinlock()
smp_mb__after_spinlock()
• Certainly not limited to locking.
‒ perf, IPI paths, scheduler, tty, etc.
48
Acquire/Release Semantics
• Busy-waiting on a variable that requires ACQUIRE
semantics:
CPU0
while (!done)
cpu_relax();
smp_rmb();
CPU1
smp_store_release(done, 1);
49
Acquire/Release Semantics
• Busy-waiting on a variable that requires ACQUIRE
semantics:
CPU0
while (!done)
cpu_relax();
               [LS]  
smp_rmb();     [LL]
CPU1
smp_store_release(done, 1);
50
Acquire/Release Semantics
• Busy-waiting on a variable that requires ACQUIRE
semantics:
CPU0
while (!done)
cpu_relax();
               [LS]  
smp_rmb();     [LL]
CPU1
smp_store_release(done, 1);
smp_load_acquire(!done);
51
Acquire/Release Semantics
• Busy-waiting on a variable that requires ACQUIRE
semantics:
CPU0
while (!done)
cpu_relax();
               [LS]  
smp_rmb();     [LL]
CPU1
smp_store_release(done, 1);
• Fine-graining SMP barriers while a performance
optimization, makes it harder for kernel programmers.
52
Concluding Remarks
• Assume nothing.
• Read memory-barriers.txt
• Use barrier pairings.
• Comment barriers.
Thank you.
54

Contenu connexe

Tendances

03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
Gopi Krishnamurthy
 

Tendances (20)

COSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem portingCOSCUP 2020 RISC-V 32 bit linux highmem porting
COSCUP 2020 RISC-V 32 bit linux highmem porting
 
The Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast StorageThe Linux Block Layer - Built for Fast Storage
The Linux Block Layer - Built for Fast Storage
 
Revisit DCA, PCIe TPH and DDIO
Revisit DCA, PCIe TPH and DDIORevisit DCA, PCIe TPH and DDIO
Revisit DCA, PCIe TPH and DDIO
 
Qemu JIT Code Generator and System Emulation
Qemu JIT Code Generator and System EmulationQemu JIT Code Generator and System Emulation
Qemu JIT Code Generator and System Emulation
 
Physical Memory Models.pdf
Physical Memory Models.pdfPhysical Memory Models.pdf
Physical Memory Models.pdf
 
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
qemu + gdb: The efficient way to understand/debug Linux kernel code/data stru...
 
LISA2019 Linux Systems Performance
LISA2019 Linux Systems PerformanceLISA2019 Linux Systems Performance
LISA2019 Linux Systems Performance
 
Process Address Space: The way to create virtual address (page table) of user...
Process Address Space: The way to create virtual address (page table) of user...Process Address Space: The way to create virtual address (page table) of user...
Process Address Space: The way to create virtual address (page table) of user...
 
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
03_03_Implementing_PCIe_ATS_in_ARM-based_SoCs_Final
 
UM2019 Extended BPF: A New Type of Software
UM2019 Extended BPF: A New Type of SoftwareUM2019 Extended BPF: A New Type of Software
UM2019 Extended BPF: A New Type of Software
 
Continguous Memory Allocator in the Linux Kernel
Continguous Memory Allocator in the Linux KernelContinguous Memory Allocator in the Linux Kernel
Continguous Memory Allocator in the Linux Kernel
 
Dpdk applications
Dpdk applicationsDpdk applications
Dpdk applications
 
BPF Internals (eBPF)
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)
 
ACPI Debugging from Linux Kernel
ACPI Debugging from Linux KernelACPI Debugging from Linux Kernel
ACPI Debugging from Linux Kernel
 
Debug dpdk process bottleneck & painpoints
Debug dpdk process bottleneck & painpointsDebug dpdk process bottleneck & painpoints
Debug dpdk process bottleneck & painpoints
 
Understanding of linux kernel memory model
Understanding of linux kernel memory modelUnderstanding of linux kernel memory model
Understanding of linux kernel memory model
 
Linux memory-management-kamal
Linux memory-management-kamalLinux memory-management-kamal
Linux memory-management-kamal
 
QEMU - Binary Translation
QEMU - Binary Translation QEMU - Binary Translation
QEMU - Binary Translation
 
Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)
 
Intel DPDK Step by Step instructions
Intel DPDK Step by Step instructionsIntel DPDK Step by Step instructions
Intel DPDK Step by Step instructions
 

En vedette

Linux kernel development chapter 10
Linux kernel development chapter 10Linux kernel development chapter 10
Linux kernel development chapter 10
huangachou
 
Sql server engine cpu cache as the new ram
Sql server engine cpu cache as the new ramSql server engine cpu cache as the new ram
Sql server engine cpu cache as the new ram
Chris Adkin
 
Red hat enterprise_virtualization_load
Red hat enterprise_virtualization_loadRed hat enterprise_virtualization_load
Red hat enterprise_virtualization_load
silviucojocaru
 
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUsShoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Jiannan Ouyang, PhD
 
Achieving Performance Isolation with Lightweight Co-Kernels
Achieving Performance Isolation with Lightweight Co-KernelsAchieving Performance Isolation with Lightweight Co-Kernels
Achieving Performance Isolation with Lightweight Co-Kernels
Jiannan Ouyang, PhD
 

En vedette (20)

Futex Scaling for Multi-core Systems
Futex Scaling for Multi-core SystemsFutex Scaling for Multi-core Systems
Futex Scaling for Multi-core Systems
 
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
An Overview of [Linux] Kernel Lock Improvements -- Linuxcon NA 2014
 
Dead Lock Analysis of spin_lock() in Linux Kernel (english)
Dead Lock Analysis of spin_lock() in Linux Kernel (english)Dead Lock Analysis of spin_lock() in Linux Kernel (english)
Dead Lock Analysis of spin_lock() in Linux Kernel (english)
 
Linux kernel development chapter 10
Linux kernel development chapter 10Linux kernel development chapter 10
Linux kernel development chapter 10
 
Enabling ARM® Server Technology for the Datacenter
Enabling ARM® Server Technology for the DatacenterEnabling ARM® Server Technology for the Datacenter
Enabling ARM® Server Technology for the Datacenter
 
6 Dean Google
6 Dean Google6 Dean Google
6 Dean Google
 
Red Hat Virtualization Where Performance Takes Off!
Red Hat Virtualization Where Performance Takes Off!Red Hat Virtualization Where Performance Takes Off!
Red Hat Virtualization Where Performance Takes Off!
 
Sql server engine cpu cache as the new ram
Sql server engine cpu cache as the new ramSql server engine cpu cache as the new ram
Sql server engine cpu cache as the new ram
 
Java memory model
Java memory modelJava memory model
Java memory model
 
Linux Locking Mechanisms
Linux Locking MechanismsLinux Locking Mechanisms
Linux Locking Mechanisms
 
Red hat enterprise_virtualization_load
Red hat enterprise_virtualization_loadRed hat enterprise_virtualization_load
Red hat enterprise_virtualization_load
 
Linux and H/W optimizations for MySQL
Linux and H/W optimizations for MySQLLinux and H/W optimizations for MySQL
Linux and H/W optimizations for MySQL
 
6th Generation Processor Announcement
6th Generation Processor Announcement6th Generation Processor Announcement
6th Generation Processor Announcement
 
ENERGY EFFICIENCY OF ARM ARCHITECTURES FOR CLOUD COMPUTING APPLICATIONS
ENERGY EFFICIENCY OF ARM ARCHITECTURES FOR CLOUD COMPUTING APPLICATIONSENERGY EFFICIENCY OF ARM ARCHITECTURES FOR CLOUD COMPUTING APPLICATIONS
ENERGY EFFICIENCY OF ARM ARCHITECTURES FOR CLOUD COMPUTING APPLICATIONS
 
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUsShoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
Shoot4U: Using VMM Assists to Optimize TLB Operations on Preempted vCPUs
 
Achieving Performance Isolation with Lightweight Co-Kernels
Achieving Performance Isolation with Lightweight Co-KernelsAchieving Performance Isolation with Lightweight Co-Kernels
Achieving Performance Isolation with Lightweight Co-Kernels
 
LinuxCon2009: 10Gbit/s Bi-Directional Routing on standard hardware running Linux
LinuxCon2009: 10Gbit/s Bi-Directional Routing on standard hardware running LinuxLinuxCon2009: 10Gbit/s Bi-Directional Routing on standard hardware running Linux
LinuxCon2009: 10Gbit/s Bi-Directional Routing on standard hardware running Linux
 
Denser, cooler, faster, stronger: PHP on ARM microservers
Denser, cooler, faster, stronger: PHP on ARM microserversDenser, cooler, faster, stronger: PHP on ARM microservers
Denser, cooler, faster, stronger: PHP on ARM microservers
 
Cache profiling on ARM Linux
Cache profiling on ARM LinuxCache profiling on ARM Linux
Cache profiling on ARM Linux
 
Docker by demo
Docker by demoDocker by demo
Docker by demo
 

Similaire à Memory Barriers in the Linux Kernel

W1.1 i os in database
W1.1   i os in databaseW1.1   i os in database
W1.1 i os in database
gafurov_x
 
Parallelism Processor Design
Parallelism Processor DesignParallelism Processor Design
Parallelism Processor Design
Sri Prasanna
 
Asynchronous Io Programming
Asynchronous Io ProgrammingAsynchronous Io Programming
Asynchronous Io Programming
l xf
 
qdoc.tips_oracle-dba-interview-questions.pdf
qdoc.tips_oracle-dba-interview-questions.pdfqdoc.tips_oracle-dba-interview-questions.pdf
qdoc.tips_oracle-dba-interview-questions.pdf
OsamaQahtan
 
[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns
[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns
[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns
npinto
 
Smashing the stack for fun and profit
Smashing the stack for fun and profitSmashing the stack for fun and profit
Smashing the stack for fun and profit
Alexey Miasoedov
 
Porting FreeRTOS on OpenRISC
Porting FreeRTOS   on   OpenRISCPorting FreeRTOS   on   OpenRISC
Porting FreeRTOS on OpenRISC
Yi-Chiao
 

Similaire à Memory Barriers in the Linux Kernel (20)

Memory model
Memory modelMemory model
Memory model
 
W1.1 i os in database
W1.1   i os in databaseW1.1   i os in database
W1.1 i os in database
 
Cpu Cache and Memory Ordering——并发程序设计入门
Cpu Cache and Memory Ordering——并发程序设计入门Cpu Cache and Memory Ordering——并发程序设计入门
Cpu Cache and Memory Ordering——并发程序设计入门
 
Parallelism Processor Design
Parallelism Processor DesignParallelism Processor Design
Parallelism Processor Design
 
Asynchronous Io Programming
Asynchronous Io ProgrammingAsynchronous Io Programming
Asynchronous Io Programming
 
lec5 - The processor.pptx
lec5 - The processor.pptxlec5 - The processor.pptx
lec5 - The processor.pptx
 
Beginbackup
BeginbackupBeginbackup
Beginbackup
 
ScyllaDB: NoSQL at Ludicrous Speed
ScyllaDB: NoSQL at Ludicrous SpeedScyllaDB: NoSQL at Ludicrous Speed
ScyllaDB: NoSQL at Ludicrous Speed
 
Spark Summit EU talk by Qifan Pu
Spark Summit EU talk by Qifan PuSpark Summit EU talk by Qifan Pu
Spark Summit EU talk by Qifan Pu
 
qdoc.tips_oracle-dba-interview-questions.pdf
qdoc.tips_oracle-dba-interview-questions.pdfqdoc.tips_oracle-dba-interview-questions.pdf
qdoc.tips_oracle-dba-interview-questions.pdf
 
spinlock.pdf
spinlock.pdfspinlock.pdf
spinlock.pdf
 
Memory model
Memory modelMemory model
Memory model
 
Lec7
Lec7Lec7
Lec7
 
[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns
[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns
[Harvard CS264] 02 - Parallel Thinking, Architecture, Theory & Patterns
 
Integrating Cache Oblivious Approach with Modern Processor Architecture: The ...
Integrating Cache Oblivious Approach with Modern Processor Architecture: The ...Integrating Cache Oblivious Approach with Modern Processor Architecture: The ...
Integrating Cache Oblivious Approach with Modern Processor Architecture: The ...
 
Scylla Summit 2018: Make Scylla Fast Again! Find out how using Tools, Talent,...
Scylla Summit 2018: Make Scylla Fast Again! Find out how using Tools, Talent,...Scylla Summit 2018: Make Scylla Fast Again! Find out how using Tools, Talent,...
Scylla Summit 2018: Make Scylla Fast Again! Find out how using Tools, Talent,...
 
Smashing the stack for fun and profit
Smashing the stack for fun and profitSmashing the stack for fun and profit
Smashing the stack for fun and profit
 
Porting FreeRTOS on OpenRISC
Porting FreeRTOS   on   OpenRISCPorting FreeRTOS   on   OpenRISC
Porting FreeRTOS on OpenRISC
 
Re-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance UnderstandabilityRe-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance Understandability
 
Re-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance UnderstandabilityRe-Architecting Spark For Performance Understandability
Re-Architecting Spark For Performance Understandability
 

Dernier

%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
masabamasaba
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 

Dernier (20)

%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
WSO2CON 2024 - Cloud Native Middleware: Domain-Driven Design, Cell-Based Arch...
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students8257 interfacing 2 in microprocessor for btech students
8257 interfacing 2 in microprocessor for btech students
 
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni%in Benoni+277-882-255-28 abortion pills for sale in Benoni
%in Benoni+277-882-255-28 abortion pills for sale in Benoni
 
Artyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptxArtyushina_Guest lecture_YorkU CS May 2024.pptx
Artyushina_Guest lecture_YorkU CS May 2024.pptx
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
WSO2Con2024 - From Code To Cloud: Fast Track Your Cloud Native Journey with C...
 
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 

Memory Barriers in the Linux Kernel