Adress Space

rokky·2023년 10월 16일
0

운영 체제

목록 보기
8/10

Memory Virtualization

  • 메모리 가상화가 뭐냐
    • OS는 physical memory를 가상화 한다.
    • OS는 각 프로세스가 전체 메모리를 사용한다는 착각을 일으키도록 만든다.

메모리 가상화 이전의 OS

  • 메모리에 하나의 프로세스만 Load한다.
    • 활용도와 효율성이 나빴다.

Multiprogramming and Time Sharing

  • 다양한 프로세스들을 메모리에 Load한다.
    • 하나를 짧은 시간동안 수행시킨다.
    • 메모리에 있는 프로세스들 사이에 switch를 준다.
    • 활용도와 효율성이 증가한다.
  • 중요한 protection 문제를 일으킬 수 있다.
    • 다른 프로세스들에 의한 잘못된 메모리 접근이 발생할 수 있다.

Address Space

  • OS는 물리적 메모리의 추상화를 만든다.
    • Address space(가상화된 메모리 공간)는 시스템에서 작동하고 있는 프로그램의 메모리에 대한 관점이다. -> Protection문제 해결 : A와 B프로세스는 각각 자신만의 address만 접근할 수 있다.
    • address space는 작동하는 프로세스에 대한 정보를 가지고 있다.
    • 이는 프로세스의 구성요소이며 프로그램 코드, 힙, 스텍, 데이터 와 같은 정보를 지닌다.

  • 코드
    • 명령어가 존재하는 곳
    • 동적으로 메모리 할당
      • C언어 malloc 함수(사용 후 free해줘야 함)
      • 객체 지향 언어의 new 명령어
  • 스택
    • return 주소나 값을 가지고 있슴
    • 지역변수 인수등이 존재

Virtual Address

  • 수행중인 모든 프로그램의 주소는 가상의 주소이다.
    • OS는 가상 주소를 물리적 주소로 번역한다.
// 이 프로그램은 주소들(코드, 힙, 스택)의 주소 출력 프로그램
#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[]){
	printf("코드의 위치 : %p\n", (void *) main);
    printf("힙의 위치 : %p\n", (void *) malloc(1));
    int x = 3;
    printf("스택의 위치 : %p\n", (void *)&x);
    
    return x;
}

  • 출력 값
    코드의 위치 : 0x40057d
    힙의 위치 : 0xcf2010
    스택의 위치 : 0x7fff9ca45fcc

0개의 댓글