1. 라운드 로빈이란? 라운드 로빈 알고리즘은 시간 분할을 통해 여러 프로세스 간의 CPU를 공평하게 할당하는 선점 스케줄링 알고리즘이다. 라운드 로빈은 선점 스케줄링이기 때문에 다른 프로세스가 실행되는 동안 우선순위가 더 높은 프로세스가 도착하면 현재 실행 중인 프로세스가 선점되어 대기열에 다시 배치 될 수 있다. 2. 동작 과정 1. 최대 CPU 시간을 나타내는 고정 시간이 할당된 실행 준비된 모든 프로세스가 대기열에 배치 2. CPU 스케줄러가 대기열 앞의 프로세스를 실행 3. 실행을 완료했다면 대기열에서 제거, 그렇지 않다면 대기열 맨 뒤에 배치 3. 사용이유 1. 프로세스에 일정한 CPU 시간 할당량을 부여하기 때문에 공정한 실행을 보장해준다. 2. 프로세스가 CPU를 기다리는 시간을 최소화 하..
간단한 IT 지식
1. L value, R value 란? Left value, Right value 를 의미하며 말 그대로 왼쪽 값, 오른쪽 값을 나타낸다. 예시로 int x = 10 이라는 식에서 L value와 R value를 구분해보면 int x 는 왼쪽에 있는 값이므로 L value, 10은 오른쪽에 있는 값이므로 R value다. 여기서 L value의 특징은 값을 할당 받는 값이고 R value는 값을 할당 할 수 있는 값을 의미한다. 요약하자면 L value는 값이 할당될 수 있는 메모리의 위치를 나타내는 표현이고, R value는 L value 값에 할당될 수 있는 값을 의미한다.
1. 버퍼 오버플로우(Buffer Overflow)란? 프로그램 실행 시 입력받는 값이 버퍼의 크기를 넘어가 버퍼 이후의 공간을 침범하는 현상을 버퍼 오버플로우라고 한다. 2. 문제점 버퍼에서 주의해야 할 점은 버퍼 오버플로우가 발생 시 버퍼 이후의 공간에 값이 들어차게 되는데 이 때 들어차는 방식이 밀어내기가 아닌 덮어쓰기 방식이다. 이 말은 4칸 짜리 버퍼 A B C D 가 있고 a b c d e의 입력을 받아 오버 플로우가 발생 한다면 현재 입력 받은 값을 밀어내는 것이 아닌 버퍼가 a b c d e의 값으로 덮어 씌어지게 된다. 예를 들어, 올바르게 버퍼 값을 받는다고 가정한 로직에서 고의로 버퍼를 초과시켜 이상한 값을 덮어씌운다면 로직이 의도한대로 실행되지 않아 위험성이 커지는데 해커들은 이러한..
1. 어드레서블 에셋이란? 말 그대로 에셋에 어드레스, 즉 고유한 주소를 할당하는 것을 말한다. 새로 만들어진 것이 아닌, 에셋 번들의 편의성을 개선하기 위해 설계된 시스템이다. 2. 어드레서블의 장점 동적 로딩 - 게임 시작 시 에셋을 한 꺼번에 불러오는 것이 아닌 런타임 중에 동적으로 메모리에 에셋을 할당할 수 있기 때문에 효율적인 메모리 사용 및 로딩 시간을 단축 시킬 수 있다. 에셋 관리 - 메모리 로드/언로드 현황을 볼 수 있다. -> 에셋 번들을 불러와 그룹화할 수 있기 때문에 에셋 번들이 메모리의 로드, 언로드를 가능하게 해주고 이를 통해 메모리 사용 최적화 및 로딩 성능을 향상 시킨다. 원격 에셋 로딩 - 클라우드나 웹 서버와 같은 원격 위치에서 에셋 로딩을 지원한다. 이를 통해 개발자는 ..
1. 가상 메모리란? 가상 메모리는 컴퓨터의 RAM에 물리적으로 존재하는 것보다 더 크고 연속적인 개인 메모리 공간을 제공하기 위해 운영체제에서 사용하는 메모리 관리 기술이다. -> 메모리가 실제 메모리보다 더 많아 보이게 하는 기술 2. 가상 메모리 사용 배경 초창기 컴퓨터는 RAM의 용량이 애플리케이션의 주소보다 커야했기 때문에 메모리 부족 현상이 자주 일어났다. 이를 해결하기 위해 애플리케이션의 일부분만 기억장치에 올리는 오버레이 기법이 나왔지만 복잡성, 성능 오버헤드 등의 문제로 메모리 부족 현상을 결국해결하지 못했다. 그래서 애플리케이션을 실행할 수 있는 최소한의 메모리에 집중하여 RAM에 최소한의 메모리만 올리고 애플리케이션의 나머지는 디스크에 위치시키는 가상 메모리 기법이 나온 것이다. 빠른..
RAII패턴이란? RAII(Resource Acquisition Is Initialization)패턴은 지역변수가 선얼될 때 생성자가 불리고, 스코프에서 벗어날 때 파괴자가 호출되는 것이다. 지역변수가 선언될 때 생성자가 불려지기 때문에 접근 가능시점에서 이미 리소스가 초기화되었음을 보장한다. 이를 통해 RAII패턴을 사용한 클래스 안의 메서드는 항상 초기화가 되어있음을 가정하고 동작할 수 있다. 초기화가 실패하면 throw되어 스코프 밖으로 넘어가면 자동으로 파괴자가 호출된다. 이는 가비지 컬렉션이 없는 C++에서 주로 사용하는 개념이고 C#을 사용하는 Unity에서는 가비지 컬렉션이 있기 때문에 직접 사용하는것은 흔하지 않다. 자동 리소스 관리 개념적으로 같은 기능들은 Instantiate - Des..