가상 메모리: 가상 주소 공간을 사용
마치 한 프로그램 혼자서 메모리를 사용하는 것 같게 함.
- 메인 메모리를 효율적으로 사용: 필요한 내용만 하드디스크에서 불러옴.
- 메모리 관리 간소화: 프로그램은 각자 일정 크기의 연속적인 메모리 공간을 사용한다 알고 있음.
실제 물리적 관리는 운영체제가 하고 프로그램은 신경 안씀. - 주소 공간 격리: 메모리에 간접 접근, 프로그램마다 메모리 분리 -> 보안성 좋음
한 프로세스는 다른 메모리에 끼어들 수 없음. 필요할 때만 서로 공유
사용자 프로그램이 권한있는 커널 정보나 코드에 엑세스 불가
메모리 관리를 위한 가상 메모리: 메모리를 단순한 선형 배열로 볼 수 있다.
- 메모리 할당 단순화: 단순 선형 배열의 메모리 구조, 독립적이고 정해진 크기의 공간이라 단순함.
- 프로세스 간 코드 및 데이터 공유: 한 물리적 주소를 여러 가상 주소가 가리켜 데이터 공유 가능
예) (가상주소: 0x00) -> (물리적 주소: 0x2313)
(가상주소: 0x23) -> (물리적 주소: 0x2313)
0x2313의 데이터를 공유 - 링킹 간소화: 링킹할 때마다 실제 물리적 주소가 아닌 정해진 가상 주소를 쓰면 됨 -> 로딩시 메모리 위치 신경 안써도 됨.
메모리 보호를 위한 가상 메모리
- 프로그램 간 메모리 격리
- 가상주소로 접근할 때 검사
가상 주소 -> 물리적 주소 과정에서 권한이 있는지 판단하고 있으면 그대로 접근하게 하고, 권한이 없으면 오류(페이지 fault)
읽기, 쓰기, 실행, 관리자 권한이 있음 - 버퍼 오버플로우 공격 방어
NX비트, DEF 기능으로 방어 - 스택 및 힙 공간 보호
스택이나 힙이 데이터를 저장하다가 오버플로우가 발생해도 다른 메모리 영역을 덮어쓰지않게 해줌
728x90
반응형
'CS > 컴퓨터 구조' 카테고리의 다른 글
[컴퓨터 구조](27)[동적 메모리] (0) | 2025.03.06 |
---|---|
[컴퓨터 구조](26)[가상메모리 동작] (0) | 2025.03.05 |
[컴퓨터 구조](24)[프로세스 생성 & 종료] (0) | 2025.03.03 |
[컴퓨터 구조](23)[프로세스] (0) | 2025.02.28 |
[컴퓨터 구조](22)[제어흐름변경] (0) | 2025.02.27 |