정보처리기사를 공부할 때나 학교에서 시스템 소프트웨어 수업을 들을 때 프로세스라는 단어를 많이 볼 수있다. 제일 헷갈렸던 것은 프로그램과 프로세스, 멀티 프로세싱과 멀티 쓰레드이었다.
캐싱는 많이 사용되거나 요청되는 데이터, 결과를 빠르게 제공하기 위해 사용되는 기술이다. 캐싱은 운영체제, 하드워에, 네트워킹, 데이터베이스 등 다양한 분야에서 활용되는 기술이며 요청받은 데이터를 반환하기 전에 특정 메모리에 저장한다는 기본개념은 같다.
메모리 배리어는 멀티 프로세서(멀티 쓰레드) 시스템에서 메모리 연산의 순서를 제어하는 방법이다. 메모리 배리어가 필요한 이유는 CPU나 컴파일러가 속도 최적화를 위해 메모리 연산의 순서를 바꿀 수 있기 때문이다.
경쟁조건, 경합조건이라 불리는 RaceCondition은 멀티 쓰레드 환경에서 공유 자원에 동시에 접근하고 수정하려 할 때 쓰레드의 실행순서나 타이밍에 따라 결과가 달라지는 상황을 얘기한다.
교착상태(DeadLock)은 두 개 이상의 프로세스(쓰레드)가 서로가 가지고 있는 자원을 기다리는 상황이 발생해 무한정 대기하는 상태를 의미한다. 교착상태가 발생하는 상황을 그림으로 나타내면 아래 그림과 같다.
임계영역(Critical Section)은 멀티 프로세스(쓰레드) 환경에서 공유 자원을 변경하는 코드부분을 의미한다. 두 개 이상의 프로세스(쓰레드)가 동시에 임계영역에 진입하게 되면 데이터 불일치와 같은 문제상황이 발생할 수 있다.
Context Switch는 CPU가 현재 실행중인 쓰레드에서 다른 쓰레드로 변경하는 과정을 의미한다. 현재 실행중인 쓰레드의 상태정보를 Context라 하고 다른 쓰레드로의 전환을 위해 Context를 변경한다는 의미이다.