[C++] C++ 언어는 왜 사용하는 걸까
·
C++/문법 정리
C++의 장점1. 가상머신이 존재하지 않기때문에 메모리 최적화를 개발자가 직접 할 수 있다.2. C++로 작성한 프로그램은 가상머신을 거치지 않고 운영체제로 바로 실행이 되기때문에 속도가 빠르다. C++의 단점1. 메모리 관리를 직접 해야하므로 개발 속도가 C#에 비해 느리며, 실수할 여지가 많다.느낀 점C++과 C#의 차이를 모르고, 유니티와 언리얼을 활용하여 개발을 했습니다. C++과 C#의 특징을 알고나니 C++이 얼마나 우세한 언어인지 체감하는 것 같아요. C#을 사용하는 유니티 게임엔진 또한 C++로 개발되었다는 사실만으로도 개발자에게 C++은 필수 언어임을 인지하게 되는 것 같습니다.다만, 개발 속도가 중요한 상황에서는 C#이 우세하다고 하니 각각의 상황에 맞게 활용하면 좋을 것 같네요 !
[운영체제] 프로세스의 실행 과정
·
컴퓨터 과학/운영체제
PCB(Process Control Block): 프로세스와 관련된 정보를 내포하는 구조체의 일종이다.PCB에 담긴 정보- 프로세스 ID- 실행 과정에서 사용한 레지스터 값- 프로세스 상태- CPU 스케줄링 우선순위 정보- 메모리 위치 정보- 프로세스가 사용한 파일 및 입출력장치 관련 정보 프로세스 테이블: 실행중인 PCB의 모음이다.새롭게 실행되는 프로세스가 있다면, 해당 프로세스의 PCB를 프로세스 테이블에 추가하고 필요한 자원을 할당한다. 반대로, 종료되는 프로세스가 있다면 사용 중이던 자원을 해제하고 해당 PCB도 프로세스 테이블에서 삭제한다.좀비 프로세스: 프로세스가 비정상 종료되어 프로세스 테이블에 종료된 PCB가 남아있는 상태를 뜻한다.  타이머(타임아웃) 인터럽트: 시간이 끝났음을 알리는 ..
[운영체제] 프로세스의 종류
·
컴퓨터 과학/운영체제
포그라운드 프로세스: 사용자가 보는 공간에서 사용자와 상호작용하며 실행되는 프로세스작업관리자에 들어가보면 앱이라고 표시되는 프로세스들이 포그라운드 프로세스이다.  백그라운드 프로세스: 사용자가 보지 못 하는 공간에서 실행되는 프로세스작업관리자에서 백그라운드 프로세스라고 정확히 명시되어있다.  데몬(서비스): 백그라운드 프로세스 중에서 사용자와 상호작용 없이 주어진 작업만 수행되는 프로세스항상 돌아가고 있어야하는 웹 서버에서 주로 사용된다. 대표적인 예시로 Apache 웹서버의 httpd가 데몬 프로그램이라고 하는데, 사용해보지 않아서 뭔지는 모르겠다 !추가로 작업관리자에 들어가서 서비스 목록에 표시되는 프로세스들이 데몬(서비스)에 해당한다.느낀 점지금까지 포그라운드 프로세스는 현재 실행해서 보고있는 프로..
[언리얼엔진] Random 기능에 대해서
·
언리얼 엔진
1. Random 난수 생성더보기FMath::RandRange(Min, Max); 위의 코드를 활용하면 Min ~ Max 사이의 정수 값을 랜덤으로 얻을 수 있다. 이때, Min과 Max도 포함되니 만약 0에서 3사이의 값을 얻고싶다면 FMath::RandRange(0, 3); 으로 작성하면 된다.2. Random 활용더보기// FileName.hUENUM(BlueprintType)enum class ERotationAxis : uint8{ Roll UMETA(DisplayName = "Roll"), Pitch UMETA(DisplayName = "Pitch"), Yaw UMETA(DisplayName = "Yaw")};//FileName.cpp// 랜덤하게 Roll, Pitch, Yaw 중 하나 선택R..
[운영체제] 운영체제란
·
컴퓨터 과학/운영체제
운영체제더보기특별한 프로그램으로 자원 할당 및 관리, 프로세스 및 스레드 관리를 수행한다 운영체제의 핵심 기능을 담당하는 부분을 커널이라고 한다. 위에서 지칭한 "자원"은 프로그램 실행에 필요한 요소를 뜻하며, 실행에 필요한 데이터(소프트웨어) 혹은 실행에 필요한 부품(하드웨어)를 자원이라고 한다.운영체제의 대표적 기능더보기1. 자원 할당 및 관리- CPU 관리 : CPU 스케줄링- 메모리 관리 : 가상 메모리- 파일/디렉터리 관리 : 파일 시스템2. 프로세스 및 스레드 관리- 프로세스와 스레드- 동기화와 교착 상태3. 운영체제의 큰 그림- 커널- 시스템 느낀 점컴퓨터 전공 수업으로 운영체제를 듣고, 오랜만에 다시 보니까 기억이 새록새록 나네요 !그때는 시험을 위한 공부를 했기때문에 지금은 기억에 뚜렷하..
[언리얼엔진] 프로퍼티 시스템 (리플렉션)
·
언리얼 엔진
프로퍼티 시스템 (리플렉션)더보기프로그램이 실행시간에 자기자신을 조사하는 기능이다. 리플렉션 시스템에 보이도록 주석을 달아주면 Unreal Header Tool (UHT)가 프로젝트를 컴파일할 때 해당 정보를 수집한다. 이런 리플렉션 기능을 사용하려면 파일 상단에 특수한 include를 추가해주어야 한다.#include "FileName.generated.h" 이후 클래스 앞에 UCLASS( )를 선언하고, 클래스 내부에 GENERATED_BODY( )를 선언해주면 클래스가 리플렉션에 반영된다.UPROPERTY더보기 클래스인스턴스 VisibleAnywhere XX EditAnywhere  OO EditDefaultsOnly  OX EditInstanceOnly  XO - BlueprintReadOnly ..
[언리얼엔진] 액터 라이프사이클
·
언리얼 엔진
1. 라이프사이클이란 ?더보기액터가 생성되어 소멸될 때까지 거치는 일련의 과정을 의미한다.  https://dev.epicgames.com/documentation/ko-kr/unreal-engine/unreal-engine-actor-lifecycle언리얼엔진 공식문서를 참고해보면, 액터의 라이프사이클이 되게 세부적으로 나누어져있다.이 중에 대표적으로 사용되는 6가지를 알아보자.AItem::AItem()void AItem::PostInitializeComponents()void AItem::BeginPlay()void AItem::Tick(float DeltaTime)void AItem::Destroyed()void AItem::EndPlay(const EEndPlayReason::Type EndPla..
[컴퓨터구조] 입출력 기법
·
컴퓨터 과학/컴퓨터구조
1. 장치 컨트롤러, 드라이버더보기장치 컨트롤러는 CPU와 입출력장치 사이의 통신을 중개하는 하드웨어- 여기서 입출력 장치는 보조기억장치를 포함- 장치 컨트롤러내에 RAM이 존재하는 경우도 있음- 정보를 주고받는 방법으로 프로그램 입출력, 인터럽트 기반 입출력, DMA 입출력 존재 장치 드라이버는 장치 컨트롤러가 컴퓨터 내부의 정보를 주고받을 수 있도록 하는 프로그램1-1. 프로그램 입출력더보기프로그램 속 명령어로 입출력 작업을 수행하는 방법프로그램 입출력 방식1. 고립형 입출력 : 입출력장치, 메모리에 접근하는 주소를 별도의 주소 공간으로 간주하는 방식2. 메모리 맵 입출력: 메모리에 부여된 주소 공간의 일부를 입출력장치를 식별하기 위한 주소 공간으로 사용하는 방식 1-2. 인터럽트 기반 입출력더보기P..