20150522

창현이 형과의 대화
– x86 가상화에서 TLB는 gVA->PA로의 매핑 정보를 캐싱한다. naive한 page table은 two dimensional page table이다. Two dimensional한 것을 shadow page를 사용해 one dimensional로 유지하고자 했으나, shadow page table 업데이트마다 하이퍼바이저의 개입이 필요해서 오버헤드가 심하다. 이보다 hardware assisted two dimensional page walk이 오히려 좋은 성능을 보인다.
– 가상화된 x86 시스템에서 gVA를 PA로 전환하고자 TLB에 접근한다. TLB hit이 발생하면 바로 PA에 접근 가능하다. TLB miss가 발생하면 page table walk을 한다. 구현된 시스템에 따라 page table은 naive한 two dimensional page table일 수도 있고, shadow page table일 수도 있고, HW assisted two dimensional page table일 수도 있다. 일반적으로 HW assisted two dimensional page table을 사용한다. Page walk을 하면 해당 주소에 맞는 TLB 엔트리가 채워지고, 변환한 주소를 사용해 메모리에 접근한다.
– Para-virtualized 시스템은 프로세스 전환이 있을 때마다 하이퍼바이저의 개입이 필요하다. Full-virtualized 시스템에서는 nested page walk을 하는 대신에 프로세스 전환이 있을 때마다 하이퍼바이저가 개입할 필요가 없다. Para-virtualized 시스템에서는 운영체제가 직접 CR3 레지스터를 비롯한 매핑 정보를 관리하므로, nested page walk이 필요하지 않다. 대신에 프로세스 전환이 있을 때마다 하이퍼바이저에 hypercall을 해, CR3 전환을 요청해야 한다. 하이퍼바이저의 개입없이 가상 머신의 운영체제가 마음대로 CR3 레지스터를 바꿀 수 있다면, 다른 가상 머신에서 실행 중인 프로세스의 CR3 레지스터를 읽는 보안상의 문제가 생길 수 있다.

Advertisements
Posted in 1) Memo

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

누적 방문자 수
  • 98,786 hits
%d bloggers like this: