스레드 동기화
: 스레드의 실행순서를 정의하고, 이 순서에 따르도록 하는 것.
메모리 접근 에 있어서 동시접근을 막는 것도 해당함.
유저모드 동기화 (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 |