ComputerFundamentals Logical AddressSpace (2/2)

23
Computer Fundamentals Logical Address Space (2/2) Grau en Intel·ligència Artificial Xavier Martorell Xavi Verdú Facultat d’Informàtica de Barcelona (FIB) Universitat Politècnica de Catalunya (UPC) 2021-2022 Q1

Transcript of ComputerFundamentals Logical AddressSpace (2/2)

Page 1: ComputerFundamentals Logical AddressSpace (2/2)

Computer FundamentalsLogical Address Space (2/2)

Grau en Intel·ligència Artificial

Xavier MartorellXavi Verdú

Facultat d’Informàtica de Barcelona (FIB)Universitat Politècnica de Catalunya (UPC)

2021-2022 Q1

Page 2: ComputerFundamentals Logical AddressSpace (2/2)

Creative Commons License

This work is under a Creative Commons Attribution 4.0 Unported License

The details of this license are publicly available athttps://creativecommons.org/licenses/by-nc-nd/4.0

2

Page 3: ComputerFundamentals Logical AddressSpace (2/2)

Table of Contents

• This lesson consists of three main parts1) Basic Concepts2) Libraries and OS suport

3

Page 4: ComputerFundamentals Logical AddressSpace (2/2)

Libraries

• Library: a file that encapsulates a set of object files• Libraries grant independency

• A high-level code is independent of OS and Hw architecture, but …• … executables are created for a particular OS and Hw architecture

4

(sprintf.o)

(strlen.o)

(write.o)

Library…<sprintf>: {

…}…

…<write>: {

…}…

ObjectCode

(hello.o)

…call sprintf…call write…

Page 5: ComputerFundamentals Logical AddressSpace (2/2)

Types of Libraries

• Language Libraries• Bind a language to a particular OS, but independently of the hardware architecture• Provide functions of the programming language• Sometimes they are self-contained (e.g. math): independent of OS• Sometimes they request services to the OS (e.g. sprintf, cin, cout…)

• System Libraries• Bind an OS to a particular Hw architecture (independent of the high-level code)• Include functions that invoke services/routines of the OS (e.g. write, open, …)• Depends on the type of Operating System and the architecture of the CPU

• Examples of incompatibility: • Linux 32 vs 64 bits, CPU Intel vs ARM, Ubuntu vs OpenSUSE, …

5

Page 6: ComputerFundamentals Logical AddressSpace (2/2)

Global Picture

6

ObjectCode

(hello.o)

…call sprintf…call write…

…<sprintf>: {

…}…

…<write>: {

…}…

Ope

ratin

gSy

stem

Hard

war

e

LanguageLibrary

SystemLibrary

ObjectCode

(obj2.o)……call write…

Binary (executable) file

Page 7: ComputerFundamentals Logical AddressSpace (2/2)

Let’s assume an example

7

#include <unistd.h>#include <stdio.h>

int global = 4;

int main(int argc, char **argv){char buf[512];int num;

num = sprintf(buf, "Hello World %d!\n", global);write(1, buf, num);

return 0;}

High Level Language Codespecified in a file thatcannot be understood bythe CPU to be executedright awayHigh-Level

Code(hello.c)

• From high-level code to program execution

Page 8: ComputerFundamentals Logical AddressSpace (2/2)

Let’s assume an example

8

#include <unistd.h>#include <stdio.h>

int global = 4;

int main(int argc, char **argv){char buf[512];int num;

num = sprintf(buf, "Hello World %d!\n", global);write(1, buf, num);

return 0;}

Including Header Files

Global Variable

Local Variables

Calling to external functions

Header files contain requiredinformation for the compiler aboutexternal components used in thiscode, such as “sprintf” and “write” functions

Return the exit status of the program,Indicating success(0) or some failure(1)

Page 9: ComputerFundamentals Logical AddressSpace (2/2)

Static versus Dinamically linking

9

