본문 바로가기

전체 글16

세마포어 / 뮤텍스 개요 여러 스레드들은 자원을 공유하고, 프로세스간 메시지를 전달합니다. 공유된 자원에 여러 프로세스, 스레드가 동시에 접근하면서 여러문제가 발생했습니다. 이런 문제들을 해결하기 위해 동기화를 해주는 기법인 세마포어와 그에 소속된 뮤텍스를 알아봅시다. DeadLock 세마포어는 대표적인 DeadLock회피책의 일종입니다. 개요 공유된 리소스를 여러 스레드가 접근할때 대표적으로 나타나는 문제중 하나입니다. 간단한 DeadLock의 사례입니다. 프로세스 A/B가 리소스 A/B를 모두 얻어야 진행될때, 프로세스가 각각 하나를 사용중인 상태가 된다면 무한정 기다리게 됩니다. 세마포어는 이런 DeadLock이 발생할 수 있는 Critical Section을 관리하는 회피책입니다. 세마포어 개요 세마포어는 리소스의 .. 2020. 6. 18.
스레드 프로세스만 있었을 때 CPU가 프로세스 A를 실행하다가 B를 실행한다고 생각을 합시다. 프로세스 A는 잠시동안 쓸 일 없으니 상태를 PCB에 저장하고, B의 상태를 레지스터에 저장해주어야 합니다. 그리고 또 캐시 메모리에 있던 데이터도 새로운 프로세스에 맞게 바꾸어주어야 합니다. 상당히 시간이 지체되는 작업들이였습니다. 이 두개의 프로세스의 데이터를 서로간 공유를 해주고 싶다고 생각해봅시다. 프로세스들은 독립된 주소공간을 가지고 있기 때문에 공유메모리나 소켓등을 이용하여 접근을 해야합니다. 이런 문제들이 있기때문에 스레드가 등장하게 되었습니다. 스레드의 정의 스레드는 한 프로세스에서 독립적인 순차흐름 또는 제어를 뜻합니다. 프로세스에는 최소 하나 이상의 스레드가 작동하며, 메인 스레드가 존재합니다. 스레.. 2020. 6. 18.
캐시 메모리: 리스트와 벡터의 속도차이 개요 리스트와 벡터, 어떤게 더 빠를까? 이 물음을 듣고나선 고등학생때 배웠던 리스트와 벡터의 차이를 생각해보았습니다. 벡터는 연속된 메모리 주소를 가진 Dynamic Array형태의 자료구조입니다. 리스트는 힙공간에 값을가진 노드가 생성되어있고, 노드가 다음 인덱스의 또 다른 노드를 가르키는 구조입니다. 단편적인 생각으로서는, 리스트와 벡터의 속도 차이에서 가장 큰 차이점은 중간 인덱스에 접근할때 구조적으로 속도 차이가 날수밖에 없다고 생각합니다. 그렇다면 만약에 리스트와 벡터 둘다 순차적으로 접근할때 어느 자료구조가 더 접근이 빠를까? 위와 같은 질문을 토대로 찾아 보았습니다. 답 커트 건서로스의 C++ 최적화: 최고 성능을 구현하는 10가지 검증된 기법에서 답을 찾을 수 있었습니다. 배열이나 벡터처.. 2020. 6. 17.
NDK / ADB NDK 정의 NDK(Native Development Kit)은 C와 C++같은 네이티브 코드 언어를 사용하여 앱을 구성할수 있게 해주는 도구 모음입니다. NDK를 사용하게 된 이유는, 맨 처음 JAVA로 안드로이드 어플리케이션을 개발할 때 다른 네이티브 코드와 달리 가상머신을 통하여 실행되었기 때문에 속도가 많이 느려질수밖에 없었습니다. 그렇기 때문에 조금 더 빠른 어플리케이션을 구성할 수 있도록 어플리케이션 코드의 일부를 가상머신을 통하지 않고 연산을 하도록 만든게 NDK입니다. 네이티브 언어로 구현할 수 있는 모듈을 가져와서 사용할수 있다면 어플리케이션 코드의 일부를 더욱 빠르게 연산시킬 수 있을것입니다. 유니티에서 유니티에서는 IL2PP기능을 이용하여 빌드를 한다고 하면 NDK를 사용해야 합니다... 2020. 5. 29.
앱번들 개요 / AAB 확장자의 의미와 테스트 AAB와 APK APK의 등장 및 변화 안드로이드는 기본적으로 앱을 APK라는 패키지 파일로 배포를 합니다. APK는 개발자가 만들어 놓은 프로그램을 컴파일 한 후, 어플리케이션을 구성하는 모든 파일을 하나의 패키지로 구성을 합니다. APK로 어플리케이션을 배포를 할 때, 이 어플리케이션이 어떤 기기에 설치될지 모르기 때문에 APK에선 여러기기에 대응하는 정보들을 APK에 적재합니다. 이를 유니버셜 바이너리라고 하며, 호환성이 좋지만 용량을 많이 차지하기 때문에 FAT 바이너리라고도 합니다 유니티에서는 이러한 FAT 바이너리를 덜어내는 설정이 있는데, 그게 Configuration의 Device Filter 설정입니다. 다른 방법으로는 APK를 특정 아키텍처에 맞게 빌드를 할수 있는 Split APKs .. 2020. 5. 28.
[Directx 11] 스터디 5일차 조명 Direct x 11 스터디 5주 차 조명 참고 블로그 https://copynull.tistory.com/253?category=649932category=649932 [DirectX11] Tutorial 6 - 조명 Tutorial 6 - 조명 원문 : http://www.rastertek.com/dx11tut06.html 이 튜토리얼에서는 조명(Diffuse lighting)과 DirectX 11을 활용하여 3D 객체를 그리는 방법을 다룹니다. 코드는 이전 튜토리얼의 소스에서 시.. copynull.tistory.com 이 블로그를 보며 작성한 글입니다. 이 게시글을 기준으로 보는 걸 추천드립니다. 개요 저번엔 모델링에게 셰이더를 이용하여 텍스쳐를 붙여줬다면, 이번에는 조금 더 자연스럽게 조명을 넣.. 2020. 2. 1.