일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Pwnable
- N0NamedWargame #mandu-mandu #forensics #left_side_B
- AjouUniv #Whois #Reversing
- Whois #정보보안교육 #Ajou
- Variable Partition
- 운영체제
- Whois #정보보안교육 #webhacking.kr
- SuNiNaTaS #mandu-mandu #AjouUniv #forensics
- 스케줄링
- systemhacking
- ftz
- N0NamedWargame #mandu-mandu #forensics #길에서주어온만두
- HackCTF
- Dreamhack
- N0Named
- Memory Virtualization
- 아주대학교
- N0NamedWargame #AjouUniv #mandu-mandu #forensics
- AjouUniv #Whois #정보보안교육 #Pwnable
- webhacking
- hackerschool
- AjouUniv #Whois #정보보안교육
- Whois #정보보안교육 #AjouUniv #Pwnable
- 코딩도장
- python
- Allocation Starategy
- 아주대학교 #Whois #정보보안교육 #4주차
- Whois #AjouUniv #정보보안교육 #Pwnable
- AjouUniv #SuniNatas #Web
- 사이버보안학과
- Today
- Total
chipkkang9's story
[운영체제] 3. Memory Virtualization - (1) Address Spaces ② 본문
[운영체제] 3. Memory Virtualization - (1) Address Spaces ②
chipkkang 2023. 6. 14. 03:13
이번 포스팅은 지난번에 설명했던 Partition 부분에 이어서 설명할 예정이다.
혹시 Partition(Fixed Partition 및 Variable Partition) 방법에 대해서 궁금해서 온 사람이라면, 이전 포스팅을 참고하기 바란다.
[운영체제] 3. Memory Virtualization - (1) Address Spaces ①
Memory Virtualization(메모리 가상화) 파트는 원래 공룡책과 같은 곳에서는 Memory management라는 이름으로 소개되곤하는 파트라고 알아줬으면 한다. 시험공부하다가 머릿 속에 정리하면서 블로깅을 하
shchip-kkang.tistory.com
2. "프로세스입니다. 장난치지 말고 주소가 어디냐구요.. 세.. 뭐요?"
Segmentation이다. 이는 Variable Partition의 확장판이라고 생각하면 된다. Segment는 우리말로 '파편'이라는 뜻이다.
Segmentation은 프로세스를 세그먼트의 집합으로 생각하여 처리하는 방법이다. 이는 Address space를 logical segment의 단위로 쪼개서 생각하는 방식이다.
자, 쉽게 이해해보자면 이렇다. 같은 과에서 구내식당으로 점심을 먹으러 가도 특별히 친한 사람들끼리 다시 모여서 밥을 먹을 수도 있을 것이고, 같은 단과대끼리 서로 공유하고 있는 가치관이 논리적으로 비슷(Logically same)할 것이다.
구내식당 사장님은, 단과대에서 온 단체손님을 크기가 변할 수 있는 테이블에 각 과별로 나눠서 앉히고 싶다.
이 방법은 같은 관심사를 가진 사람들끼리 서로 밥을 먹으면서 서로 유사한 주제로 수다를 떨 수 있다는 장점은 있지만, 여전히 빈공간 활용에 대해서 아쉬움을 보인다.
그러면 컴퓨터는 이와 같은 특징을 어디서 가져올까? 바로, 프로세스의 내부이다.
프로세스는 다음과 같은 구조로 이루어져 있다.
🖥️ 프로세스의 구조?아주대학교 김상훈교수님 강의노트(2. Processes)
프로세스는 Code, Data, Heap, 그리고 Stack 영역으로 나뉜다. 자세한 내용은 시간이 된다면 다른 포스팅으로 다룰 예정이다.
위의 구조처럼 프로세스는 총 4가지 영역으로 나뉘는데, 각 Segment는 Address Space에 logical entry에 해당한다.
즉, 쉽게 말하면 Code는 Code끼리, Data는 Data끼리 분리해내서 배치해낸다는 의미이다.
또한, 프로세스마다 이에 대한 크기가 다를 것이므로 memory는 다양한 크기의 segment들로 채워질(Variable Partition) 것이다.
이때, virtual address는 각 segment들에 대한 숫자(segment number)와 offset를 갖게 된다.
이 방법은 policy에 따라서 명시적(explicit)일 수도 있고, 암시적(implicit)일 수도 있다.
- 명시적일 경우 : <segment ID, offset>
- <0x01, 0x2a31> , <0x21, 0x23c2>
- 암시적일 경우 : n-MSB를 segment ID처럼 사용
- 0x012a31, 0x2123c2
실제로 Virtual Address와 Physical Address 사이에서 MMU가 주소를 매핑해 줄때는 사이에 "Segment Table"이라는 친구가 끼어들어서 이를 조절해준다.
이는, 위와 같은 정보로 구성이 되어 있으며, segment-table base register(STBR)이라는 이름으로 CPU에 따로 저장된다.
그런데, 조금 특이한 점은 context switching이 그다지 어렵지 않았던 partition 방법들과는 다르게 Segment Table에 context switching마다 값을 다시 재저장해야하기 때문에 이 과정이 복잡하다는 특징이 있다.
이 Segmentation을 사용할 수 있게 됨으로서, 자잘자잘한 address space까지 사용할 수 있게 된다.
(Enable sparse allocation of address space)
따라서, stack 과 heap 공간에 대한 증가 및 감소도 시도할 수 있게 되고, segment에 따라 동적으로 메모리를 할당할 수 있게 된다.
또한, 보안적인 측면에서도 훌륭하다. (Segmentation fault와 같은 오류)
서로 다른 protection bit가 존재해서 읽기 권한(read-only)만 줄 수 있는 등의 권한을 따로 설정할 수도 있다.
그러나, 여전히 생각해보아야 할 과제들이 존재한다.
위의 장점들에도 불구하고 여전히 external fragmentation이 발생한다.또한, 지원하는 segment의 개수가 늘어남에 따라 이 정보를 저장하는 segment table의 사이즈도 늘어난다는 점에서 고민할 수밖에 없게 된다.
(스포) 그래서 .... 다음은 몇 장이라고?
이 글이 많은 사람들에게 도움이 되었으면 한다. 😊
'Study > Computer Science' 카테고리의 다른 글
[운영체제] 3. Memory Virtualization - (1) Address Spaces ① (0) | 2023.06.13 |
---|---|
[운영체제] Process Scheduling 방법 정리(2) - Priority, PIP, PCP (3) | 2023.06.06 |
[컴퓨터 구조] 21세기 컴퓨터의 구조(CPU 위주의 구조) (0) | 2023.05.07 |
[운영체제] Process Scheduling 방법 정리 (1) - FCFS, SJF, STCF, RR (0) | 2023.05.06 |