언어 및 엔진/C++(39)
-
[C++] Friend Keyword
Friend Keyword private, protected 모두 friend로 선언된 대상에게는 public으로 작용 선언이 되는 쪽에서 선언을 함 단 방향, 명시적 지정, 한 번에 하나씩만 가능, 상속 불가 private, protected의 변수, 함수가 전역변수, 함수처럼 사용됨 사용 가능한 곳 : 전역 변수, 멤버 함수, 클래스 정보은닉의 예외
2024.04.19 -
[C++] Paging
Paging 페이징 가상 메모리는 페이지로 나뉘고 물리 메모리는 프레임으로 나뉨, 페이지 번호, 시작 물리주소 저장, 페이지와 일치하지 않는 메모리 요구 시 메모리 단편화 발생 세그멘테이션 서로 다른 크기의 논리적 단위인 세그먼트로 분할, 기준(시작 주소), 한계(길이)저장, 외부 단편화 발생 가능 프레그멘테이션 단편화. 사용 가능한 메모리가 충분하지만 사용할 수 없는 상태 내부 단편화 : 30중에 20을 사용하고 10이 남음 외부 단편화 : 30을 10씩 나눈 후 20을 사용하여 10이 남음 프레그멘테이션 해결 방안 메모리 풀 크기, 갯수 모두 사용자가 원하는 만큼 할당 받고 반납 페이징 : 내부단편화 발생 세그멘테이션 : 외부단편화 발생
2024.04.19 -
[C++] DeadLock
DeadLock 서로가 상대방의 자원을 내놓기를 바라면서 무기한 연기 상황에 빠지는 것 => 교착상태 발생 조건 상호 배제, 점유 대기, 비선점, 순환 대기 상호 배제 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권 요구 점유 대기 프로세스가 할당 된 자원을 가진 상태에서 다른 자원을 기다린다. 비선점 프로세스가 어떤 자원의 사용을 끝낼 때 까지 그 자원을 뺏을 수 없다 순환 대기 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있다 해결 방안 상호 배제 해결 : 자원은 한 번에 한 프로세스만이 사용 점유 대기 해결 : 하나의 자원을 점유하고 있으면서 다른 자원을 추가로 점유하기 위해 대기하는 프로세스가 있어야 함 비선점 해결 : 다른 프로세스의 사용이 끝날 때까지 강제로 자원을 뺏..
2024.04.19 -
[C++] Multi Process / Multi Thread
Multi Process / Multi Thread Multi Process 컴퓨터에서 연속적으로 실행되고 있는 프로그램. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스. 운영체제로부터 시스템 자원을 할당받는 작업의 단위. 동적인 개념으로는 실행된 프로그램을 의미한다. 부모 자식간의 관계여도 독립적인 메모리 공간을 가지고 있고, 공유하지 않음 Multi Thread 프로세스 내에서 실행되는 여러 흐름의 단위. 프로세스의 특정한 수행 경로. 프로세스가 할당 받은 자원을 이용하는 실행의 단위. 부모 자식간의 관계라면 메모리 공간을 공유하고 있음 장점 : 메모리를 공유하기 때문에 컨텍스트 스위칭 시에 시간 손실이 줄어든다. 전역, 정적, new, malloc에 의한 모든 자료 공유 단점 : 하나의 변수를 ..
2024.04.19 -
[C++] Modern C++
Modern C++ Auto 변수 정의 시 자료형을 지정해 주지 않아도 초기화 시 타입이 결정됨. range based for for문을 쉽고 안전하게 쓰기 위한 것 값 복사 방지 : 레퍼런스 받아오기 값 변경 방지 : const이용 enum class 강한 형 사용 / 범위 unscoped enumeration : 자료형이 붙지 않음 scoped enumeration : 자료형이 붙음 클래스로 선언하면 네임스페이스를 붙여야 한다. non-static data member initializers 멤버변수의 선언과 동시에 초기화 가능 initializer lists 초기화 리스트 전용 타입. 함수의 인자, 유저 정의형, STL 컨테이너의 초기화 가능 default / delete definition def..
2024.04.19 -
[C++] 메모리 구조와 메모리 단편화
메모리 구조와 메모리 단편화 메모리 구조 프로그램을 실행할 때 운영체제에서 메모리에 공간을 할당하는데 그 공간은 4가지로 분류 Code - 코드 영역 Data - 데이터, 전역.정적 변수 Stack - 지역 변수, 매개 변수, 컴파일 결정 Heap - 런 타임 결정, 사용자의 동적 할당 메모리 단편화 사용 가능한 메모리가 충분히 존재하지만 할당이 불가능한 상태. 박싱, 언박싱으로 메모리에 빠진 부분이 많은 상태.
2024.04.19