스레드(Thread)
지난주 복습
- 프로세스는 작업 기본 단위로서 “실행중인 프로그램”을 의미한다.
- 프로세스는 실행되면서 생성, 실행,대기, 준비 그리고 종료 상태를 갖는다.
-
운영체제는 여러 개의 프로세스를 관리하기 위하여 프로세스 제어 블럭(PCB, Process Control Block)이라는 자료 구조를 사용한다.
- 각 프로세스의 PCB는 운영체제의 메모리 내부에 존재하며, 각 프로세스마다 하나씩 가지고 있다.
-
CPU 프로세서의 점유권을 변경할 때에는 현재 동작중인 프로세스의 PCB를 백업하는
문맥 교환 작업을 수행하여 이후에 다시 실행을 재개할 수 있도록 한다. - 프로세스들은 항상 부모 프로세스와 자식 프로세스의 관계를 갖고 있어서 전체적으로 트리(tree)구조를 형성한다.
-
부모 프로세스는 자식 프로세스의 종료 상태를 확인해야 하며, 이를 수행하지 않는 경우에는 자식 프로세스가
좀비상태가 될 수 있다. - 새로운 자식 프로세스는 부모 프로세스와 동일한 코드로 동작할 수 도 있고 완전히 새로운 코드를 실행할 수도 있다.
- 다중 프로그래밍 환경에서 다수의 프로세스가 동시에 동작하기 때문에 스케줄링 이슈, 메모리 할당 이슈, 통신 이슈, 통신화 이슈 들이 발생한다.
학습목표
- 스레드의 개념을 설명할 수 있다.
- 프로세스와 스레드 차이를 이해하고 스레드의 장점을 설명할 수 있다.
- 사용자 수준 스레드와 커널 수준 스레드의 장단점을 설명할 수 있다.
학습내용
퀴즈로 확인하기
정리하기
- 스레드는 하나의 프로세스 내에서 코드, 전역 데이터, 힙등의 자원을 공유하면서 독립적으로 동작하는 실행 단위이다.
- 스레드는 프로세스보다 더 적은 비용으로 생성될 수 있으면서 해당 프로그램의 처리 성능을 향상시킬 수 있다.
-
스레드는 사용자 수준 스레드와 커널 스레드로 구분된다.
사용자 수준 스레드는 커널에서 구분 하지 못하기 때문에 문맥교환이 발생하지 않는 장점이 있지만, 하나의 스레드가 대기 상태가 되면 다른 스레드들도 모두 실행이 멈춘다. - 커널 수준 스레드는 문맥교환이 발생하면서 프로세스와 동등한 수준의 기능을 제공 받는다.
- exec 계열의 시스템 호출을 이용하여 프로세스가 전혀 다른 프로그램을 적재하여 동작할 수 있다.