• Static linking• The codes of libraries are included INSIDE the executable• Waste of space (in disk when stored, and in memory when running)

• Different programs may use the same libraries• Static libraries: “.a” in UNIX-like OS; “.lib” in Windows-like OS

• Dynamic linking• The linking stage is delayed to run-time. Thus, the code is not included in the

program• Sharing libraries• Save space in both disk and memory

• Different programs can access to a shared library loaded in memory• Dynamic libraries: “.so” in UNIX-like OS; “.dll” in Windows-like OS

Page 10: ComputerFundamentals Logical AddressSpace (2/2)

Static linking

• Static compilation and linking phases

10

sda1

sda2

sda3

sda4

hello

L1sL2s

Static librariesArchives(lib*.a)

StaticExecutableBinary file

#include <unistd.h>#include <stdio.h>

int global = 4;

int main(int argc, char **argv){char buf[512];int num;

num = sprintf(buf, "Hello World %d!", global);write(1, buf, num);

return 0;}

Files in the disk

Page 11: ComputerFundamentals Logical AddressSpace (2/2)

Process with static libraries

11

Core

Core

Core

C

L2

L2

L2

L2

L3 RAM Node 0

Operating System LinuxWindows...

code data BSS

stack

Threadsstacks

I/O to devices, disks...

Virtual memory space (process)

Virtual memory space (OS)

Physical memory

code

data

Threadsstacks

Memory mapping(to OS and process)

hello

Logical addressesrefer to virtual memory addressesdue to the OS support

Files in the disk

Page 12: ComputerFundamentals Logical AddressSpace (2/2)

Dinamically linking

• Dynamic compilation and linking phases

12

#include <unistd.h>#include <stdio.h>

int global = 0;

int main(int argc, char **argv){char buf[512];int num;

num = sprintf(buf, "Hello World %d!", global);write(1, buf, num);

return 0;}

sda1

sda2

sda3

sda4

hello

L1L2

(Shared)ExecutableBinary file

Shared libraries(lib*.so)

Files in the disk

Page 13: ComputerFundamentals Logical AddressSpace (2/2)

Process with shared libraries (Dynamic linking)

13

Core

Core

Core

C

L2

L2

L2

L2

L3 RAM Node 0

Operating System LinuxWindows...

code

data

BSS

stack

sharedlibrary

L2

Threadsstacks

I/O to devices, disks...

Virtual memory space (process)

Virtual memory space (OS)

Physical memory

code

data

Threadsstacks

Memory mapping(to OS and process)

hello

L1L2

sharedlibrary

L1

Files in the disk

Page 14: ComputerFundamentals Logical AddressSpace (2/2)

OS Support

• Memory regions are private per process• In multiprogrammed systems (multiple processes

are alive at a time) the OS must protect mem regions• Contents usually are distributed in remote

physical memory locations

• The OS memory zone holds the kernel andall required internal data and routines

• The OS memory space NEEDS protection

14

Core

Core

Core

Core

L2L2L2L2

L3 RAM Node 1

Core

Core

Core

Core

L2L2L2L2

L3 RAM Node 0

Process 1

Process 3

Process 2

Process 5

Process 4

OS

Processes contents

0x00000000

0xFFFFFFFFPhysical memory

Page 15: ComputerFundamentals Logical AddressSpace (2/2)

Process Contents in Memory

• Stack: dynamic mem• Function arguments• Local Variables

• Shared libraries: Code, data…

• Heap: dynamic mem• Mem allocated at runtime

• Data: .bss & .data• Global variables

• Code: .text• Instructions

15

Core

Core

Core

Core

L2L2L2L2

L3 RAM Node 1

Core

Core

Core

Core

L2L2L2L2

L3 RAM Node 0

P1

P3

P2

P5

P4

OS

0x00000000

0xFFFFFFFF

Stack

Heap

Data

Code

0xFFFFFFFF

Shared libraries

0x00000000

Physical memory Virtual memory

