프로세스와 스레드 정리
프로세스는 스레드들의 공유 공간
- 모든 스레드의 주소 공간이 프로세스 주소 공간 내에 형성되고 공유
프로세스는 운영체제가 응용프로그램을 적재하는 단위이고, 스레드는 실행 단위
PCB에 저장된 정보는 환경 컨텍스트, TCB에 저장된 정보는 실행 컨텍스트
- PCB : 모든 스레드가 공유하는 프로세스의 정보 저장
- TCB : 현재 실행 중인 실행 단위 정보 저장
다른 프로세스에 속한 스레드로의 스위칭보다 동일한 프로세스에 속한 스레드 스위칭 속도가 빠름
프로세스에 속한 모든 스레드가 종료될 때 프로세스 종료
멀티스레딩으로 응용프로그램 작성할 때 장점
높은 실행 성능
- 병렬 실행
사용자에 대한 우수한 응답성
- 한 스레드가 블록되어도 다른 스레드를 통해 사용자 인터페이스 가능
서버 프로그램의 우수한 응답성
- 웹 서버나 파일 서버 등은 동시에 많은 사용자들의 접근
- 이들을 병렬적으로 서비스하는데 우수
시스템 자원 사용의 효율성
- 스레드는 프로세스에 비해 생성, 유지 시 메모리나 자원 적게 사용
응용 프로그램 구조의 단순화
- 작업 기준으로 응용프로그램을 여러 함수로 분할하고, 각 함수 별로 스레드를 만들어 동시 실행
- 새로운 기능 추가 용이, 프로그램의 높은 확장성
작성이 쉽고 효율적인 통신
멀티스레딩이 있어 주의할 점
여러 개의 스레드 중 한 스레드가 fork()를 호출한 경우
- 새로 생성된 프로세스는 fork()를 호출한 스레드로만 구성
- 심각한 문제
한 스레드가 exec()를 호출한 경우
- 현재 프로세스의 모든 스레드가 종료되고, 프로세스 주소 공간에 새로운 응용프로그램이 적재되어 실행
스레드 사이의 동기화 문제
- 다수 스레드의 공유 데이터에 대한 엑세스 시 공유 데이터 훼손 가능성 -> 동기화 기법으로 해결