본문 바로가기

프로그래밍/C++

동기화 (Synchronization)

스레드 동기화
: 스레드의 실행순서를 정의하고, 이 순서에 따르도록 하는 것.

메모리 접근 에 있어서 동시접근을 막는 것도 해당함.

유저모드 동기화 (User Mode Synchronize)
: 동기화가 진행되는 과정에서 커널의 힘을 빌리지 않는 동기화 기법. 동기화 를 위해서 커널 모드로의 전환이 불필요하기 때문에 성능상에 이점이 있다.

커널모드 동기화 (Kernel Mode Synchronize)
: 커널에서 제공하는 동기화 기능을 활용하는 방법. 동기화에 관련된 함수가  호출될 때마다 커널 모드로의 변경이 필요하고, 이는 성능의 저하로 이어진다

임계영역 (Critical Section)
: 문제의 원인이 될 수 있는 코드의 블록. 배타적 접근이 요구되는 공유 리소 스에 접근하는 코드 블록

뮤텍스 (Mutex, Mutual Exclusion)
: 임계영역을 가진 스레드들의 Running Time이 서로 겹치지 않게 각각 단독으로 실행되게 한다

세마포어 (Semaphore)
: 리소스의 상태를 나타내는 간단한 카운터. 운영체제의 리소스를 경쟁적으로 사용하는 다중 프로세스에서 행동을 조정하거나 동기화시킨다.

메모리의 범위와 종류

1. 메인 메모리
: 램(RAM)이라고도 한다. D-RAM 계열의 메모리.

2. 레지스터
: CPU 안에 내장되어 있어서 연산을 위한 저장소를 제공

3. 캐시(Cache)
: CPU와 RAM 사이에서 중간 저장소 역할을 하는 메모리. D-RAM보

다 빠른 S- RAM으로 구성되어 있다. 캐시는 CPU에 근접해 있는 메모리 개념이다.

4. 하드디스크 : 크고 작은 파일들을 저장하기 위한 용도.

메모리 계층 구조
프로그램이 실행되는 동안에 메모리가 하는 역할은 데이터의 입력 및 출력이다

CPU와 가까이에 있을 수록 빠르고, 멀리 있을수록 속도가 느리다.

모든 메모리의 역할이 피라미드 구조에서 자신보다 아래에 있는 메모리를 캐시하기 위해서 존재한다

병목현상
: 어떤 시스템 내 데이터의 집중적인 사용으로 인해 전체 시스템에 절대적 영 향을 미치는 부분의 사용 빈도가 늘어나 그 부분의 성능이 저하되어 전체 시 스템이 마비되는 현상

Temporal Locality
: 프로그램 실행 시 한번 접근이 이뤄진 주소의 메모리 영역은 자주 접근하게  된다는 프로그램 특성

Spatial Locality
: 프로그램 실행 시 접근하는 메모리 영역은 이미 접근이 이루어진 영역의 근처일 확률이 높다는 프로그램 성격

Cache Friendly Code
: 캐시의 도움을 받을 수 있도록 구현된 프로그램

Cache Hit
: 캐시에 해당 데이터가 존재할 때

Cache Miss
: 캐시에 해당 데이터가 존재하지 않을 때

LRU (Least-Recently Used)
: 가장 오래 전에 참조된 블록을 밀어내는 알고리즘

가상 주소 시스템

가상 주소 지정 (Virtual Addressing)
: 가상의 주소를 지정하는 것

가상 메모리 공간 (Virtual Address Space)
: 가상 주소 지정을 통해 할당받는 공간

페이지 (Page)
: 가상 메모리 블록

페이지 프레임 (Page Frame)
: 실제 메인 메모리 블록

MMU (Memory Management Unit)
: 가상 메모리와 실제 물리 메모리 사이에서 주소의 변환을 담당

한다

SEH (Structed Exception Handling)

하드웨어 예외 (Hardware Exception)
: 하드웨어에서 인식하고 알려주는 예외

소프트웨어 예외 (Software Exception)
: 소프트웨어에서 감지하는 예외

종료 핸들러 (Termination Handler)
: _try, _finally에 의해 처리한다

예외 핸들러 (Exception Handler)
: _try, _except에 의해 처리한다

블로킹 (Blocking) 함수
: 호출된 함수가 일을 다 끝낸 다음 반환하는 함수

넌블로킹 (Non-Blocking) 함수
: 호출되자마자 바로 반환하는 함수

동기 I/O
: 블로킹 함수를 사용한다

비동기 I/O
: 넌블로킹 함수를 사용한다

중첩 I/O
: 비동기 I/O의 종류이다. I/O 연산이 중첩되어 실행되는 것

완료루틴
: I/O 연산이 완료되었을 때 실행되는 루틴

'프로그래밍 > C++' 카테고리의 다른 글

Lambda (람다)  (0) 2019.03.07
가상 메모리 (Virtual Memory)  (0) 2019.02.23
커널 영역과 유저 영역  (0) 2019.02.20
스레드 (Thread)  (0) 2019.02.19
커널 (Kernel)  (0) 2019.02.13