이 글에서는 컴퓨터에서 발생하는 데드락(deadlock)에 대해서 알아본다. 여기저기서 글을 읽고 나름대로 정리한 것이므로 개념이 100% 정확하다고 할 수는 없겠지만 이해에는 도움이 될 것이다... 데드락 데드락은 교착 상태라고 부르기도 한다. 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있어, 결과적으로 아무것도 완료되지 못하는 상태를 말한다. 그렇다면 데드락은 왜 생겨나게 되었을까? 특히 멀티스레드 환경에서 자주 발생하는 문제이기 때문에 이를 중심으로 설명하겠다. (단, 아래 사진에서 볼 수 있듯이 멀티스레드 외에도 조건을 만족하는 비슷한 상황에서 발생할 수 있는 문제이다.) 배경 먼저 Multi-Programming(프로그램을 여러 개 돌리는 것, 다중 프로그래밍이라고 번역할 ..
프로그래밍/기타
개요 이 글에서는 서로 다른 아키텍처에서 바이트를 주고 받을 때 신경 써야 하는 바이트 배열 방법, 엔디안에 대해서 알아볼 것이다. 엔디안 엔디안(Endian)은 1차원의 공간에 여러 개의 연속된 대상을 배열하는 방법을 뜻한다. 특히 컴퓨터에서 바이트를 메모리에 나열할 때 두 가지 방법이 있다. 하나는 빅 엔디안(Big endian)이고 하나는 리틀 엔디안(Little endian)이다. 빅 엔디안과 리틀 엔디안 빅 엔디안은 우리가 바이트 숫자를 쓸 때와 똑같다. 최상위 비트(Most Significant Bit, MSB)를 메모리의 가장 낮은 주소에 배치시켜 나머지를 쭉 나열시킨다. 말그대로 제일 큰 값을 먼저 나열시키는 방법이다. 사람이 숫자를 읽고 쓰는 방법과 똑같기 때문에 디버깅 과정에서 메모리의..
문제 문제 상황은 다음과 같다. DirectX12 튜토리얼 관련 코드 작성 후 Visual Studio 2022의 Debug > Graphics > Start Graphics Debugging 디버깅 창에서 프레임 캡처 후 Analysis 했더니 E_NOINTERFACE (0x80004002) 오류 발생 검색해보니 특정 Windows 10 버전 이후로는 PIX라는 앱으로 디버깅을 해야한다고 함 PIX 설치 및 관련 코드 추가 작성 PIX로 해봐도 똑같은 오류 발생 간단히 말하자면 Visual Studio 2022와 PIX로 프레임 캡처 후 분석을 하려 했더니 E_NOINTERFACE (0x80004002) 오류가 발생했다. 해결 Windows 10 설정 > 업데이트 및 보안 > 개발자용에 들어가서 개발자..
군대에 있을때 해봐야지하고 까먹고 있었는데 얼마전에 여기 블로그에 글써놓은거 보고 생각나서 설치해봤다. 소스코드는 github.com/Virtus77/pysc2-agent에 올리고 있다. 지금은 사실 직접 짠 코드는 아니고 github.com/skjb/pysc2-tutorial 이걸 보고 구조를 익히고 있다. Create Game Reset Observe Act If game is not finished go Observe else Reward go Reset 전체 흐름이 이렇게 진행되는데 사람이 실제로 게임하는 방식을 그대로 시뮬레이팅 하는 방식이 신기하다. 예를들어 배럭을 지을때 scv선택, 키보드B, 키보드S, 클릭 이런 일련의 동작을 action으로 만들어서 사용한다. 사진엔 안나와있지만 화면(카..