Greetings

I'm a 4th-year Ph.D. candidate in Computer Science at the University of Toronto, working under the supervision of Prof. Khai Truong.

My research centers human-AI interaction, with an emphasis on accessibility and creativity support, particularly in enhancing "music accessibility" for d/Deaf and hard-of-hearing individuals. One of my main projects involves song signing to support culturally responsive content creation and encourage collaboration between d/Deaf and non-d/Deaf artists. Another aspect of my work focuses on enhancing people's well-being. I am engaged in projects that support individuals with dementia in their out-of-home experiences and encourage mindful eating behaviours among children.

I completed my B.Sci in Computer Science and Engineering at Ewha Womans University, where I was advised by Prof. Uran Oh (Human-Computer Interaction Lab) and Prof. Hyokyung Bahn (Distributed Computing and Operating System Lab). Additionally, I worked as a research intern at the Samsung AI Centre Toronto under the guidance of Dr. Iqbal Mohomed, and at NAVER AI (HCI group) with Dr. Young-Ho Kim.

8. 메모리 관리

 <주소>

- 논리: 프로세스마다 독립, CPU가 보는 주소

- 물리: 실제 메모리 위치

- 바인딩: 주소 결정

1) compile 2) load 3) execution(run time binding) : 메모리 위치 옯길 수 있음(다이나믹)


<메모리 관리 단위 MMU>

논리적 주소를 물리적 주소로 매핑하는 HW

Address Translation: relocation, limt 레지스터


<메모리 할당>

1) 연속 할당

- 고정 분할: 영구적 분할, 동시에 로드되는 프로그램 수 고덩, 최대수행가능 크기 제한.

내부조각, 외부조각 모두 발생, 융통성 부족

- 가변 분할: 크기를 고려, 동적 변환, 외부조각 발생 (Hole)

First fit/ Best fit/ Worst fit

Compaction: Hole을 없애기 위해 한군데로 모는것. Run time 바인딩.


** Internal fragmentation: 프로그램 크기 < 분할의 크기

사용되지 않는 메모리 조각

** External fragmentation: 프로그램 크기 > 분할의 크기

빈곳이 있지만 프로그램을 넣을 수 없음


<Paging>

가상메모리를 도일한 사이즈의 페이지 단위로 분할 (4KB)

논리적 메모리: 동일한 크기의 frame

물리적 메모리; 동일한 크키의 page

내부조각 발생 가능

불연속 할당

MMU가 필요 없음


* 페이지 테이블: 논리적 주소 - 물리적 주소, 프로그램 개수만큼의 entry

Base 레지스터: 페이지 테이블을 가리킴

Length 레지스터: 페이지 테이블의 크기를 보관

페이지 테이블 조회 -> 메모리 접근 : 총 2회의 메모리 접근

ex) 2 -level page table

32bit 주소: 2^32 = 4G 의 주소공간

페이지 크기: 4K -> 1M (4G / 4K) 의 페이지 테이블 길이 (엔트리 수)

페이지 테이블 엔트리 크기: 4B -> 프로세스당 4M (4B x 1M) 의 페이지 테이블 필요

page #: 20bit = 10bit page # + 10bit page offset (2 - level)

page offset: 12bit **페이지 크기가 offset을 결정한다. 4K이므로 12비트 필요


* inverted page table: 공간복잡도 감소

페이지 프레임 하나당 페이지 테이블 엔트리 차지 - system wide

<process ID, process logical address>

- 페이지 테이블 전채 탐색


*shared page

재진입 가능 코드(Pure - code)

읽기 전용으로 하나의 코드만 메모리에 올림, 공유코드는 각 프로세스의 논리적 주소에서 동일한 위치


* 속도 향상을 위해 translation look ahead buffer (TLB): HW cache, 병렬 탐색

<page #, frame #>

TLB hit: 메모리 접근 0회


* 가상 주소 = Page # (p) + Page Offset (d)


<메모리 보호>

- Protection bit: 접근권한 읽기/쓰기...

- Valid bit: 접근 허용

invalid: 주소를 사용하지 않는경우 / swap 공간에 있는 경우


<Segmentation>

프로그램을 의미단위인 segment로 구성, code - data - stack

* 논리주소 = segment # + segment offset

base: 시작 주소, limit: 길이

STBR: 테이블 위치
STLR: 테이블 길이

공유와 보안에 있어 페이지 보다 효과적

외부조각 발생


<Segment with page>

ST가 세그먼트를 구성하는 페이지 테이블의 base 레지스터 저장

segment length = page크기의 배수

segment = 여러 페이지로 구성

Comments