전체 글 295

[혼자 공부하는 컴퓨터구조와 운영체제] 5_CPU 성능 향상 기법

💡빠른 CPU를 위한 설계 기법빠른 CPU를 위한 명령어 병렬 처리 기법RISC와 CISC의 차이에 대한 이해1) 빠른 CPU를 위한 설계 기법클럭클럭 신호에 맞춰 CPU는 명령어 사이클을 실행클럭 속도가 높은 CPU는 일반적으로 성능이 좋음클럭 속도 → CPU 속도 단위1초에 클럭이 몇 번 반복되는지를 헤르츠(Hz)단위로 측정 클럭 속도는 일정하지 않음기본 클럭 속도/최대 클럭 속도최대 클럭 속도를 강제로 끌어올린 것 → 오버클럭킹 코어와 멀티코어지금까지 알던 ‘명령어를 실행하는 부품’ CPU는 오늘날 코어로 사용됨CPU: 명령어를 사용하는 부품을 여러 개 포함하는 부품코어를 여러 개 포함하고 있는 CPU: 멀티코어CPU / 멀티코어 프로세서하지만, 코어 수에 비례하여 무조건 연산 속도가 증가하지 않..

[UE5] UStruct와 UMap, Algo::Transform

UStruct구조체와 클래스는 구조적으로 큰 차이가 없지만, 현재 추세로 볼 때구조체는 데이터 저장/전송 특화 객체, 클래스는 객체로 사용함 접두사 F를 붙임Reflection을 사용하려면 USTRUCT 매크로를 선언해야 함.내부에 GENERATED_BODY 매크로를 선언하면 UScriptStuct 클래스로 구현되고, 제한적으로 Reflection을 지워하여 UPROPERTY 매크로는 선언 가능하지만 UFUNCTION의 기능의 선언 X. 대부분 힙 메모리 할당 없이 스택 내 데이터로만 사용.    https://dev.epicgames.com/documentation/ko-kr/unreal-engine/structs-in-unreal-engine TMapSTL map과 UCL mapSTL mapUCL T..

[UE5] Unreal Container_TArray와 TSet

C++ STL과 UCL(Unreal Container Library)의 차이 STLSTL은 UCL에 비하여 범용적으로 설계됨STL은 '표준'이기 때문에 호환성이 높음그만큼 많은 기능이 엮여있기 때문에 컴파일 시간이 김 UCLUCL은 언리얼 엔진에 특화되어 있음UCL은 언리얼 오브젝트 구조를 안정적으로 지원함그렇기 때문에 라이브러리가 가볍고, 게임 제작에 최적화되어 있음  UCLTArray는 STL의 vector와 유사.TSet은 STL의 set과 방식이 많이 다름.STL setUCL TSet이진 트리 형태해시 테이블 형태요소 삭제 시, 균형을 위해 재구축요소 삭제 시, 재구축X자료 순회에 적합X빠른 자료 순회 가능 재구축하지 않아 비어있는 데이터 존재 가능메모리 구성이 효율적이지 않음동적 배열의 형태  ..

[UE5] C++과 Unreal의 Delegate

