반응형
SMALL

- 스레드
- 여러 프로세스이 실행 가능한 가장 작은 단위
- 하나의 프로세스는 여러개의 스레드를 가질수 있다
- 코드, 데이터, 스택,힙 영역을 공유하며 그외의영역은 각각 생성된다.
- 멀티스레딩
- 프로세스 내 작업을 여러개의 스레드, 멀티스레드로 처리하는 기법
- 스레드 끼리 자원을 공유하기 때문에 효율성이 높다.
- 하나의 스레드가 중단(blocked)되어도 다른 스레드는 실행(Running) 상태일수 있기 중단이 되지 않고 실행가능
- 동시성에서는 장점이 있지만 하나의 스레드에 문제가 생길시 다른 스레드에도 영향을 미칠수 있음
- 예시로는 웹브라우저의 랜더러 프로세스를 예로 들수 있다.
- *예시의 안에는 메인, 워커, 컴포지터, 레스터 스레드가 존재한다.
*여기서 동시성이란?
- 서로 독립적인 작업들을 작은 단위로 나누고 동시에 실행되는 것처럼 보여준는것
- 공유자원과 임계영역
- 공유자원(Shared resources)
- 시스템 안에서 각 프로세스 스레드가 함께 접근할수 있는 모니터,프린터, 메모리, 파일, 데이터 등의 자원이나 변수를 의미한다.
- 공유 자원을 두개 이상의 프로세스가 읽거나 쓴다면 이를 경쟁 상태 (race condition) 이라고 한다.
(동시에 접근 시도함으로 인해 타이밍이나 순서에 따라 결과값에 영향을 줄수 있는 상태)
- 임계 영역(Critical section)
- 둘 이상의 프로세스 스레드가 공유자원에 접근할때 순서등의 이유로 결과가 달라지는 코드 영역
- 이를 해결하기위한 방법은 세가지로 아래와 같다.
- 뮤텍스 (mutex) : 프로세스 또는 스레드가 공유자원을 lock() 을 통해 잠금 설정하고 사용한 후에는 unlock() 을 통해 잠금 해제하는 객체이다. 잠금 또는 잠금 해제라는 상태만을 가진다.
- 세마포어 (semaphore) : 일반화된 뮤텍스이다. 간단한 정수 값과 두가지 함수 wait(p함수라고도 함) 과 signal(V함수) 로 공유자원에 대한 접근을 처리한다. 조건 변수는 없으며 프로세스나 스레드가 세마포어 값을 수정할때 다른 프로세스나 스레드는 동시에 값을 수정할수 없다.
- 바이너리 세마포어 : 0과 1 값만 가질수 있는 세마포어 , 뮤텍스와 비슷해보이지만 뮤텍스는 '잠금 메커니즘' 세마포어는 '신호 메커니즘' 이다. ( 노래를 듣다가 전화가 오면 통화 처리작업 인터페이스가 등장하는걸 상상하면 된다)
- wait() : 자신의 차례가 올 때까지 기다리는 함수.
- signal() : 다음 프로세스로 순서를 넘겨주는 함수.
- 모니터 : 둘이상의 스레드나 프로세스가 공유 자원에 안전하게 접근할수 있도록 공유 자원을 숨기고 해당 접근에 대한 인터페이스만 제공한다.
- 위 방법들 모두 상호배제, 한정대기, 융통성 이라는 조건을 만족한다.
- 상호 배제 : 한 프로세스가 임게 영역에 들어갔을때 다른 프로세스는 들어갈수 없다
- 한정 대기 : 특정 프로세스가 영원히 임계 영역에 들어가지 못하면 안된다.
- 융통성 : 한 프로세스가 다른 프로세스의 일을 방해해서는 안된다.
- 이 방법의 토대가 되는 메커니즘은 잠금(lock) 이다.
- 교착상태 (deadlock)
- 두개이상의 프로세스들이 서로가 가진 자원을 기다리며 중단된 상태
- 원인은 아래 4가지가 있다
- 상호 배제 : 한 프로세스가 자원을 독점하고 있고 다른 프로세스들은 접근을 불가한 상태
- 점유 대기 : 특정 프로세스가 점유한 자원을 다른 프로세스가 요청하는 상태
- 비선점 : 다른 프로세스의 자원을 강제적으로 가져올수 없게된 상태
- 환형 대기 : 서로가 서로의 자원을 요구하는 상황.
- 해결방법
- 자원을 할당할 때 애초에 조건이 성립되지 않도록 설계한다.
- 자원의 할당을 교착 가능성이 없을때만 할당한다. 이때 프로세스당 요청할 자원들의 최대치를 통해 자원 할당 가능 여부를 파악하는 '은행원 알고리즘' 을 사용한다.
- 교착이 발생하면 사이클이 있는지 찾아보고 이에 관련된 프로세스를 한개씩 지운다.
- 교착상태는 드물게 일어나기 때문에 이를 처리하는 비용이 더 커서 아예 사용자가 작업을 종료한다. ( 현대 운영체제는 이러한 방법을 채택했다. 예 : 응답없음 등 )
- 공유자원(Shared resources)
*은행원 알고리즘 ?
- 총 자원의 양과 현재 할당한 자원의 양을 기준으로 안정 또는 불안정 상태로 나누고 안정 상태로 가도록 자원을 할당하는 알고리즘
반응형
LIST
'CS > CS 정리' 카테고리의 다른 글
| [CS] DB의 종류 (0) | 2023.04.24 |
|---|---|
| [CS] 데이터베이스 (1) | 2023.04.22 |
| [CS] 멀티 프로세싱 간단 정리 . 1 (0) | 2023.04.09 |
| [CS] PCB 간단 정리 (0) | 2023.04.08 |
| [CS] 프로세스 메모리 구조 간단 정리 (0) | 2023.04.06 |