728x90
반응형
프로세스 간에는 각 프로세스의 데이터 접근이 불가한데
스레드는 하나의 프로세스에 여러개를 생성하여 프로세스의 데이터에 모두 접근할 수 있다.
- Multi Tasking VS Multi Processing VS Multi Thread
- 멀티 태스킹 : 하나의 cpu, 여러개 process
- 멀티 프로세싱 : 여러 cpu, 여러개 process : 하나의 process를 여러 cpu에서 실행하는 방법 ? Thread를 여러개 만들어서 해결 가능- 최근 cpu가 멀티 코어를 가지고 있음
- 멀티스레드
- Thread 장점
- 사용자에 대한 응답성 향상
- 자원 공유 효율
- 코드 간결성
- Thread 단점
- 스레드 중 한 스레드만 문제가 생겨도 전체 프로세스가 영향을 받음
2번 Thread에 문제가 발생하면 전체 Process에 문제가 발생함 - 스레드를 많이 생성하면 context switching이 많이 일어나서 성능 저하 발생
- Thread VS Process
- 프로세스는 독립적, 프로세스간 IPC기법 통신
- 프로세스는 각각 독립적인 자원을 가짐, 스레드는 프로세스 자원 공유
- 프로세스는 자신만의 주소 영역을 가짐, 스레드는 주소영역을 공유
- Thread 동기화 이슈 : 스레드가 여러개 있을 때 실행 순서가 정해져 있지 않아서(스케쥴러가 정하므로) 동시에 읽고 쓰는 과정에 비정상적으로 동작하는 경우
- Mutual Exclusion ( 상호배제 ) : 임계 구역에 대한 접근을 막기 위해 LOCKING mechanism 필요
- Semaphore : 임계 구역에 여러 스레드가 접근할 수 있다. counter를 두어 동시에 점근 가능한 스레드 수를 제어
- 교착상태(Deadlock)
- 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있어서 다음 단계로 진행하지 못하는 상태
- 발생 조건
- 상호 배제 : 프로세스들이 필요로하는 자원에 대한 배타적 통제권 요구
- 점유 대기 : 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다림
- 비선점 : 프로세스가 어떤 자원의 사용을 끝낼때까지 그 자원을 뺏을 수 없음
- 순환 대기 : 각 프로세스는 순환적으로 다음 프로세스가 요구하는 자원을 가지고 있음
- 해결방법
- 예방
- 상호 배제 : 여러 개의 프로세스가 공유 자원을 사용할 수 있도록한다(동기화 문제 발생 가능)
- 점유 대기 : 프로세스가 실행되기 전 필요한 모든 자원을 할당한다
- 비선점 : 자원을 점유하고 있는 프로세스가 다른 자원을 요구할 때 점유하고 있는 자원을 반납하고, 요구한 자원을 사용하기 위해 기다린다
- 순환 대기 : 자원에 고유한 번호를 할당하고, 번호 순서대로 자원을 요구하도록 한다
- 회피
- 은행원 알고리즘 : 프로세스가 자원을 요구할 때 시스템은 자원을 할당한 후에도 안정 상태로 남아있게 되는지 사전에 검사하여 교착 상태를 회피
- 발견
- 회복
- 교착 상태의 프로세스를 모두 중지하거나 교착 상태가 제거될 때까지 한 프로세스씩 중지한다
- 예방
- 기아상태 ( Starvation )
- 여러 프로세스가 부족한 자원을 점유하기 위해 경쟁할 때, 특정 프로세스는 영원히 자원 할당이 안되는 경우
- 해결방안
- 우선순위 변경
- FIFO 기반 요청큐 사용
- 오래 기다린 프로세스의 우선순위 높여줌
- 우선순위 변경
728x90
반응형
'Computer Science > 운영체제' 카테고리의 다른 글
12. 파일시스템 (0) | 2022.08.22 |
---|---|
11. 가상메모리 (0) | 2022.03.04 |
09. 프로세스와 IPC (0) | 2021.08.01 |
08. 프로세스와 Context Switching (0) | 2021.08.01 |
07. 프로세스 구조 (0) | 2021.07.31 |