JJM
Operating System

[운영체제 아주 쉬운 세 가지 이야기 - Concurrency] 27. Thread API

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 운영체제가 쓰레드를 생성하고 제어하는 데 어떤 인터페이스를 제공해야 할까? 어떻게 이 운영체제를 설계해야 쉽고 유용하게 사용할 수 있을까? 쓰레드 생성 멀티 쓰레드 프로그램을 작성 시, 가장 먼저 할 일은 새로운 쓰레드의...

Operating System

[운영체제 아주 쉬운 세 가지 이야기 - Concurrency] 26. Concurrency and Threads

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 지금까지 운영체제가 다루는 기본 개념들의 발전 과정을 살펴보았다. 하나의 물리적 CPU를 다수의 가상 CPU로 확장하여 마치 여러 개의 프로그램이 동시에 실행하는 듯한 착시를 만들었다. 그리고 개별적인 프로세스가 모두 독립적으로 많...

성능을 높히는 데이터 지향 설계 (Data Oriented Design, DOD)

이 글은 제 개인적인 공부를 위해 작성한 글입니다. 틀린 내용이 있을 수 있고, 피드백은 환영합니다. 개요 많은 개발자에게 익숙한 객체 지향 설계(OOP)와 특히 게임 개발과 같이 대규모 데이터 처리에서 성능 향상을 가져오는 데이터 지향 설계(DOD)에 대해 알아보자 객체 지향 설계 (Object Oriented Design, OO...

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

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