전체 글 390

파일과 디렉터리

파일과 디렉터리 파일 시스템은 파일과 디렉터리를 관리한다. 해당 게시글에서는 파일 시스템의 개념을 잡기 이전에, 파일과 디렉터리가 무엇인지 알아보고자 한다. 파일 일상적으로 컴퓨터를 이용할 때는 파일 단위로 이용한다. 파일이란 하드 디스크의 SSD와 같은 보조기억장치에 저장된 관련 정보의 집합을 의미한다. 달리 표현하자면 파일은 의미 있고 관련 있는 정보를 모은 논리적 단위를 의미한다. 그렇다면 파일을 이루는 정보는 어떤 것들이 있을까? 모든 파일에는 이름과 파일을 실행하기 위한 정보, 그리고 파일 관련의 부가 정보가 있다. 이 부가 정보를 속성 도는 메타데이터라고 부른다. 윈도우 운영체제를 사용한다면 파일 속성을 한 번쯤 접해 본 경험이 있을 것이다. 임의의 파일에서 마우스 오른쪽 버튼을 클릭한 뒤 [..

재귀함수

재귀함수란  유사한 하위 작업 형태로 정의할 수 있는 작업을 처리하는 데 유용하게 쓰인다.예를 들어 정렬이나 검색, 종주 문제에는 간단한 재귀적인 형태의 풀이가 있는 경우가 흔하다. 재귀적인 루틴에서는자기 자신을 호출하여 하위 작업을 처라하는 방식(=재귀 케이스)으로 작업의 일부분을 수행한다. 재귀 호출을 하다보면 자신을 호출하지 않고도 처리할 수 있는 하위 작업(=기본 케이스)이 나온다. 이렇게 루틴에서 자기 자신을 호출하는 것을 재귀 케이스라 말하고,자기 자신을 호출하지 않아도 되는 경우를 기본 케이스라고 부른다. 재귀 알고리즘에는 재귀 케이스와 기본 케이스, 이렇게 두 가지 케이스가 있다. 간단하고 널리 알려저 있는 예제인 팩토리얼 연산을 통해 이 개념을 확인해보자. // n이 1초과일 경우의 팩토..

페이지 교체와 프레임 할당

가상 메모리를 통해 작은 물리 메모리보다 큰 프로세스도 실행할 수 있다고는 하지만, 그럼에도 불구하고 여전히 물리 메모리의 크기는 한정되어 있다. 운영체제는 프로세스들이 한정된 메모리를 효율적으로 이용할 수 있도록 기존 메모리에 적재된 불필요한 페이지를 선별하여 보조기억장치로 내보낼 수 있어야 하고, 프로세스들에 적절한 수의 프레임을 할당하여 페이지를 할당할 수 있게 해야한다. 이번 게시글에서는 요구 페이징의 개념과 페이지 교체 알고리즘, 그리고 프레임 할당에 대해 학습하며 운영체제가 이러한 기능을 어떻게 수행하는 알아보자. 요구 페이징 프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법을 요구 페이징이라고 한다. 이름 그대로 실행에 요구되는 페이..

가상 메모리 - 연속 메모리 할당

연속 메모리 할당 프로세스에 연속적인 메모리 공간을 할당하는 방식을 연속 메모리 할당 방식이라고 한다. 프로세스들을 메모리에 연속적으로 할당할 때 무엇을 고려해야 하는지, 그리고 어떤 잠재적인 문제가 있는지 알아보자. 스와핑 메모리에 적재된 프로세스들 중에는 현재 실행디지 않는 프로세스가 있을 수 있다. 입출력 작업의 요구로 대기 상태가 된 프로세스라던지, 오랫동인 사용되지 않은 프로세스가 이런 프로세스들에 속한다. 이러한 프로세스들을 임시로 보조기억장치 일부 영역으로 쫒아내고, 그렇게 해서 생긴 메모리상의 빈 공간에 도 다른 프로세스를 적재하여 실행하는 방식을 스와핑이라고 한다. 이때 프로세스들이 쫒겨나는 보조기억장치의 일부 영역을 스왑 영역이라고 한다. 그리고 현재 실행되지 않는 프로세스가 메모리에서..

원형 리스트

static int ListNum = -1; class List { public: List* CurPtr = this; List* BeforePtr = nullptr; List* AfterPtr = nullptr; int Index = 0; int Value = 0; bool IsDummy = false; ~List(); }; // 빈 List 생성 void InitialList(); // 원하는 만큼의 수와 해당 값으로의 초기화된 List 생성 void InitialList(int MaxIndex, int Value); // 부분 삭제 void DeleteIList(int iter, List* InDeleteList); // 전체 삭제 void DeleteAllList(); // 삽입 void Push..

DX11 - 빛의 반사

구의 Reflection 수치 값을 변경해주기 전이다. 구 1개만 반사 적용 구 2개에 반사광 적용 바닥까지 반사광 적용 이는 레이트레이싱을 이용한 반사광 적용이다. 반사되는 횟수가 많아질수록 고성능을 요구하기 때문에 컴퓨터 사양에 따라 좀 느려지기도 한다. 해당 이론은 Bilinear Interpolation즉 이중선형 보간과 관련이 있다. 우리는 해당 그림을 통해서 먼저 두개의 선형 보간을 수행하여 a와 b를 계산한 다음 a와 b를 보간하여 c를 찾을 수 있다. c는 당연히 (tx , ty)의 값을 가지게 될 것이다. 이중선형 보간은 일반 2D 그리드의 임의 위치에 있는 값을 알아야 할 때 사용된다. 이 그리디는 이미지나 텍스처 맵에 사용될 수 있다. 이 예에서는 녹색 점으로 표시된 위치(좌표 cx,..

그래픽스/DX11 2024.04.17

DX11 - 수퍼 샘플링

수퍼 샘플링의 이론은 해당 지점에 도달한 레이 픽셀을 다시 N개로 나누어 쏴준다 해당 픽셀의 N개의 레이를 다시 쏴맞추는 효과로 인해 그 하나의 픽셀 안에서 N개의 평균을 낸 뒤 해당 픽셀 값을 도출해내는 샘플링이다. 슈퍼 샘플링이란 샘플링할 때 즉, 하나만 샘플링만 하는 것이 아니라 추가로 샘플링을 하여 평균을 낸다라는 아이디어는 기본적으로 동일하나, 방법은 여러가지 방법이 있다.

그래픽스/DX11 2024.04.17