본문 바로가기

IT 공부/운영체제

5-6. 멀티 스레드에 관한 이슈

프로세스와 스레드 정리

프로세스는 스레드들의 공유 공간

- 모든 스레드의 주소 공간이 프로세스 주소 공간  내에 형성되고 공유

프로세스는 운영체제가 응용프로그램을 적재하는 단위이고, 스레드는 실행 단위

PCB에 저장된 정보는 환경 컨텍스트, TCB에 저장된 정보는 실행 컨텍스트

- PCB : 모든 스레드가 공유하는 프로세스의 정보 저장

- TCB : 현재 실행 중인 실행 단위 정보 저장

다른 프로세스에 속한 스레드로의 스위칭보다 동일한 프로세스에 속한 스레드 스위칭 속도가 빠름

프로세스에 속한 모든 스레드가 종료될 때 프로세스 종료


멀티스레딩으로 응용프로그램 작성할 때 장점

높은 실행 성능

- 병렬 실행

사용자에 대한 우수한 응답성

- 한 스레드가 블록되어도 다른 스레드를 통해 사용자 인터페이스 가능

서버 프로그램의 우수한 응답성

- 웹 서버나 파일 서버 등은 동시에 많은 사용자들의 접근

- 이들을 병렬적으로 서비스하는데 우수

시스템 자원 사용의 효율성

- 스레드는 프로세스에 비해 생성, 유지 시 메모리나 자원 적게 사용

응용 프로그램 구조의 단순화

- 작업 기준으로 응용프로그램을 여러 함수로 분할하고, 각 함수 별로 스레드를 만들어 동시 실행

- 새로운 기능 추가 용이, 프로그램의 높은 확장성

작성이 쉽고 효율적인 통신


멀티스레딩이 있어 주의할 점

여러 개의 스레드 중 한 스레드가 fork()를 호출한 경우

- 새로 생성된 프로세스는 fork()를 호출한 스레드로만 구성

- 심각한 문제

한 스레드가 exec()를 호출한 경우

- 현재 프로세스의 모든 스레드가 종료되고, 프로세스 주소 공간에 새로운 응용프로그램이 적재되어 실행

스레드 사이의 동기화 문제

- 다수 스레드의 공유 데이터에 대한 엑세스 시 공유 데이터 훼손 가능성 -> 동기화 기법으로 해결