정보처리/OS
[OS-05] 스레드&문맥 교환
별천랑
2021. 2. 7. 16:58
1. 스레드의 정의 (Thread)
- 프로세스 내에서의 작업 단위로 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위
- 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 두 개 이상의 스레드가 존재하는 경우에는 다중 스레드라고 함
- 프로세스의 일부 특성을 갖고 있기 때문에 경량 프로세스라고도 함
- 프로세스 내부에 포함되는 스레드는 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신함
- 스레드를 사용하면 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상할 수 있음
2. 스레드의 분류
- 사용자 수준의 스레드
- 사용자가 만든 라이브러리를 사용하여 스레드를 운용
- 속도는 빠르지만 구현이 어려움
- 커널 수준의 스레드
- 운영체제의 커널에 의해 스레드를 운용
- 구현이 쉽지만 속도가 느림
3. 문맥 교환(Context Switching)
- 하나의 프로세스가 CPU를 사용 중인 상태에서 다른 프로세스가 CPU를 사용하도록 하기 위해, 이전의 프로세스의 상태(문맥)를 보관하고 새로운 프로레스의 상태를 적재하는 작업을 말한다.
- 다중 프로그래밍 작성의 환경에서 어떤 프로그램의 실행을 중단하고 다른 프로그램의 실행을 재개할 때, 그 프로그램의 재개에 필요한 환경을 다시 설정하는 것을 의미하며, 운영체제에서 Overhead의 큰 요인 중 하나로 작용하는 것