728x90
소개
스레드
- 프로세스 내부의 흐름
- 공유자원(code, data, heap)과 개별자원(stack)이 있음
- TCB에 상태정보 저장
프로세스
- 프로그램
- 각각 독립된 메모리 영역이 있음(
code
,data
,stack
,heap
) - 서로 간 메모리 영역을 침범할 수 없음
- 프로세스 당 최소 1개의 스레드가 있음
- PCB에 상태정보 저장
멀티 프로세싱
- CPU가 여러 개가 존재하여 1개 이상의 프로세스를 동시에 처리하는 것입니다.(
병행성
) - 메모리 침범 문제가 OS 차원에서 해결되어 메모리의 독립성이 보장됩니다.
- 각 프로세스가 메모리 상에 독립적인 영역을 소유하여 작업량이 많을수록 오버헤드가 발생합니다.
Context Switching
으로 인하여 성능 저하가 발생합니다.
멀티 스레딩
- 1개의 프로그램에서 여러 스레드가 각각 작업을 처리합니다.
- 스택 이외의 메모리 영역을 공유하기 때문에 시간과 자원이 프로세스에 비해서 절약됩니다.
- 공유 메모리에서 전역 변수 등 데이터를 공유할 수 있습니다.
- 공유 메모리 상에 데이터 무결성이 깨질 수 있습니다.
- 하나의 스레드가 데이터를 오염시키면 모든 스레드가 작동 불능 상태가 됩니다.
- 교착 상태를 예방하기 위해서
상호배제 방지
,점유와 대기 방지
,비선점 방지
,순환 대기 방지
를 할 수 있습니다.
'컴퓨터공학 > 운영체제' 카테고리의 다른 글
동시성(Concurrency)과 병렬성(Parallelism) (0) | 2021.06.20 |
---|