- 애플리케이션 : 일반 사용자가 사용할 기능을 제공하는 컴퓨터가 실행할 수 있는 명령어들의 집합
- 메모리 : 실행 될 애플리케이션이 상주할 공간
- CPU: 메모리를 실행하는 주체
- 메모리 구조
- 애플리케이션에 할당되는 메모리는 내부적으로 여러영역으로 나뉨
- 그 중 stack메모리 heap 메모리가 있음
- stack 메모리: 함수나 메서드의 지역변수(local variable)와 매개변수(parameter)가 저장됨 함수나 메서드가 호출 될때 마다 스택 프레임(stack frame)이 쌓임
- heap 메모리: 객체가 저장됨(java)
- race condigiton(경쟁상태)
- 여러 프로세스/스레드가 동시에 같은 데이터를 조작할때 타이밍이나 조작 순서에 따라 결과가 달라 질수 있는 상황
- 동기화(synchronization)
- 여러 프로세스/스레드를 종시에 실행해도 공유 데이터의 일관성을 유지
- 임계 영역(critical section)
- 공유 데이터의 일관성을 보장하기 위해 하나의 프로세스/스레드만 접근(mutal exclusion) 실행 가능한 영역
- 동기화를 관리하기 위해 락(lock) 사용
- lock을 관리하는 Test and Set은 CPU atomic 명령어
- 실행 중간에 간섭 받거나 중단 되지 않는다
- 같은 메모리 영역에 대해 동시에 실행 되지 않는다
- 스핀락(spin lock)
- 락을 가질 수 있을 때까지 반복해서 시도 -> 기다리는 동안 CPU 낭비 발생
- 뮤텍스(mutex)
- 락을 가질수 있을 때까지 휴식
- 멀티코어 환경인 경우, critical section 에서의 작동이 컨텍스트 스위칭 발생보다 더 빨리 끝나면 스핀락이 뮤텍스보다 더 이점이 있다.
- 세마포어(sema phore)
- signal mechanism을 가진, 하나이상의 프로세스/스레드가 critical section에 접근 가능하도록 하는 장치
- 뮤텍스는 락을 가져야만 락을 해제 할수 있지만 세마포어는 그렇지 않다.
- 뮤텍스는 priority inheritance 속성을 가진다 그러나 세마포어는 그렇지 않다.
- 상호 배제만 필요하다면 뮤텍스로 작업간의 실행 순서 동기화가 필요하다면 세마포어를 권장.
'CS > Computer Science' 카테고리의 다른 글
MVC(Model-View-Controller) 패턴 (0) | 2024.12.12 |
---|---|
멀티태스킹, 멀티 스레딩, 멀티 프로세싱 (1) | 2024.12.10 |
02/07 함수형 프로그래밍 (0) | 2023.02.07 |
02/06 IPC(Inter Process Communition) (0) | 2023.02.06 |
2/2 애자일 방법론 (0) | 2023.02.06 |