Greetings

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

My research lies at the intersection of human–AI interaction, accessibility, and creativity support, with a special focus on improving music accessibility for d/Deaf and hard-of-hearing (DHH) individuals. My projects include song signing (CHI ’23) to explore how music is experienced and expressed within Deaf culture, and ELMI (CHI ’25), an LLM-supported English lyrics to ASL gloss translation system.

I completed my B.Sc. 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 Systems Lab).

Additionally, I worked as a research intern at Samsung AI Center Toronto, where I was mentored by Iqbal Mohomed, and at NAVER AI LAB under the supervision of Young-Ho Kim. Most recently, I interned at Adobe Research in the STORIE Lab, supervised by Anh Truong and Justin Salamon .

💼 I am currently exploring academic (Assistant Professor) and industry (Research Scientist) positions starting in Summer/Fall 2026.

Google Scholar | LinkedIn | suhyeon.yoo[at]mail.utoronto.ca

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