Runtime handling of thread-specific data in ELFs. March 14, 2017

Size: px
Start display at page:

Download "Runtime handling of thread-specific data in ELFs. March 14, 2017"

Transcription

1 handling of thread-specific data in ELFs EPITA Systems/Security Laboratory (LSE) March 14, / 21

2 2 / 21

3 TLS? GCC/G++ thread int i; extern thread struct state s; static thread char *p; Visual C++: declspec( thread ) int i = 0; Since C++11: thread_local 3 / 21

4 Support needed Linker Standard C library Thread library Dynamic linker 4 / 21

5 Example (1/4) int main(void) { pthread_t thread_one; pthread_t thread_two; // [...] if (pthread_create(&thread_one, NULL, do_stuff, &count) pthread_create(&thread_two, NULL, do_other_stuff, &count)) { printf("error while creating threads\n"); return 1; } if (pthread_join(thread_one, NULL) pthread_join(thread_two, NULL)) { printf("error while joining threads\n"); return 1; } // [...] 5 / 21

6 Example (2/4) static thread int tls_var; void *do_stuff(void *arg) { tls_var = 63; read(-1, NULL, 1); int *cnt = (int*)arg; while(*cnt < 2000) { pthread_mutex_lock(&mutex); printf("in first thread %d\n", (*cnt)++); pthread_mutex_unlock(&mutex); } printf(" === TLS VAR [1] : %d, errno : %d === \n", tls_var, errno); return NULL; } 6 / 21

7 Example (3/4) void *do_other_stuff(void *arg) { tls_var = 36; int *cnt = (int*)arg; while(*cnt < 2000) { pthread_mutex_lock(&mutex); printf("in second thread %d\n", (*cnt)++); pthread_mutex_unlock(&mutex); } } printf(" === TLS VAR [2] : %d, errno : %d === \n", tls_var, errno); return NULL; 7 / 21

8 Example (4/4) $./test In first thread 1977 In first thread 1978 [...] In second thread 1984 In second thread 1985 In second thread 1986 In second thread 1987 [...] In first thread 1997 In first thread 1998 In first thread 1999 === TLS VAR [1] : 63, errno : 9 === In second thread 2000 === TLS VAR [2] : 36, errno : 0 === Errno Main Thread: 12 8 / 21

9 9 / 21

10 Relocations 101 Relocation table DT RELA (or DT REL).plt calls DT JMPREL Find symbols Relocate.data,.bss 10 / 21

11 Thread-local variables.tdata,.tbss sections Program header PT TLS Initialization image man elf(5) 11 / 21

12 Data structures Figure: TLS data structures (Variant 1) 12 / 21

13 Data structures Figure: TLS data structures (Variant 2) 13 / 21

14 Startup Static or lazy allocation check DT FLAGS Might be optimized $ readelf -r./test fc R_X86_64_DTPMOD tls_lib_var fd R_X86_64_DTPOFF tls_lib_var / 21

15 tls get addr void * tls_get_addr (size_t m, size_t offset) { char *tls_block = dtv[thread_id][m]; } return tls_block + offset; $ readelf -r./test R_X86_64_JUMP_SLO 0000 tls_get_addr@glibc_ / 21

16 Figure: Optimization needed 16 / 21

17 tls get addr void * tls_get_addr (size_t m, size_t offset) { char *tls_block = dtv[thread_id][m]; if (tls_block == UNALLOC_BLK) tls_block = dtv[thread_id][m] = tls_allocation(m); } return tls_block + offset; Allocate tls : cf. TLS initialization image set to zero 17 / 21

18 Acces thread vector Architecture dependant Example : x86 General purpose segment registers %fs, %gs Useful syscalls: modify ldt(2) set thread area(2) arch prctl(2) 18 / 21

19 Misc Linker optimizations Pthread library Windows (TlsAlloc, TlsGetValue,... ) Etc. 19 / 21

20 References 1 ELF Handling For Thread-Local 2 musl C standard library 3 GNU C Library 20 / 21

21 Questions? Contact: Figure: And suddenly / 21

Better signal handling with Clang. Alpha Abdoulaye. Introduction. Issues. Clang. EPITA Systems/Security Laboratory (LSE) November 14, 2017

Better signal handling with Clang. Alpha Abdoulaye. Introduction. Issues. Clang. EPITA Systems/Security Laboratory (LSE) November 14, 2017 EPITA Systems/Security Laboratory (LSE) November 14, 2017 1 / 19 2 / 19 Signals 101 (1/4) static void handler(int signum) { char test[] = "TEST\n"; write(stdout_fileno, test, sizeof(test)); int main(void)

More information

CS 220: Introduction to Parallel Computing. Condition Variables. Lecture 24

CS 220: Introduction to Parallel Computing. Condition Variables. Lecture 24 CS 220: Introduction to Parallel Computing Condition Variables Lecture 24 Remember: Creating a Thread int pthread_create( pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void *),

More information

ELF Handling For Thread-Local Storage. VE Architecture Processor Supplement

ELF Handling For Thread-Local Storage. VE Architecture Processor Supplement ELF Handling For Thread-Local Storage VE Architecture Processor Supplement Proprietary Notice The information disclosed in this document is the property of NEC Corporation (NEC) and/or its licensors.

More information

pthreads CS449 Fall 2017

pthreads CS449 Fall 2017 pthreads CS449 Fall 2017 POSIX Portable Operating System Interface Standard interface between OS and program UNIX-derived OSes mostly follow POSIX Linux, macos, Android, etc. Windows requires separate

More information

ELF Handling For Thread-Local Storage

ELF Handling For Thread-Local Storage ELF Handling For Thread-Local Storage Ulrich Drepper drepper@gmail.com Version 0.21 August 22, 2013 Based on: Intel Itanium Processorspecific Application Binary Interface, May 2001, Document Number: 245370-003

More information

Q1: /8 Q2: /30 Q3: /30 Q4: /32. Total: /100

Q1: /8 Q2: /30 Q3: /30 Q4: /32. Total: /100 ECE 2035(A) Programming for Hardware/Software Systems Fall 2013 Exam Three November 20 th 2013 Name: Q1: /8 Q2: /30 Q3: /30 Q4: /32 Total: /100 1/10 For functional call related questions, let s assume

More information

My ld.so. Version 1 5 December Epita systems/security laboratory 2018

My ld.so. Version 1 5 December Epita systems/security laboratory 2018 My ld.so Version 1 5 December 2016 Epita systems/security laboratory 2018 1 I Copyright This document is for internal use only at EPITA http://www.epita.fr/. Copyright 2016/2017

More information

CS-345 Operating Systems. Tutorial 2: Grocer-Client Threads, Shared Memory, Synchronization

CS-345 Operating Systems. Tutorial 2: Grocer-Client Threads, Shared Memory, Synchronization CS-345 Operating Systems Tutorial 2: Grocer-Client Threads, Shared Memory, Synchronization Threads A thread is a lightweight process A thread exists within a process and uses the process resources. It

More information

Link 3. Symbols. Young W. Lim Mon. Young W. Lim Link 3. Symbols Mon 1 / 42

Link 3. Symbols. Young W. Lim Mon. Young W. Lim Link 3. Symbols Mon 1 / 42 Link 3. Symbols Young W. Lim 2017-09-11 Mon Young W. Lim Link 3. Symbols 2017-09-11 Mon 1 / 42 Outline 1 Linking - 3. Symbols Based on Symbols Symbol Tables Symbol Table Examples main.o s symbol table

More information

CSE 333 SECTION 9. Threads

CSE 333 SECTION 9. Threads CSE 333 SECTION 9 Threads HW4 How s HW4 going? Any Questions? Threads Sequential execution of a program. Contained within a process. Multiple threads can exist within the same process. Every process starts

More information

CSci 4061 Introduction to Operating Systems. (Threads-POSIX)

CSci 4061 Introduction to Operating Systems. (Threads-POSIX) CSci 4061 Introduction to Operating Systems (Threads-POSIX) How do I program them? General Thread Operations Create/Fork Allocate memory for stack, perform bookkeeping Parent thread creates child threads

More information

CSE 333 SECTION 3. POSIX I/O Functions

CSE 333 SECTION 3. POSIX I/O Functions CSE 333 SECTION 3 POSIX I/O Functions Administrivia Questions (?) HW1 Due Tonight Exercise 7 due Monday (out later today) POSIX Portable Operating System Interface Family of standards specified by the

More information

EE458 - Embedded Systems Lecture 4 Embedded Devel.

EE458 - Embedded Systems Lecture 4 Embedded Devel. EE458 - Embedded Lecture 4 Embedded Devel. Outline C File Streams References RTC: Chapter 2 File Streams man pages 1 Cross-platform Development Environment 2 Software available on the host system typically

More information

POLITECNICO DI TORINO III Facoltà di Ingegneria dell Informazione INDUSTRIAL NETWORKS AND REAL-TIME OPERATING SYSTEMS.

POLITECNICO DI TORINO III Facoltà di Ingegneria dell Informazione INDUSTRIAL NETWORKS AND REAL-TIME OPERATING SYSTEMS. POLITECNICO DI TORINO III Facoltà di Ingegneria dell Informazione INDUSTRIAL NETWORKS AND REAL-TIME OPERATING SYSTEMS LAB 3 All Team No delivery in the laboratory. Do the exercises at home and deliver

More information

Memory management. Johan Montelius KTH

Memory management. Johan Montelius KTH Memory management Johan Montelius KTH 2017 1 / 22 C program # include int global = 42; int main ( int argc, char * argv []) { if( argc < 2) return -1; int n = atoi ( argv [1]); int on_stack

More information

Unix. Threads & Concurrency. Erick Fredj Computer Science The Jerusalem College of Technology

Unix. Threads & Concurrency. Erick Fredj Computer Science The Jerusalem College of Technology Unix Threads & Concurrency Erick Fredj Computer Science The Jerusalem College of Technology 1 Threads Processes have the following components: an address space a collection of operating system state a

More information

Thread Fundamentals. CSCI 315 Operating Systems Design 1

Thread Fundamentals. CSCI 315 Operating Systems Design 1 Thread Fundamentals Notice: This set of slides is based on the notes by Professor Perrone of Bucknell and the textbook authors Silberschatz, Galvin, and Gagne, as well as the tutorial by Blaise Barney

More information

Multithreading Programming II

Multithreading Programming II Multithreading Programming II Content Review Multithreading programming Race conditions Semaphores Thread safety Deadlock Review: Resource Sharing Access to shared resources need to be controlled to ensure

More information

Threads. Threads (continued)

Threads. Threads (continued) Threads A thread is an alternative model of program execution A process creates a thread through a system call Thread operates within process context Use of threads effectively splits the process state

More information

CS510 Operating System Foundations. Jonathan Walpole

CS510 Operating System Foundations. Jonathan Walpole CS510 Operating System Foundations Jonathan Walpole Threads & Concurrency 2 Why Use Threads? Utilize multiple CPU s concurrently Low cost communication via shared memory Overlap computation and blocking

More information

POSIX Semaphores. Operations on semaphores (taken from the Linux man page)

POSIX Semaphores. Operations on semaphores (taken from the Linux man page) POSIX Semaphores A variable of type sem_t Example Declaration of a semaphore sem_t sem; Operations on semaphores (taken from the Linux man page) int sem_init(sem_t *sem, int pshared, unsigned int value);

More information

CS F-MID Midterm October 25, 2001

CS F-MID Midterm October 25, 2001 Name (Last, First): This exam consists of 5 questions on 9 pages; be sure you have the entire exam before starting. The point value of each question is indicated at its beginning; the entire exam has 100

More information

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto Ricardo Rocha Department of Computer Science Faculty of Sciences University of Porto For more information please consult Advanced Programming in the UNIX Environment, 3rd Edition, W. Richard Stevens and

More information

What is concurrency? Concurrency. What is parallelism? concurrency vs parallelism. Concurrency: (the illusion of) happening at the same time.

What is concurrency? Concurrency. What is parallelism? concurrency vs parallelism. Concurrency: (the illusion of) happening at the same time. What is concurrency? Concurrency Johan Montelius KTH 2017 Concurrency: (the illusion of) happening at the same time. A property of the programing model. Why would we want to do things concurrently? What

More information

Concurrency. Johan Montelius KTH

Concurrency. Johan Montelius KTH Concurrency Johan Montelius KTH 2017 1 / 32 What is concurrency? 2 / 32 What is concurrency? Concurrency: (the illusion of) happening at the same time. 2 / 32 What is concurrency? Concurrency: (the illusion

More information

Lowering and Backend in libfirm

Lowering and Backend in libfirm 1 Lowering and Backend in libfirm Saarland University 20. Januar 2012 2 Necessary Preparations for the Backend No unreachable code No Bad nodes Create vtables Lower Sels to address calculations/vtable

More information

CS333 Intro to Operating Systems. Jonathan Walpole

CS333 Intro to Operating Systems. Jonathan Walpole CS333 Intro to Operating Systems Jonathan Walpole Threads & Concurrency 2 Threads Processes have the following components: - an address space - a collection of operating system state - a CPU context or

More information

CS240: Programming in C. Lecture 18: PThreads

CS240: Programming in C. Lecture 18: PThreads CS240: Programming in C Lecture 18: PThreads Thread Creation Initially, your main() program comprises a single, default thread. pthread_create creates a new thread and makes it executable. This routine

More information

Creating Threads. Programming Details. COMP750 Distributed Systems

Creating Threads. Programming Details. COMP750 Distributed Systems Creating Threads Programming Details COMP750 Distributed Systems Thread and Process Creation Processes can be created on Unix systems in C or C++ using the fork() function. Threads can be created in C

More information

CSEN 602-Operating Systems, Spring 2018 Practice Assignment 2 Solutions Discussion:

CSEN 602-Operating Systems, Spring 2018 Practice Assignment 2 Solutions Discussion: CSEN 602-Operating Systems, Spring 2018 Practice Assignment 2 Solutions Discussion: 10.2.2018-15.2.2018 Exercise 2-1: Reading Read sections 2.1 (except 2.1.7), 2.2.1 till 2.2.5. 1 Exercise 2-2 In Fig.1,

More information

Section 4: Threads CS162. September 15, Warmup Hello World Vocabulary 2

Section 4: Threads CS162. September 15, Warmup Hello World Vocabulary 2 CS162 September 15, 2016 Contents 1 Warmup 2 1.1 Hello World............................................ 2 2 Vocabulary 2 3 Problems 3 3.1 Join................................................ 3 3.2 Stack

More information

Chapter 4 Concurrent Programming

Chapter 4 Concurrent Programming Chapter 4 Concurrent Programming 4.1. Introduction to Parallel Computing In the early days, most computers have only one processing element, known as the Central Processing Unit (CPU). Due to this hardware

More information

CSC209H Lecture 11. Dan Zingaro. March 25, 2015

CSC209H Lecture 11. Dan Zingaro. March 25, 2015 CSC209H Lecture 11 Dan Zingaro March 25, 2015 Level- and Edge-Triggering (Kerrisk 63.1.1) When is an FD ready? Two answers: Level-triggered: when an operation will not block (e.g. read will not block),

More information

pthreads Announcement Reminder: SMP1 due today Reminder: Please keep up with the reading assignments (see class webpage)

pthreads Announcement Reminder: SMP1 due today Reminder: Please keep up with the reading assignments (see class webpage) pthreads 1 Announcement Reminder: SMP1 due today Reminder: Please keep up with the reading assignments (see class webpage) 2 1 Thread Packages Kernel thread packages Implemented and supported at kernel

More information

Threads. studykorner.org

Threads. studykorner.org Threads Thread Subpart of a process Basic unit of CPU utilization Smallest set of programmed instructions, can be managed independently by OS No independent existence (process dependent) Light Weight Process

More information

CS510 Operating System Foundations. Jonathan Walpole

CS510 Operating System Foundations. Jonathan Walpole CS510 Operating System Foundations Jonathan Walpole The Process Concept 2 The Process Concept Process a program in execution Program - description of how to perform an activity instructions and static

More information

ECEN 449 Microprocessor System Design. Review of C Programming

ECEN 449 Microprocessor System Design. Review of C Programming ECEN 449 Microprocessor System Design Review of C Programming 1 Objectives of this Lecture Unit Review C programming basics Refresh es programming g skills s 2 1 Basic C program structure # include

More information

CSE 333 SECTION 3. POSIX I/O Functions

CSE 333 SECTION 3. POSIX I/O Functions CSE 333 SECTION 3 POSIX I/O Functions Administrivia Questions (?) HW1 Due Tonight HW2 Due Thursday, July 19 th Midterm on Monday, July 23 th 10:50-11:50 in TBD (And regular exercises in between) POSIX

More information

Global variables and resources are shared between threads within the same process. Each thread has its own stack and program counter (see Fig 2-7).

Global variables and resources are shared between threads within the same process. Each thread has its own stack and program counter (see Fig 2-7). Threads One way to reduce context switch time is to run lightweight processes within the same address space. This abstraction is often called a thread. Look at Figure 2-6. Global variables and resources

More information

Synchronization and Semaphores. Copyright : University of Illinois CS 241 Staff 1

Synchronization and Semaphores. Copyright : University of Illinois CS 241 Staff 1 Synchronization and Semaphores Copyright : University of Illinois CS 241 Staff 1 Synchronization Primatives Counting Semaphores Permit a limited number of threads to execute a section of the code Binary

More information

CS 3305 Intro to Threads. Lecture 6

CS 3305 Intro to Threads. Lecture 6 CS 3305 Intro to Threads Lecture 6 Introduction Multiple applications run concurrently! This means that there are multiple processes running on a computer Introduction Applications often need to perform

More information

CS 471 Operating Systems. Yue Cheng. George Mason University Fall 2017

CS 471 Operating Systems. Yue Cheng. George Mason University Fall 2017 CS 471 Operating Systems Yue Cheng George Mason University Fall 2017 1 Review: Sync Terminology Worksheet 2 Review: Semaphores 3 Semaphores o Motivation: Avoid busy waiting by blocking a process execution

More information

Synchronization and Semaphores. Copyright : University of Illinois CS 241 Staff 1

Synchronization and Semaphores. Copyright : University of Illinois CS 241 Staff 1 Synchronization and Semaphores Copyright : University of Illinois CS 241 Staff 1 Synchronization Primatives Counting Semaphores Permit a limited number of threads to execute a section of the code Binary

More information

Compile the Hello World program

Compile the Hello World program OS Project1 1 Hello World Writing a Hello World program #include header.h main ( int argc, char *argv[] ) { printf( Hello World!\n ); } Compile the Hello World program > gcc helloworld.c o helloworld 2

More information

Section 3: File I/O, JSON, Generics. Meghan Cowan

Section 3: File I/O, JSON, Generics. Meghan Cowan Section 3: File I/O, JSON, Generics Meghan Cowan POSIX Family of standards specified by the IEEE Maintains compatibility across variants of Unix-like OS Defines API and standards for basic I/O: file, terminal

More information

CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Sample Midterm Exam Questions (document version 1.1)

CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Sample Midterm Exam Questions (document version 1.1) CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Sample Midterm Exam Questions (document version 1.1) Overview The midterm exam will be in class on Monday, March 28, 2016 from 10:00-11:45AM

More information

ECE 598 Advanced Operating Systems Lecture 23

ECE 598 Advanced Operating Systems Lecture 23 ECE 598 Advanced Operating Systems Lecture 23 Vince Weaver http://web.eece.maine.edu/~vweaver vincent.weaver@maine.edu 21 April 2016 Don t forget HW#9 Midterm next Thursday Announcements 1 Process States

More information

COMP1917 Computing 1 Written Exam Sample Questions

COMP1917 Computing 1 Written Exam Sample Questions COMP1917 Computing 1 Written Exam Sample Questions Note: these sample questions are intended to provide examples of a certain style of question which did not occur in the tutorial or laboratory exercises,

More information

SOFTWARE Ph.D. Qualifying Exam Spring Consider the following C program which consists of two function definitions including the main function.

SOFTWARE Ph.D. Qualifying Exam Spring Consider the following C program which consists of two function definitions including the main function. (i) (5 pts.) SOFTWARE Ph.D. Qualifying Exam Spring 2018 Consider the following C program which consists of two function definitions including the main function. #include int g(int z) { int y

More information

POSIX threads CS 241. February 17, Copyright University of Illinois CS 241 Staff

POSIX threads CS 241. February 17, Copyright University of Illinois CS 241 Staff POSIX threads CS 241 February 17, 2012 Copyright University of Illinois CS 241 Staff 1 Recall: Why threads over processes? Creating a new process can be expensive Time A call into the operating system

More information

CS 3214 Midterm. Here is the distribution of midterm scores for both sections (combined). Midterm Scores 20. # Problem Points Score

CS 3214 Midterm. Here is the distribution of midterm scores for both sections (combined). Midterm Scores 20. # Problem Points Score CS 3214 Here is the distribution of midterm scores for both sections (combined). Scores 20 18 16 14 12 10 8 6 4 2 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90 95 100 0 The overall average was 58 points.

More information

CS C Primer. Tyler Szepesi. January 16, 2013

CS C Primer. Tyler Szepesi. January 16, 2013 January 16, 2013 Topics 1 Why C? 2 Data Types 3 Memory 4 Files 5 Endianness 6 Resources Why C? C is exteremely flexible and gives control to the programmer Allows users to break rigid rules, which are

More information

Threads. lightweight processes

Threads. lightweight processes Threads lightweight processes 1 Motivation Processes are expensive to create. It takes quite a bit of time to switch between processes Communication between processes must be done through an external kernel

More information

CS 107 Lecture 18: GCC and Make

CS 107 Lecture 18: GCC and Make S 107 Lecture 18: G and Make Monday, March 12, 2018 omputer Systems Winter 2018 Stanford University omputer Science Department Lecturers: Gabbi Fisher and hris hute Today's Topics 1. What really happens

More information

Incremental Linking with Gold

Incremental Linking with Gold Incremental Linking with Gold Linux Foundation Collaboration Summit April 5, 2012 Cary Coutant This work is licensed under the Creative Commons Attribution-NoDerivs 3.0 Unported License. To view a copy

More information

Recitation Processes, Signals,UNIX error handling

Recitation Processes, Signals,UNIX error handling 15-213 Recitation Processes, Signals,UNIX error handling Section X - TA name 18 March 2019 Bryant and O Hallaron, Computer Systems: A Programmer s Perspective, Third Edition 1 Outline Logistics Process

More information

CS240: Programming in C

CS240: Programming in C CS240: Programming in C Lecture 10: Review - Structures and Memory Allocation Unions Recap: Structures Holds multiple items as a unit Treated as scalar in C: can be returned from functions, passed to functions

More information

NAG Library Function Document nag_chain_sort (m01cuc)

NAG Library Function Document nag_chain_sort (m01cuc) m01 Sorting and Searching NAG Library Function Document nag_chain_sort () 1 Purpose nag_chain_sort () rearranges the links of a linked list into ascending or descending order of a specified data field

More information

ECEN 449 Microprocessor System Design. Review of C Programming. Texas A&M University

ECEN 449 Microprocessor System Design. Review of C Programming. Texas A&M University ECEN 449 Microprocessor System Design Review of C Programming 1 Objectives of this Lecture Unit Review C programming basics Refresh programming skills 2 Basic C program structure # include main()

More information

#include <stdio.h> int main() { char s[] = Hsjodi, *p; for (p = s + 5; p >= s; p--) --*p; puts(s); return 0;

#include <stdio.h> int main() { char s[] = Hsjodi, *p; for (p = s + 5; p >= s; p--) --*p; puts(s); return 0; 1. Short answer questions: (a) Compare the typical contents of a module s header file to the contents of a module s implementation file. Which of these files defines the interface between a module and

More information

Section 4: Threads and Context Switching

Section 4: Threads and Context Switching CS162 September 19-20, 2017 Contents 1 Warmup 2 1.1 Hello World............................................ 2 2 Vocabulary 2 3 Problems 3 3.1 Join................................................ 3 3.2

More information

CS140 - Summer Handout #8

CS140 - Summer Handout #8 CS1 - Summer 2 - Handout # Today s Big Adventure Linking f.c gcc f.s as c.c gcc c.s as c.o how to name and refer to things that don t exist yet how to merge separate name spaces into a cohesive whole Readings

More information

Recitation 14: Proxy Lab Part 2

Recitation 14: Proxy Lab Part 2 Recitation 14: Proxy Lab Part 2 Instructor: TA(s) 1 Outline Proxylab Threading Threads and Synchronization 2 ProxyLab ProxyLab is due in 1 week. No grace days Late days allowed (-15%) Make sure to submit

More information

CMPSC 311- Introduction to Systems Programming Module: Concurrency

CMPSC 311- Introduction to Systems Programming Module: Concurrency CMPSC 311- Introduction to Systems Programming Module: Concurrency Professor Patrick McDaniel Fall 2013 Sequential Programming Processing a network connection as it arrives and fulfilling the exchange

More information

Linux Boot Process. Nassim Eddequiouaq LSE Summer Week 2015

Linux Boot Process. Nassim Eddequiouaq LSE Summer Week 2015 Linux Boot Process Nassim Eddequiouaq LSE Summer Week 2015 Why does boot matter? No boot No boot! OS uses evolving hardware features Faster and more secure please What does Linux need? Hardware initialization

More information

CS 261 Fall Mike Lam, Professor. Threads

CS 261 Fall Mike Lam, Professor. Threads CS 261 Fall 2017 Mike Lam, Professor Threads Parallel computing Goal: concurrent or parallel computing Take advantage of multiple hardware units to solve multiple problems simultaneously Motivations: Maintain

More information

Recitation 8: Tshlab + VM

Recitation 8: Tshlab + VM Recitation 8: Tshlab + VM Instructor: TAs 1 Outline Labs Signals IO Virtual Memory 2 TshLab and MallocLab TshLab due Tuesday MallocLab is released immediately after Start early Do the checkpoint first,

More information

OPERATING SYSTEMS 3rd Homework

OPERATING SYSTEMS 3rd Homework OPERATING SYSTEMS 3rd Homework Due on: Final Exam Day Submission: Send your homework through the e-mail: kurt@ce.itu.edu.tr In this homework, you will Learn to create threads Learn how to manage resources

More information

Parallelization Primer. by Christian Bienia March 05, 2007

Parallelization Primer. by Christian Bienia March 05, 2007 Parallelization Primer by Christian Bienia March 05, 2007 What is Parallelization? Answer: The creation of a new algorithm! Trivial case: Run sequential algorithm on multiple CPUs, throw locks around shared

More information

ECE 598 Advanced Operating Systems Lecture 10

ECE 598 Advanced Operating Systems Lecture 10 ECE 598 Advanced Operating Systems Lecture 10 Vince Weaver http://web.eece.maine.edu/~vweaver vincent.weaver@maine.edu 22 February 2018 Announcements Homework #5 will be posted 1 Blocking vs Nonblocking

More information

Assignment 2 Group 5 Simon Gerber Systems Group Dept. Computer Science ETH Zurich - Switzerland

Assignment 2 Group 5 Simon Gerber Systems Group Dept. Computer Science ETH Zurich - Switzerland Assignment 2 Group 5 Simon Gerber Systems Group Dept. Computer Science ETH Zurich - Switzerland t Your task Write a simple file server Client has to be implemented in Java Server has to be implemented

More information

Programming Languages

Programming Languages Programming Languages Dr. Michael Petter WS 2016/17 Exercise Sheet 3 Assignment 3.1 Lockfree vs. locked programming The purpose of the following exercises is to get acquainted with the pthreads library,

More information

Threads. What is a thread? Motivation. Single and Multithreaded Processes. Benefits

Threads. What is a thread? Motivation. Single and Multithreaded Processes. Benefits CS307 What is a thread? Threads A thread is a basic unit of CPU utilization contains a thread ID, a program counter, a register set, and a stack shares with other threads belonging to the same process

More information

The course that gives CMU its Zip! Concurrency I: Threads April 10, 2001

The course that gives CMU its Zip! Concurrency I: Threads April 10, 2001 15-213 The course that gives CMU its Zip! Concurrency I: Threads April 10, 2001 Topics Thread concept Posix threads (Pthreads) interface Linux Pthreads implementation Concurrent execution Sharing data

More information

Assignment #2. Problem 2.1: airplane synchronization

Assignment #2. Problem 2.1: airplane synchronization Computer Architecture and Operating Systems Course: 320202 Jacobs University Bremen Date: 2009-02-25 Dr. Jürgen Schönwälder, Alen Stojanov Deadline: 2009-03-06 Assignment #2 Problem 2.1: airplane synchronization

More information

SOFTWARE Ph.D. Qualifying Exam Spring Consider the following C program, which includes three function definitions, including the main function.

SOFTWARE Ph.D. Qualifying Exam Spring Consider the following C program, which includes three function definitions, including the main function. (i) (6 pts.) SOFTWARE Ph.D. Qualifying Exam Spring 2017 Consider the following C program, which includes three function definitions, including the main function. #include #include

More information

CS , Spring 2002 Final Exam

CS , Spring 2002 Final Exam Andrew login ID: Full Name: CS 15-213, Spring 2002 Final Exam May 9, 2002 Instructions: Make sure that your exam is not missing any sheets, then write your full name and Andrew login ID on the front. Write

More information

RCU. ò Walk through two system calls in some detail. ò Open and read. ò Too much code to cover all FS system calls. ò 3 Cases for a dentry:

RCU. ò Walk through two system calls in some detail. ò Open and read. ò Too much code to cover all FS system calls. ò 3 Cases for a dentry: Logical Diagram VFS, Continued Don Porter CSE 506 Binary Formats RCU Memory Management File System Memory Allocators System Calls Device Drivers Networking Threads User Today s Lecture Kernel Sync CPU

More information

CS241 Computer Organization Spring Data Alignment

CS241 Computer Organization Spring Data Alignment CS241 Computer Organization Spring 2015 Data Alignment 3-26 2015 Outline! Data Alignment! C: pointers to functions! Memory Layout Read: CS:APP2 Chapter 3, sections 3.8-3.9 Quiz next Thursday, April 2nd

More information

mmalloc The GNU memory-mapped malloc package Fred Fish Cygnus Support Mike Haertel Free Software Foundation

mmalloc The GNU memory-mapped malloc package Fred Fish Cygnus Support Mike Haertel Free Software Foundation mmalloc The GNU memory-mapped malloc package Fred Fish Cygnus Support Mike Haertel Free Software Foundation Cygnus Support fnf@cygnus.com MMALLOC, the GNU memory-mapped malloc package, Revision: 1.4 TEXinfo

More information

VFS, Continued. Don Porter CSE 506

VFS, Continued. Don Porter CSE 506 VFS, Continued Don Porter CSE 506 Logical Diagram Binary Formats Memory Allocators System Calls Threads User Today s Lecture Kernel RCU File System Networking Sync Memory Management Device Drivers CPU

More information

CS 3214 Computer Systems. Do not start the test until instructed to do so! printed

CS 3214 Computer Systems. Do not start the test until instructed to do so! printed Instructions: Print your name in the space provided below. This examination is closed book and closed notes, aside from the permitted one-page formula sheet. No calculators or other computing devices may

More information

Multithreaded Programming

Multithreaded Programming Multithreaded Programming The slides do not contain all the information and cannot be treated as a study material for Operating System. Please refer the text book for exams. September 4, 2014 Topics Overview

More information

This resource describes how to program the myrio in C to perform timer interrupts.

This resource describes how to program the myrio in C to perform timer interrupts. Resource 07 Timer interrupts This resource describes how to program the myrio in C to perform timer interrupts. C.07.1 Main thread: background Initializing the timer interrupt is similar to initializing

More information

CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Sample Final Exam Questions (document version 1.1) WITH SELECTED SOLUTIONS

CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Sample Final Exam Questions (document version 1.1) WITH SELECTED SOLUTIONS CSCI 4210 Operating Systems CSCI 6140 Computer Operating Systems Sample Final Exam Questions (document version 1.1) WITH SELECTED SOLUTIONS Overview The final exam will be on Tuesday, May 17, 2016 from

More information

From Website:

From Website: From Website: http://resources.infosecinstitute.com/hello-world-c-assembly-object-file-and-executable/ Hello World: C, Assembly, Object File and Executable By Dejan Lukan January 7th, 2013 Introduction

More information

Lecture 4. Threads vs. Processes. fork() Threads. Pthreads. Threads in C. Thread Programming January 21, 2005

Lecture 4. Threads vs. Processes. fork() Threads. Pthreads. Threads in C. Thread Programming January 21, 2005 Threads vs. Processes Lecture 4 Thread Programming January 21, 2005 fork() is expensive (time, memory) Interprocess communication is hard. Threads are lightweight processes: one process can contain several

More information

Self-referential Structures and Linked List. Programming and Data Structure 1

Self-referential Structures and Linked List. Programming and Data Structure 1 Self-referential Structures and Linked List Programming and Data Structure 1 Linked List :: Basic Concepts A list refers to a set of items organized sequentially. An array is an example of a list. The

More information

Objectives. External declarations Pointers Dynamic data structures using pointers Function pointers

Objectives. External declarations Pointers Dynamic data structures using pointers Function pointers TOS Arno Puder 1 Objectives Basic knowledge of C and C++ should have been taught in an introductory class on programming In the following we focus on some finer points of C: External declarations Pointers

More information

POSIX Threads. HUJI Spring 2011

POSIX Threads. HUJI Spring 2011 POSIX Threads HUJI Spring 2011 Why Threads The primary motivation for using threads is to realize potential program performance gains and structuring. Overlapping CPU work with I/O. Priority/real-time

More information

Assembler Programming. Lecture 10

Assembler Programming. Lecture 10 Assembler Programming Lecture 10 Lecture 10 Mixed language programming. C and Basic to MASM Interface. Mixed language programming Combine Basic, C, Pascal with assembler. Call MASM routines from HLL program.

More information

Agenda. Process vs Thread. ! POSIX Threads Programming. Picture source:

Agenda. Process vs Thread. ! POSIX Threads Programming. Picture source: Agenda POSIX Threads Programming 1 Process vs Thread process thread Picture source: https://computing.llnl.gov/tutorials/pthreads/ 2 Shared Memory Model Picture source: https://computing.llnl.gov/tutorials/pthreads/

More information

Computer Systems Assignment 2: Fork and Threads Package

Computer Systems Assignment 2: Fork and Threads Package Autumn Term 2018 Distributed Computing Computer Systems Assignment 2: Fork and Threads Package Assigned on: October 5, 2018 Due by: October 12, 2018 1 Understanding fork() and exec() Creating new processes

More information

Light-Weight Processes: Dissecting Linux Threads

Light-Weight Processes: Dissecting Linux Threads Operating Systems (Fall/Winter 2018) Light-Weight Processes: Dissecting Linux Threads Yajin Zhou (http://yajin.org) Zhejiang University source: https://opensourceforu.com/2011/08/light-weight-processes-dissecting-linux-threads/

More information

CSCI4430 Data Communication and Computer Networks. Pthread Programming. ZHANG, Mi Jan. 26, 2017

CSCI4430 Data Communication and Computer Networks. Pthread Programming. ZHANG, Mi Jan. 26, 2017 CSCI4430 Data Communication and Computer Networks Pthread Programming ZHANG, Mi Jan. 26, 2017 Outline Introduction What is Multi-thread Programming Why to use Multi-thread Programming Basic Pthread Programming

More information

Link 8. Dynamic Linking

Link 8. Dynamic Linking Link 8. Dynamic Linking Young W. Lim 2018-12-27 Thr Young W. Lim Link 8. Dynamic Linking 2018-12-27 Thr 1 / 66 Outline 1 Linking - 8. Dynamic Linking Based on Dynamic linking with a shared library example

More information

CMPSC 311- Introduction to Systems Programming Module: Concurrency

CMPSC 311- Introduction to Systems Programming Module: Concurrency CMPSC 311- Introduction to Systems Programming Module: Concurrency Professor Patrick McDaniel Fall 2013 Sequential Programming Processing a network connection as it arrives and fulfilling the exchange

More information

Ideas to improve glibc and Kernel interaction. Adhemerval Zanella

Ideas to improve glibc and Kernel interaction. Adhemerval Zanella Ideas to improve glibc and Kernel interaction Adhemerval Zanella Overview This is RFC session to check kernel features glibc lacks (such as termios2), some features glibc

More information

Midterm. Median: 56, Mean: "midterm.data" using 1:2 1 / 37

Midterm. Median: 56, Mean: midterm.data using 1:2 1 / 37 30 Midterm "midterm.data" using 1:2 25 20 15 10 5 0 0 20 40 60 80 100 Median: 56, Mean: 53.13 1 / 37 Today s Big Adventure f.c gcc f.s as f.o c.c gcc c.s as c.o ld a.out How to name and refer to things

More information

Assignment 3 tips. OS/161 Kernel. Theoretical Typical Address Space Layout. Real R3000 Address Space Layout. Kernel Address Space Layout

Assignment 3 tips. OS/161 Kernel. Theoretical Typical Address Space Layout. Real R3000 Address Space Layout. Kernel Address Space Layout ssignment tips Kernel Stack Virtual ddress Shared Libraries SS (heap) Data Text (Code) 8 0 Theoretical Typical ddress Layout Stack region is at top, and can grow down Heap has free space to grow up Text

More information