개인적으로 Unity를 사용하던 시절에도 Observer패턴을 구현하거나, EventDispatcher를 활용하여 최대한 디커플링 된 환경을 만드려고 했다. 보기에도 깔끔하고, 커플링 된 부분들을 수정하는 것에 몇 번 데이고 난 후부터 그런 방향으로 작성했던 것 같다. 하지만, 점점 배우면서 OOP가 구조적인 부분 말고 성능면에서 과연 괜찮은 것인가? 이런 Delegate 형태는 어떤가?를 생각하게 된다. 특히 컴퓨터구조를 배우면서 좀 더 성능 측면에서 고려하게 된 것 같다.   Delegate이벤트의 구독-발행함수를 객체처럼 사용발행자-이벤트-구독자 형태이다.  C++에서의 Delegate는 안정성을 검증하기 때문에 런타임에서 RTTI 비교가 성능이 좋지 않음.따라서 잘 쓰이지 않음. (std::bin..

[UE5 / C++] 언리얼 C++ 시작하기

언리얼 표준원 문법/형식자를 알더라도 언리얼이 제공하는 표준을 사용하는 이유?그것이 '표준'이기 때문에. 표준에 맞게 사용하는 것은 매우 중요하다. 결국 모든 것은 '협업'그리고 '유지보수'가 중심이 되기 때문이다. 언리얼을 사용할 때는 언리얼 표준에 맞게 작성해야 원활한 유지보수가 가능하다.  핫리로딩_헤더파일 수정을 라이브코딩으로cpp 파일이 수정되면, Ctrl+Alt+F11로 라이브코딩이 가능하지만, header 파일이 수정되면, dll을 변경한 것이기 때문에 엔진을 다시 시작해야 한다.  Reflection 시스템https://dev.epicgames.com/documentation/ko-kr/unreal-engine/reflection-system-in-unreal-engine  class를 매..

[인프런 CS 전공지식 스터디 3기_운영체제] 5. 데드락

데드락(교착상태)여러 프로세스가 서로의 작업 종료를 기다리다 모두 작업을 진행하지 못하는 상태 : 교착상태공유자원이 원인 교착상태의 필요조건1. 상호배제프로세스가 한 리소스를 점유한 상태에서 다른 프로세스에게 공유 불가한 상태2. 비선점다른 프로세스가 점유한 공유자원을 빼앗을 수 없는 상태3. 점유와 대기공유자원을 점유한 상태에서 다른 공유자원을 점유하고 싶어 하는 상태4. 원형 대기점유와 대기 상태의 프로세스들이 원형을 이룬 상태 교착상태의 예방은 제약이 많고 비효율적.이 대신 교착상태에 빠졌을 때 해결하는 방법을 연구.   데드락 해결교착상태 회피 (예방)프로세스들에게 어느 정도 자원을 할당해야 교착상태가 발생하는지 파악→ 교착상태가 발생하지 않는 수준의 자원 할당 전체 자원의 수 & 할당된 자원의 ..

[인프런 CS 전공지식 스터디 3기_운영체제] 4. 프로세스 동기화

프로세스 간 통신프로세스는 다른 프로세스와 데이터를 주고받으며 통신을 하는 경우도 있음동일 컴퓨터 내의 프로세스/다른 컴퓨터 내의 프로세스와 네트워크를 통한 방법 1. 동일 컴퓨터 내의 프로세스파일/파이프 이용 파일통신을 하려는 프로세스들이 하나의 파일을 읽고 쓰는 방법 파이프운영체제가 생성한 파이프를 통해 데이터를 읽고 쓰는 방법  2. 쓰레드 간 통신한 프로세스 내의 쓰레드 간 통신 방법코드, 데이터, 힙 영역을 공유하기 때문에 데이터, 힙 영역을 이용하여 통신 가능 3. 네트워크를 이용한 방법운영체제가 제공하는 소켓통신 / RPC(원격 프로시저 호출) 통신   공유자원과 임계구역공동으로 이용하는 변수나 파일 : 공유자원공유자원은 프로세스들의 접근 순서에 따라 결과가 달라질 수 있음컨텍스트 스위칭으로..

[혼자 공부하는 컴퓨터구조와 운영체제] 4_CPU의 작동 원리

💡ALU와 제어장치레지스터의 종류와 역할명령어 사이클의 이해인터럽트의 개념 1) ALU와 제어장치ALU받는 정보레지스터를 통해 피연산자제어장치로부터 수행할 연산을 알려주는 제어 신호내보내는 정보연산 수행 결과연산 수행 결괏값 → 일시적으로 레지스터에 저장 (프로그램 실행 속도를 위해)플래그연산 결과에 대한 추가적인 상태 정보플래그 레지스터에 저장부호 플래그제로 플래그캐리 플래그오버플로우 플래그인터럽트 플래그슈퍼바이저 플래그 제어장치제어 신호를 내보냄, 명령어 해석 부품제어 신호: 컴퓨터 부품들을 관리/작동시키는 일종의 전기 신호 받는 정보클럭 신호클럭: 컴퓨터의 모든 부품을 움직일 수 있게 하는 시간 단위해석해야 할 명령어명령어 레지스터로부터 받아 해석 → 제어 신호 발생시킴플래그 레지스터 속 플래그 ..

[인프런 CS 전공지식 스터디 3기_운영체제] 3. CPU스케줄링

CPU스케줄링 개요필수장치인 CPU 프로그램 실행 → 메모리에 프로세스 생성 → 프로세스는 1개 이상의 쓰레드를 가짐 → 프로세스는 CPU를 차지하기 위해 OS의 명령 기다림 → OS가 모든 프로세스에게 CPU를 할당/해제 (CPU스케줄링) 스케줄러(OS)가 고려해야 할 사항어떤 프로세스에게 CPU 리소스를 줘야하는가?할당받은 프로세스는 얼마의 시간 동안 CPU를 사용해야 하는가? →  컴퓨터의 성능에 매우 큰 영향.  CPU를 할당받아 실행하는 작업: CPU Burst입출력 작업: I/O Burst 다중큐프로세스의 상태 중 준비상태와 대기상태는 자료구조 큐로 관리됨 프로세스의 준비상태 → OS가 해당 프로세스의 우선순위를 판단하여 PCB를 준비 큐에 넣음 → CPU스케줄러에 의해 실행상태로 전환 프..

[스터디] 인프런 CS 전공지식 스터디 3기_자료구조와 알고리즘(1주차)

https://www.inflearn.com/course/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EA%B8%B0%EB%B3%B8/dashboard 그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편) 강의 | 감자 - 인프런감자 | , 개발자가 꼭 알아야 할 자료구조 & 알고리즘,그림으로 쉽고 재밌게 알려드려요! 한 번 익힌 기본기가 평생의 코드를 좌우한다구요? 🔍 [임베딩 영상] 개발자의 기본기, 자료구조 & 알고www.inflearn.com  https://www.notion.so/heyhyehye/1ae93b96f04f803291ccc6172e83654c 그림으로 쉽게 배우는 자료구조와 알고리즘 (기본편)..