분류 전체보기 118

CS,OS 단편화

오늘은 단편화에 대해 공부하겠습니다. 메모리 단편화 메모리에서 메모리의 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당(사용)이 불가능한 상태를 보고 메모리 단편화 라고 말합니다. 이 메모리 단편화는 내부, 외부 단편화 가 있습니다. 1. 내부 단편화 - 프로그램의 크기보다 분할의 크기가 큰 경우, 해당 분할에 프로그램을 적재하고 남는 메모리 공간 - 즉, 하나의 분할 내부에서 발생하는 사용되지 않는 메모리 조각 - 메모리 자유 분할 공간이 10,000B가 있고 프로세스 A가 9,999B를 사용하게 되면 1B가 남게 된다. 이러한 현상을 내부 단편화라고 한다. 2. 외부 단편화 -프로그램의 크기보다 분할의 크기가 작은 경우, 해당 분할이 비어있음에도 불구하고 프로그램을 적재하지 ..

페이징과 세그먼테이션

오늘은 페이징과 세그먼테이션에 대해 알아봅시다. 먼저 알아보기 전에 왜 이러한 기법이 나왔을가요? - 다중 프로그래밍 시스템에 여러 프로세스를 수용하기 위해 주기억장치를 동적 분할하는 메모리 관리 작업이 필요하기 떄문! 메모리 관리 기법 1. 연속 메모리 관리 - 프로그램 전체가 하나의 커다란 공간에 연속적으로 할당이 되야함 - 고정 분할 기법 : 주기억장치가 고정된 파티션으로 분할(내 외부 단편화 발생) - 동적 분할 기법 : 파티션들이 동적 생성되며 자신의 크기와 같은 파티션에 적재(외부 단편화 발생) 2. 불연속 메모리 관리 - 프로그램 일부가 서로 다른 주소 공간에 할당될 수 있는 기법 - 페이지 : 고정 사이즈의 작은 프로세스 조각 - 프레임 : 페이지 크기와 같은 주기억장치 메모리 조각 - 단..

PCB, Context Switching

오늘은 PCB랑 Context Switching 에 대해 공부해보겠습니다. Process Metadata - CPU들은 각 프로세스들이 누군지 알아야 관리가 가능합니다. 프로세스들의 특징을 갖고있는 것이 Process Metadata입니다. Process ID Process State Process Priority CPU Registers Owner CPU Usage Memeory Usage 이러한 메타데이터는 프로세스가 생성되면 PCB에 저장됩니다. PCB(Process Control Block) - 프로세스 메타데이터들을 저장해 놓는 곳, 한 PCB 안에는 한 프로세스의 정보가 담김 프로그램 실행 -> 프로세스 생성 -> 프로세스 주소 공간에 (코드, 데이터, 스택) 생성 -> 이 프로세스의 메타데이..

교착 상태(DeadLock)

오늘은 교착 상태 (DeadLock)에 대해 공부해봅시다. 교착 상태(DeadLock)이란? 한정된 자원을 여러 곳에서 사용하려고 할 떄, 발생하는 문제입니다. 프로세스가 자원을 얻지 못하고 다음 처리를 하지 못하는 상태입니다. 프로세스 1과 프로세스2가 모두 자원 1, 자원 2를 얻어야 한다고 가정해보자. t1 : 프로세스 1이 자원 1을 얻음 / 프로세스 2가 자원 2를 얻음 t2 : 프로세스 1은 자원 2를 기다림 / 프로세스 2는 자원 1을 기다림 이처럼 현재 서로 원하는 자원이 상대방에게 할당되어 있어서 두 프로세스는 무한정 wait 상태에 빠지게 된다. -> 이러한 상황을 DeadLock 이라고 부른다. [주로 발생하는 경우] 1. 멀티 프로그래밍 환경에서 한정된 자원을 얻기 위해 서로 경쟁하..

프로세스 vs 스레드

오늘은 프로세스 와 스레드에 대해 공부하겠습니다. 프로그램이란? 어떤 작업을 위해 실행할 수 있는 파일을 의미합니다. 프로세스(process) 1. 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받은 작업의 단위 2. 운영체제로부터 시스템 자원을 할당 받습니다. 3. 할당 받는 시스템 자원 1) CPU 시간 2) 운영되기 위한 주소 공간 3) Code, Data, Stack, Heap의 구조로 되어있는 독립된 메모리 영역. 기본적으로 프로세스마다 최소 1개의 스레드를 갖습니다.(메인 스레드) 프로세스는 각각 별도의 메모리 영역(주소 공간)을 할당받습니다. [Code, Data, Stack, Heap] 한 프로세스는 다른 프로세스의 변수나 자료구조의 접근이 불가합니다. 접근을 하기 ..

법선매핑(노말맵)

