1. Trang chủ
  2. » Luận Văn - Báo Cáo

Garbage collection

30 292 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Garbage collection
Thể loại Bài luận
Năm xuất bản 2010
Định dạng
Số trang 30
Dung lượng 204,59 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

C does not have any garbage collectors • Implementations available

Trang 3

• Mapping memory: mmap(), munmap() Useful for

Trang 4

• C does not have any garbage collectors

• Implementations available

• Types:

Trang 6

• Parallelism: Multiple computations are done

simultaneously

• Concurrency: Multiple computations that may be done in

parallel

• Concurrency vs Parallelism

Trang 7

• Process: An instance of a program that is being executed

in its own address space In POSIX systems, each

process maintains its own heap, stack, registers, file

• Thread: A light weight process that shares its address

space with others.In POSIX systems, each thread

maintains the bare essentials: registers, stack, signals

Communication:

Trang 8

• The main thread spawns multiple threads

• The thread may communicate with one another

Trang 9

Even in C, multithread programming may be accomplished in several ways

• Pthreads: POSIX C library

• OpenMP

• Intel threading building blocks

• Cilk (from CSAIL!)

• Grand central despatch

• CUDA (GPU)

• OpenCL (GPU/CPU)

Trang 10

f o r ( i n t i = 0 ; i <10; i ++)

do_something ( params [ i ] ) ;

f l o a t prev = 0 ;

f o r ( i n t i = 0 ; i <10; i ++) {

prev = c o m p l i c a t e d ( params [ i ] , prev ) ; }

Trang 11

• minimize use of global/static memory

• Scenario: T1(read),T2(read,write),T1(write) ,balance=600

• Scenario: T2(read),T1(read,write),T2(write) ,balance=450

Trang 14

const p t h r e a d _ a t t r _ t ∗ a t t r ,

void ∗(∗ s t a r t _ r o u t i n e ) ( void ∗ ) , void ∗ arg ) ;

• creates a new thread with the attributes specified by attr Default attributes are used if attr is NULL

• On success, stores the thread it into thread

• returns zero on success, non-zero on error

void pthread_exit(void ∗value_ptr);

• called implicitly when thread function exits

• analogous to exit()

Trang 16

I n main : c r e a t i n g t h r e a d 1 H e l l o World ! I t ’ s me, t h r e a d # 0 !

Trang 17

Figure: https://computing.llnl.gov/tutorials/pthreads

terminates

called thread

Other ways to synchronize: mutex,condition variables

© Lawrence Livermore National Laboratory All rights reserved This content is excluded from our Creative Commons license For more information, see http://ocw.mit.edu/fairuse

Trang 18

# de fi ne BLK_SIZE 1000

# de fi ne NTHREADS (NELEMENTS/ BLK_SIZE )

i n t main ( i n t argc , char ∗argv [ ] )

Trang 19

• Mutex (mutual exclusion) acts as a "lock" protecting access

to the shared resource

• Only one thread can "own" the mutex at a time Threads must take turns to lock the mutex

i n t p t h r e a d _ m u t e x _ d e s t r o y ( p t h r e a d _ m u t e x _ t ∗mutex ) ;

i n t p t h r e a d _ m u t e x _ i n i t ( p t h r e a d _ m u t e x _ t ∗ mutex ,

const p t h r e a d _ m u t e x a t t r _ t ∗ a t t r ) ;

t h r e a d _ m u t e x _ t mutex = PTHREAD_MUTEX_INITIALIZER ;

The macro PTHREAD_MUTEX_INITIALIZER

Trang 20

i n t p t h r e a d _ m u t e x _ t r y l o c k ( p t h r e a d _ m u t e x _ t ∗mutex ) ;

i n t pthread_mutex_unlock ( p t h r e a d _ m u t e x _ t ∗mutex ) ;

the function is blocked until it becomes available

currently locked the call will return immediately

Trang 23

Sometimes locking or unlocking is based on a run-time

condition (examples?).Without condition variables, program would have to poll the variable/condition continuously

Consumer:

(a) lock mutex on global item variable

(b) wait for (item>0) signal from producer (mutex unlocked

automatically)

(c) wake up when signalled (mutex locked again

automatically), unlock mutex and proceed

Producer:

(1) produce something

(2) Lock global item variable, update item

(3) signal waiting (threads)

(4) unlock mutex

Trang 24

i n t p t h r e a d _ c o n d _ i n i t ( p t h r e a d _ c o n d _ t ∗ cond , const p t h r e a d _ c o n d a t t r _ t ∗ a t t r ) ;

p t h r e a d _ c o n d _ t cond = PTHREAD_COND_INITIALIZER ;

default attributes are sed

Trang 25

i n t p t h r e a d _ c o n d _ i n i t ( p t h r e a d _ c o n d _ t ∗ cond , const p t h r e a d _ c o n d a t t r _ t ∗ a t t r ) ;

p t h r e a d _ c o n d _ t cond = PTHREAD_COND_INITIALIZER ;

default attributes are sed

Trang 26

blocks on a condition variable

• must be called with the mutex already locked otherwise behavior undefined

• automatically releases mutex

• upon successful return, the mutex will be automatically

locked again

• unblocks threads waiting on a condition variable

• both return 0 on success, non zero otherwise

Trang 28

{

p t h r e a d _ t cons_thread , p r o d _ t h r e a d ;

p t h r e a d _ c r e a t e (& p r o d _ t h r e a d , NULL , produce , NULL ) ;

p t h r e a d _ c r e a t e (& cons_thread , NULL , consume , NULL ) ;

Trang 29

• Parallel programming concepts

Trang 30

For information about citing these materials or our Terms of Use, visit: http://ocw.mit.edu/terms

Ngày đăng: 25/04/2013, 08:07

Xem thêm

TỪ KHÓA LIÊN QUAN

w