320x100
320x100

로세스와 메모리

주 기억장치 (메모리)

- RAM (Random-Access-Memory)

: 전력 공급이 끊길 경우 데이터가 소거되는 휘발성 메모리

 

- ROM (Read-Only-Memory)

: 메모리 내의 데이터에 대해 읽기만 가능한 비휘발성 메모리

 

 

 

프로세스의 메모리영역

- 코드 (code)

 : 프로세스가 실행할 코드와 매크로 상수가 기계어 형태로 저장된 공간

 : 컴파일 타임에 결정되며 중간에 코드를 바꿀 수 없도록 Read-Only로 지정

 

- 데이터 (data)

 : 코드에서 선언한 전역변수 또는 static 변수 등이 저장된 공간

 

- 힙 (heap)

 : 프로그래머가 필요할 때마다 사용하는 메모리 영역

 : 컴파일 타임에 생성되는 code, data, stack와 달리 런타임 때 생성

 : malloc나 calloc 으로 heap 영역 사용  가능

 : 스택보다 할당 가능한 메모리 공간이 많으나 포인터로 메모리 영역을 접근해야하기 

   때문에 다른 자료구조에 비해 읽고 쓰는 속도가 느림

 : memory leak

   => 힙 영역을 할당하고 나서 해제 하지 않았을 때 발생하는 문제

 

- 스택 (stack)

 : 함수 내에서 선언된 지역변수, 매개변수, 리턴 값, 돌아올 주소 등이 저장된 공간

 : 함수 호출시 할당되며 종료시 반납 (LIFO 방식으로 기록과 종료 진행)

 : Stack Overflow

   => 재귀함수의 깊은 호출이나 함수내에 지역변수가 너무 많아 stack 영역이 초과되는 현상

   => 스택은 컴파일 타임에 크기가 결정되기 때문에 무한한 할당이 불가하기 때문

 

출처 : http://www.tcpschool.com/c/c_memory_structure

 

 

논리 메모리와 물리 메모리

- 메모리 영역

 : 각 프로세스 별로 0x00000000 ~ 0xFFFFFFFF 범위의 메모리 영역 사용

 

- 논리 메모리

 : 프로세스가 가진 주소 (ex) 0x1234AF56

 

- 물리 메모리

 : 프로세스가 위치하는 실제 메모리 주소

=> 각 프로세스별로 가지고 있는 논리 메모리와 물리 메모리 매핑 테이블을 통해 할당

 

 

 

 

가상메모리

- 메모리 부족 현상을 방지하기 위해 디스크 공간을 주 기억장치로 활용하는 것

 

- 운영체제의 메모리 관리

 : 프로세스에서 필요한 부분만 메모리로 적재하고

   나머지 부분은 디스크에 생성된 가상메모리 영역에 적재

 

- page

 : 가상메모리를 사용하는 단위 (windows 기준 4kb )

 : 데이터의 크기를 정량화하여 빈공간이 발생하지 않게 하기 위함

 

- Demand-Paging

 : 페이지 테이블을 통해 논리 메모리 주소를 물리 메모리 주소로 변환하는 것

 

 

300x250
728x90

'Computer Science > OS' 카테고리의 다른 글

CPU의 구조와 명령어 수행 과정  (0) 2021.02.05
프로세스와 운영체제  (0) 2021.02.03
스레드  (0) 2021.02.03
프로세스와 CPU  (0) 2021.02.03
프로세스  (0) 2021.01.19