150 likes | 175 Views
This introduction by Ilsoo Byun from Seoul National University covers the importance of concurrency in computing, focusing on threads and their implementation in Linux systems. It explains the differences between processes and threads, the need for atomicity in concurrent operations, and the significance of synchronization primitives. The text also delves into thread creation, context switching, shared data challenges, and the necessity of atomic operations for reliable results in concurrent environments.
E N D
Concurrency: Introduction Ilsoo Byun(isbyun@dcslab.snu.ac.kr) School of Computer Science and Engineering Seoul National University
Contents • Introduction to Thread • Linux Implementation • Concurrency Problem • Necessity of Atomicity • Summary
Process vs Thread • Similarities • Unit of a context switch • PC • Registers • Differences • Process Context Block/Thread Context Block • Process can not access the address space of other processes but threads of a process can access every addressin the process. • After context switching between threads, the address space remains the same. • With threads, there can be multiple stacks in the address space.
A Single- and Multi-Threaded Address space Code Code Data Data BSS BSS Heap Heap Free Stack(2) Stack Stack(1) (a) Sigle-threaded (b) Multi-threaded
Linux Implementation (1) TCB Thread ID 4 State: Ready PID 111222 PCB Thread ID 5 State: Ready User ID PC SP Group ID Registers Registers Address space Open files PC SP Sockets etc Separate the concept of a process from a thread of control Process is just a container for threads Each thread has its own CPU execution state
Linux Implementation (2) Thread ID 4 State: Ready Thread ID 5 State: Ready Ready Queue PC SP PC SP Registers Registers • TCB is the unit of a context switch • Ready queue, wait queues, etc. now contain pointers to TCB • Context switch cause CPU state to be copied to /from the TCB • TCB's are smaller and cheaper than PCB • Linux TCB(thread_struct) has 24 fields • Linux PCB(task_struct) has 106 fields
Why it is a problem? counter = 20000000 or counter = 19345221 or counter = 18221041 • Shared Data • Running order depends on the scheduler decision
Uncontrolled Scheduling Simply adding 1 to counter requires three instructions
Necessity of Atomicity • Add more powerful instructions? • Cannot support all cases that require atomic operations. • Provide synchronization primitives for the general purpose • Access critical section in a synchronized and controlled manner • Reliably produce result despite the nature of concurrent execution
Summary • Threads • Multiple points of execution in a process • Accessing shared data, non-deterministic behavior can occur. • To support atomic operation, synchronization primitives are required.