공부/Unity

24.04.04

월러비 2024. 4. 5. 21:25

실행 순서

  • 각자의 Start가 전부 끝난 다음에 Update 가 실행되는것이 아니라 각자 알아서 start 끝낸 다음에 Update 실행된다.

컴퓨터 구조

  1. SSD(가상메모리)에 실행 파일이 저장되이싿.
  2. 렘으로 실행파일이 보내진다.
  3. 실행파일 안에는 COde영역, Data(static 저장) 영역, Heap 영역, Satck이 있다.
  4. CPU로 실행파일이 보내지면 레지스터에서 실행된다.

스레드

  • 프로세스보다 작은 단위다
    • 프로세스는 메모리 공유가 안되지만, 스레드는 메모리 공유가 가능하다

컨텍스트 스위칭

  • 처리되는 시간보다 프로세스 또는 스레드간 교체되는 상황을 말한다.
  • 컨텍스트 스위칭 오버헤드 : 처리시간보다 실행시간이 더 긴 상황이다.
    • 발생 예시 (5교시 녹음 8분)
    • 분할 / 정복 병합 정렬
    • 렌더링 파이프라인의 VS

레이스 컨디션 (경쟁상태)

  • 프로세스 혹은 스레드가 실행 리소스를 차지하는 과정을 말한다.
    • 실행 중 우선순위가 더 급한 실행에 리소스를 뺴앗길 수 있다.
  • Mutex (상호배제)
    • 리소스를 차지한 실행이 락을 걸어 리소스를 뺴앗기지 않게 한다.
    • 하나만 들어갈 수 있다.
    • 이걸 임계영역(Critical section)이라고 한다.
  • 세마포어
    • 한번에 들어갈 수 있는 실행의 카운터를 세서 여러개의 실행이 동시에 들어갈 수 있도록 끝난 실행이 있다면 다른 실행을 들어가게 하는 기능이다.
    • 여러개가 동시에 들어간다.

DeadLock

Update

  • 키입력이나 매 프레임마다 실행되는 함수들을 넣는다.
  • GmaeLogic Thread라고 부른다.

Render

  • GameRendering Thread라고 부른다.

구조체

  • 구조체는 무조건 초기화는 생성자에서만 가능하다.
    • 읽기 전용이다.
    • 초기화를 하려면 임시공간에 뭐가 들어갈지 모르기 떄문에 구조체 안의 변수들 전부 접근해서 초기화해줘야한다.
    • 다른곳에서 구조체 내부 변수에 값을 준다고 해도 초기화 당시에 임시공간에 저장된 변수에 접근한게 아니므로 에러가 난다.
  • 값형식이다.
  • 클래스와 선언이 같지만 역할이 다르다.
    • A ob = ndw A(10, 20, 30); ⇒ 클래스와 구조체 생성자 선언 및 초기화
    • 클래스는 ob에 클래스의 주소를 스택에 저장하고 this로 클래스 내부에 있는것을 가져온다.
      • 힙 공간에 들어간다.
    • 구조체는 임시공간이 생성되고 변수가 저장된다. (이때까지는 함수도 저장이 안되있다.)
      • 스택에 저장된 변수와 함수가 있기때문에 스택의 생성자가 호출되고, 임시공간에 변수에 값을 할당하고 그걸 스택 변수에 복사한다.
      • 이건 힙 공간에 저장되지 않는다.

이론 (박싱, 언박싱)

  • int a = 10; ⇒ 값 형식 정적 할당 ⇒ 스택 영역에 저장된다.
    • 업 캐스팅은 무조건 가능하기에 Object b = a; 가 가능하다. ⇒ 참조형식이다. (힙 공간에 저장)
    • 위의 경우를 박싱(Boxing), 반대의 경우를 언박싱(UnBoxing)이라 한다.
      • 박싱 : b에 a의 크기만큼 공간을 만들고 스택에 주소를 저장한다. 즉, 값 형식을 참조형식으로 바꾼다.
      • 언박싱 : int c = (int)b; 가 있다면 스택에 c의 공간을 만들고 b의 값을 넣는다. 즉, 참조형식을 값형식으로 바꾼다.

'공부 > Unity' 카테고리의 다른 글

24.04.08  (0) 2024.04.09
24.04.05  (0) 2024.04.05
24.04.03  (0) 2024.04.03
24.04.02  (0) 2024.04.02
24.04.01  (1) 2024.04.01