티스토리 뷰
● 메모리 접근 권한
- 메모리 접근 권한은 메모리의 특정 번지에 부여된 권한으로 읽기(Read), 쓰기(Write), 실행(Execute) 3가지가 있다.
- 프로세스는 코드 영역, 데이터 영역, 힙 영역, 스택 영역 등이 있는데 각 영역마다 접근 권한이 있다.
- 코드 영역 : 읽기, 실행 권한(코드 영역은 프로그램 그 자체이므로 수정되면 안 된다.)
- 데이터 영역 : 일반 변수, 전역 변수, 상수로 선언한 변수가 저장 / 읽기 권한 & 쓰기 권한은 있거나 없다.
- 힙 영역, 스택 영역 : 읽기, 쓰기 권한
- 메모리 접근 권한에 대한 검사는 (가상주소 → 물리주소)로 변환될 때마다 일어난다.
- 만약 권한을 위반한다면 메모리 관리자(이하 MMU)가 에러를 발생시킨다.
● 페이지드 세그멘테이션
- 세그멘테이션은 가변 분할 방식이기에 코드 영역, 데이터 영역, 힙 영역 등을 세그먼트로 나눠서 관리할 수 있다.
- 그렇기에 다른 프로세스와 공유하기도 편하고 각 영역에 대한 메모리 접근 보호를 하기가 쉽다.
- 페이징은 고정 분할 방식으로 메모리를 효율적으로 관리할 수 있다.
- 페이지드 세그멘테이션은 말 그대로 페이징과 세그멘테이션의 장점을 혼합한 방식이다.
1. 세그멘테이션 기법에서 세그멘테이션 테이블은 Base Address와 Bound Address로 구성되어 있다.
2. 페이징 기법에서 페이지 테이블은 프레임 번호로 구성되어 있다.
- 위의 2가지 테이블을 혼합해 페이지드 세그멘테이션으로 만들어보자.
1. 페이지드 세그멘테이션 기법에서는세그멘테이션 테이블에 권한 비트를 추가한다.
2. Base Address는 페이지 넘버로 바뀌고 Bound Address는 세그먼트의 페이지 개수로 바뀐다.
3. 이름만 달라졌을 뿐 각각의 역할은 본질적으로 변하지 않았다.
ex)
1. 0x12300 가상주소로 접근 요청이 들어왔으므로 먼저 가상주소를 이용해 몇 번 세그먼트인지 알아내야 한다.
2. 메모리 관리자가 메모리에서 세그멘테이션 테이블과 페이지 테이블을 가져온다.
3. 0x12300 번지이니 1번 세그먼트이므로 세그멘테이션 테이블의 1번 인덱스를 참조한다.
4. 이때 해당 세그먼트가 메모리 접근 권한을 위반하는지 검사한다.(RE이므로 읽기&실행)
5. 만약 권한을 위반했으면 프로세스를 종료시키고 아니라면 페이지 넘버와 페이지 개수를 가져온다.
6. 페이지 넘버로 페이지 테이블 인덱스에 접근해 프레임 번호를 가져온다.
7. 프레임 번호를 이용해 물리 메모리 내의 해당 프레임에 접근해 그 위치에서 페이지 개수를 더해 물리주소를 구한다.
(물리주소 = 프레임 번호 + 페이지 개수 = 3 + 1000)
7-1. 만약 물리 메모리에 해당 프레임이 없다면 HDD의 스왑 영역에서 물리 메모리로 가져온다.
● 페이지드 세그멘테이션 단점
- 물리 메모리에 접근하기 위해서 메모리에 접근을 두 번해야 된다.
- 이러한 점 때문에 현대의 OS는 페이징과 페이지드 세그멘테이션 기법을 섞어서 사용한다.
첫 번째 메모리 접근 : 세그멘테이션 테이블을 참조할 때
두 번째 메모리 접근 : 페이지 테이블을 참조할 때
'CS > 운영체제' 카테고리의 다른 글
#40 스레싱과 워킹셋 (0) | 2023.07.14 |
---|---|
#39 디맨드 페이징(가져오기 정책) (0) | 2023.07.13 |
#37 페이징(배치정책) (0) | 2023.07.11 |
#36 파일과 디스크 (0) | 2023.07.10 |
#35 가상메모리 - 세그멘테이션(배치정책) (0) | 2023.07.09 |
- Total
- Today
- Yesterday
- 코딩테스트
- git
- nosql
- spring
- Phaser
- 프로그래머스
- 메모리
- MySQL
- 프로세스
- 빅데이터
- OS
- 코테
- API
- 자료구조
- 운영체제
- node.js
- MongoDB
- Stream
- db
- SQL
- Phaser3
- Java8
- jpa
- Spring Boot
- Advanced Stream
- 알고리즘
- 빅데이터 분석기사
- DART
- SpringBoot
- java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |