JJM
Operating System

[운영체제 아주 쉬운 세 가지 이야기 - Virtualization] 22. Swapping - Policies

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 가상 메모리 관리자의 입장에서 비어 있는 메모리가 많을수록 일은 쉬워진다. 페이지 폴트가 발생하면 빈페이지 리스트에서 비어 있는 페이지를 찾아서 폴트를 일으킨 페이지에게 할당하면 된다. 불행하게도 빈 메모리 공간이 거의 없으면 일...

Operating System

[운영체제 아주 쉬운 세 가지 이야기 - Virtualization] 21. Swapping - Mechanisms

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 지금까지 가상 주소 공간이 비현실적으로 작아서 모두 물리 메모리에 탑재가 가능한 것으로 가정하였다. 사실 실행 중인 프로세스의 전체 주소 공간이 메모리에 탑재된 것으로 가정하고 있었다. 이제 그 가정을 완화하여 다수의 프로세스들이 ...

Operating System

[운영체제 아주 쉬운 세 가지 이야기 - Virtualization] 20. Advanced Page Tables

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 페이징의 두 번째 문제점은 페이지 테이블의 크기이다. 페이지 테이블이 크면 많은 메모리 공간을 차지한다. 배열 형태를 가지는 선형 페이지 테이블을 살펴보자. 페이지 크기가 4KB, 2^12바이트이고, 페이지 테이블의 각 항목은 4...

Operating System

[운영체제 아주 쉬운 세 가지 이야기 - Virtualization] 19. Translation Lookaside Buffers

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 페이징은 상당한 성능 저하를 가져올 수 있다. 페이징은 프로세스 주소 공간을 작은 고정된 크기인 페이지로 나누고 각 페이지의 실제 위치인 매핑 정보를 메모리에 저장한다. 매핑 정보를 저장하는 자료 구조를 페이지 테이블이라고 하고, ...

Trouble Shooting

병합 후 언리얼 엔진 프로젝트 파일 에러. Couldn't set association for project. Check the file is writeable.

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 문제 SVN 사용 중에 작업 브랜치와 트렁크를 병합 후 프로젝트 파일을 열려고 하니까 프로젝트에 대한 연결을 설정할 수 없으니 파일이 쓰기 가능한지 확인하라는 에러가 발생하였다. 원인 .uproject 파일 병합 과정에...

Operating System

[운영체제 아주 쉬운 세 가지 이야기 - Virtualization] 18. Introduction to Paging

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 운영체제는 거의 모든 공간 관리 문제를 해결할 때 두 가지 중 하나를 사용한다. 첫 번째 방법은 세그멘테이션으로 가변 크기의 조각들로 분할하는 것이다. 세그멘테이션은 공간을 다양한 크기의 청크들로 분할할 때 공간 자체가 단편화(fr...

Operating System

[운영체제 아주 쉬운 세 가지 이야기 - Virtualization] 16. Segmentation

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 지금까지 프로세스 주소 공간 전체를 메모리에 탑재하는 것을 가정해 왔다. 베이스와 바운드 레지스터를 사용하면 운영체제는 프로세스를 물리 메모리의 다른 부분으로 쉽게 재배치할 수 있다. 이러한 형태의 주소 공간에서는 스택과 힙 사이에...

Operating System

[운영체제 아주 쉬운 세 가지 이야기 - Virtualization] 15. Address Translation

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 CPU 가상화 부분에서, 제한적 직접 실행(LDE)라는 기법을 집중적으로 다루었다. LDE의 아이디어는 간단하다. 대부분의 경우 프로그램은 하드웨어에서 직접 실행된다. 그러나, 프로세스가 시스템 콜을 호출하거나 타이머 인터럽트가 발...

Operating System

[운영체제 아주 쉬운 세 가지 이야기 - Virtualization] 14. Memory API

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 여기서는 Unix의 메모리(사용자 주소 공간) 관리 인터페이스에 대해 논의한다. Unix/C 프로그램에서 메모리를 할당하고 관리하는 방법을 이해하는 것은 안정적인 소프트웨어를 구축하는 데 중요하다. 어떻게 메모리를 할당하고 관리해야...

Operating System

[운영체제 아주 쉬운 세 가지 이야기 - Virtualization] 13. Address Spaces

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 초기에는 사용자가 많은 것을 기대하지 않았기에 컴퓨터 시스템을 구현하는 것이 쉬웠다. 사용의 편이, 고성능, 신뢰성이라는 기대가 생겨나면서 고민할 것들이 늘어났다. 초기 시스템 메모리 관점에서 초기 컴퓨터는 많은 개념을...