일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 스택
- 알고리즘
- 프로세스
- 자료구조
- 코딩테스트
- C
- 릿코드
- 큐
- 연결리스트
- 프로그래머스
- 타입스크립트
- Machine Learning
- RT scheduling
- pytorch
- 컨테이너
- 자바스크립트
- 웹팩
- cors
- 프론트엔드
- 연결 리스트
- 포인터
- RxJS
- alexnet
- 이진탐색
- APOLLO
- 배열
- 해시테이블
- vue3
- GraphQL
- 브라우저
- Today
- Total
프린세스 다이어리
[OS] 페이징 시스템의 "공유 메모리(Shared Memory)" 개념 본문
페이징 시스템은 물리 메모리를 효율적으로 활용하는 데 있어서 여러 역할을 한다. 그 중에 '공유 메모리'라는 개념이 있다.
Process A와 Process B가 별도로 있는 상황에서, A, B의 특정 공간이 공유된다고 가정해 본다.
물리 메모리엔 두 공간이 아닌 하나의 공간만 확보해 놓고, 페이지 테이블에서 프로세스의 각 주소를 변환할 때 해당 물리 주소를 동일하게 가리키게 해 놓으면 그 메모리 공간을 함께 공유할 수 있다.
1. 각 프로세스의 커널 메모리 공간은 물리 메모리 공간을 공유
공유 메모리의 개념을 프로세스의 4GB~3GB 영역의 커널 공간에 적용해 보면, 각 프로세스의 커널 공간에 대한 페이지 테이블에서 동일한 메모리 공간을 가리키게 하면 된다. 즉 프로세스마다 커널 영역을 다 갖고 있는 것처럼 표시된다 해도, 물리 메모리에 추가 공간이 필요한 것은 아니다.
2. 새로운 프로세스 생성 시간 단축
실행 중인 프로세스로부터 새로운 프로세스를 복사하기 위해서는 fork() 시스템 호출을 해서 똑같은 Child Process를 하나 더 만든다. 그런데 이게 실제로 4GB를 통째로 복사하는 게 아니고, 페이지 테이블에서 부모 프로세스의 일부가 들어 있는 물리 메모리 공간을 자식 프로세스도 가리키게 하는 것이다. 물리메모리 주소만 업뎃해놓으면 굳이 시간 들여 4GB를 복사할 필요가 없다. 이렇게 복사하면 예를 들어 처음 웹 브라우저를 실행하는 속도보다 훨씬 빠르게 동일한 브라우저를 새로 띄울 수 있다.
3. 물리 주소에 데이터 수정 시만 비로소 물리 메모리 공간이 복사됨
프로세스 A가 물리 메모리 공간의 어떤 값을 변경한다고 해서, 프로세스 B도 변형된 메모리의 데이터를 가지게 되면 안된다. 프로세스 간은 독립적이기 때문이다. 따라서 이 경우에는 물리 메모리의 기존 공간을 복사해서 다른 공간에 두고, 프로세스 B의 페이지 테이블에 그 공간의 물리주소 값을 가리키도록 바꿔주면 된다.
'운영체제, 컴퓨터 구조' 카테고리의 다른 글
[OS] 페이지 교체 알고리즘(Page Replacement Algorithm) 5가지와 스레싱(Thrashing) 현상 (0) | 2022.02.02 |
---|---|
[OS] 요구 페이징(Demand Paging)과 관련해 페이지 폴트 인터럽트(Page Fault Interrupt) 발생하는 과정 설명 (0) | 2022.02.01 |
[OS] 다중단계 페이징 시스템의 개념, TLB 뜻 (0) | 2022.01.30 |
가상 메모리의 매커니즘, 페이징 시스템을 알아보자. (0) | 2021.10.23 |
가상 메모리 등장한 이유, 가상 메모리 이용하는 원리 (0) | 2021.10.22 |