quartz/content/notes/18-processes-sharing-and-threads.md
2022-10-12 09:44:42 +13:00

1.0 KiB

title aliases tags
18-processes-sharing-and-threads
cosc204
lecture

Shared memory for processes

linux memory space layout

Can't assume all variables are initally zero. OS decide which process maps who which physical address

memory mapping mmap is a family of system calls:

  • allow two processes to share some region of their memory space.
  • achieved by creating a memory region that can be shared by other processes

map diagram

mmap examples

shared memory by two processes mapping to the same file or using fork() after mmap()

random_fd = open("/home/hzy/test/zero", O_RDWR);
ptr = mmap(NULL, 10240, PROT_READ|PROT_WRITE,
	MAP_SHARED | MAP_FILE, random_fd, 0);

private mapping is often ysed to set up new memory sections.

fd = open("mmap_test_file", O_RDWR); p
tr = mmap(NULL, 10240, PROT_READ|PROT_WRITE, 
	MAP_PRIVATE|MAP_FILE, fd, 0);

Threads

Lightweight process - shares everything except the stack