Page 16: ComputerFundamentals Logical AddressSpace (2/2)

Syscalls related to Memory Management

• The Heap is mainly employed for dynamic data structures• E.g. Structures used only for a period of time, unknown memory size requirements,

allocated and deallocated often

• Syscalls related to heap management• Memory allocation

• malloc (C library)• new (C++ library)

• Memory deallocation• free (C library)• delete (C++ library)

• All above calls invoke a system call to modify the limit of the Heap Mem Zone (brk)

16

Page 17: ComputerFundamentals Logical AddressSpace (2/2)

Memory Allocation

• (type) malloc(int size); // C language• Returns the starting @ of the newly allocated size Bytes in the HEAP

• new type[size]; // C++ language• Returns the starting @ of the sizeof(type)*size Bytes in the HEAP

• Behavior• Before allocating @, it checks whether the HEAP has space enough to hold size bytes

• If not, the OS increases the limit of the HEAP (sbrk)• The HEAP size is increased by a configurable number of bytes to reduce the number of times it

has to be increased• The object memory zone is allocated in the HEAP following a placement algorithm

• Can group objects by their size… 17

Page 18: ComputerFundamentals Logical AddressSpace (2/2)

Memory Allocation

18

Stack

Heap

Data

Code

Stack

Data

Code

Starting statusAfter calling:int *ptr = (int) malloc(4*sizeof(int));

Stack

Heap

Data

Code

After calling:char *string = (char) malloc(2*sizeof(char));

2 chars2 Bytes

Page 19: ComputerFundamentals Logical AddressSpace (2/2)

Memory Deallocation

• free(pointer); // C language• delete [] pointer; // C++ language

• In both cases the memory zone pointed by the pointer is released

• Behavior• Deallocation of the memory zone pointed by the input parameter• The OS will consider to reduce or not the HEAP memory space• A pair of lists are maintained by malloc/new/free/delete

• List of objects allocated• List of objects deallocated (may be merged)

19

Page 20: ComputerFundamentals Logical AddressSpace (2/2)

Memory Deallocation

20

Stack

Heap

Data

Code

Stack

Data

Code

Starting statusAfter calling:free(string);

Stack

Heap

Data

Code

After calling:free(ptr);

Page 21: ComputerFundamentals Logical AddressSpace (2/2)

Final relation with physical memory

• Virtual memory• Split in pages (4KB usually, can be 2-4 MBytes)• A page can be

• Valid and present (in memory)• Valid and not present (in memory)• Invalid

• Physical memory• Split in page frames

• Same capacity as virtual pages• OS keeps information about

• Available frames• Busy frames 21

code data

Virtual memory space (virtual pages – 4 KB)

Physical memory space (page frames)

Core

Core

Core

Core

L2L2L2L

L3 RAM Node 0

Page 22: ComputerFundamentals Logical AddressSpace (2/2)

When Memory is exhausted…

• OS constantly checks memory availability (used vs free) of the system

• If the memory becomes exhausted (less than a given availability threshold) OS starts an alternative suport approach:

• Difference between page replacement (paging) and process replacement(swapping)

• Pages are selected->Written to the swap area [if modified]->Reallocate othervirtual pages

• Swap area: special memory area, usually in a storage device (e.g. disk) totemporary hold contents of the main memory that have not space enough

• It is considered as additional space to the physical memory22

Page 23: ComputerFundamentals Logical AddressSpace (2/2)

Bibliography

• Computer Systems – A Programmer’s perspective (3rd Edition)• Randal E. Bryant, David R. O’Hallaron, Person Education Limited, 2016

• https://discovery.upc.edu/permalink/34CSUC_UPC/11q3oqt/alma991004062589706711• Chapter 9

• Computer Organization and Design (5th Edition)• D. Patterson, J. Hennessy, and P. Alexander • http://cataleg.upc.edu/record=b1431482~S1*cat

• Several Chapters

23