오늘은 법선매핑(노말맵)에 대해 공부하도록 하겠습니다. 오브젝트에 텍스쳐를 입히는 과정을 살펴보도록 하겠습니다. 렌더링되어져서 나온 오프젝트는 색이 입혀져 나옵니다. 근데 DirectX에서는 색이 아니라 단순한 숫자입니다. 그중에서 Shader라면 0~1사이의 소수점의 집합입니다. 폴리곤 표면에는 왠만하면 법선 정보가 들어있습니다. 여기서 천재들의 기지가 발휘됩니다. 텍스쳐가 단순히 Shader상에서 수치값으로 표현가능하다면, 폴리곤의 세부적인 기복의 방향을 텍스쳐로 표현할 수 있지 않을가??? 이것이 곧 법선맵 입니다. 법선맵을 사용하면 한장의 사각폴리곤만으로 표면이 울퉁불퉁한 것처럼 보이게 할 수 있습니다. 1. 법선맵이 뭐냐? 위의 그림을 살표보면 4X4의 법선맵을 1장의 삼각 폴리곤으로 단순하게 ..

DirectX 깊이 버퍼(Z-Buffer)

DirectX의 깊이 버퍼를 공부하도록 하겠습니다. 깊이버퍼는 3D프로그래밍을 하는데 있어서는 매우 필수적인 개념입니다. 렌더링 파이프 라인에 투영 단계까지 모두 완료했을경우 NDC공간(클립 공간) 으로 변형됩니다. 이떄에 클립 공간은 x,y,z (-1~1),(-1~1),(0~1) 사이로 변형이 됩니다. 깊이 버퍼 또한 NDC 공간의 Z값과 같은 0~1 의 범위를 가지는 화면에 그려질 각각 픽셀의 깊이 값을 저장하는 버퍼입니다. 깊이 버퍼(Z-Buffer) 아래의 사진을 토대로 깊이 버퍼의 작동 원리를 설명합니다. 위 사진을 보면 출력하는 순서에 따라 원형이 삼각형을 가리고 있지만, Z버퍼에 저장된 Z값에 따라 실제 출력에서는 삼각형이 원형을 가리는 형태로 출력합니다. Z버퍼에 저장된 Z값을 비교하여 0..

그래픽스 DirectX11렌더링 파이프라인

오늘은 다이렉트 X11 렌더링 파이프라인에 대해 공부해보겠습니다. 다이렉트 X11은 9개의 단계에 걸처 렌더링을 진행합니다.(더 있는걸로 알지만 자세히는 안보겠습니다.) 1. Input Assembler(IA) 사용자로부터 원시 데이터를 읽어 그 후 파이프 라인 단계에서 사용될 Primitive types(line list, triangle strips등등) 데이터로 assemble하는 역활을 합니다. 2. Vertex Shader(VS) IA단계를 통과한 정점들을 처리하는 단계입니다. 변환, 스키닝, 조명등 수많은 특수 효과를 정점 쉐이더에서 수행합니다. 정점 쉐이더에서 입력 정점 자료는 텍스쳐라든가 변환 행렬, 장면 광원 정보등 GPU 메모리에 담긴 다른 자료에도 접근이 가능합니다. 이 단계에서는 작..

그래픽스 포워드 렌더링, 디퍼드 렌더링

오늘은 포워드 렌더링과 디퍼드 렌더링에 대해 공부하도록 하겠습니다. 1. 포워드 렌더링 포워드 렌더링이란? 전통적인 렌더링 방식입니다. 많은 수많은 명작들이 포워드 렌더링 방식으로 만들었고 콘솔을 기준으로 PS2 이전의 게임은 모두 포워드 렌더링 방식이라고 생각히시면 무방합니다. 3D공간에 존재하는 폴리곤을 픽셀화하여, 그 픽셀마다 쉐이딩과 라이팅 연산을 더하는 방식으로 사용됩니다. 장점 1. 저사양 스펙에서도 매우 잘돌아간다. 2.pc는 안티앨리어싱 처리를 하드웨어에서 지원합니다. 단점 1. 라이팅 연산이 매우 느립니다. 2. 복잡한 화면구성하거나 폴리곤이 많은 모델을 렌더링 걸기 불합리 3. 그림자처리가 어렵습니다. 4. 화면깊이값을 이용한 포스트 이펙트는 따로 처리를 해줘야합니다. 2. 디퍼드 렌더..

그래픽스 알파 테스트, 알파 블렌딩, 알파 소팅

알파 테스트, 알파 블렌딩, 알파 소팅에 대해 공부하도록 하겠습니다. 알파 테스트와 알파 블렌딩은 그래픽스 공부에서 매우 중요한 편입니다. 텍스쳐에는 알파채널값이 있는데, 보통 256단계 입니다. 이 256단계에서 알파 테스트와 알파 블렌딩은 어떻게 처리를 할것이며 또한 알파 소팅은 어떤형식인지 알아봅시다. 1. 알파 테스트 알파 테스트는 알파값이 얼마든간에 알파값이 있으면 1, 없으면 0으로 판단합니다. 그러므로 연산속도가 비교적 빠릅니다. 하지만 그만큼 퀄리티가 매우매우 안좋아집니다. 그럼에도 알파 테스트를 게임에서 많이 사용하는 이유는 게임에서는 대부분 속도가 매우 중요 하기 떄문입니다. 반투명은 없다고 생각하시는게 무방합니다. 2. 알파 블렌딩 알파 블렌딩은 모든 픽셀은 언제나 보일 수 있다. 라..