제목 날짜 내용 발행일 23.03.27
해당 포스트는
스레드
에 대해 학습한 내용을 정리하며 기록한 것입니다.
스레드는 명령어가 CPU 를 통해서 수행되는 객체의 단위
하나의 프로세스 내에는 반드시 1개 이상의 스레드가 존재
스레드는 같은 프로세스에 있는 자원과 상태를 공유
같은 프로세스 내에 있는 스레드는 같은 주소 공간에 존재하게 되며 동일한 데이터에 접근할 수 있다.
하나의 스레드가 수정한 메모리는 같은 메모리를 참조하는 스레드에 영향을 미친다.
예를 들어 하나의 스레드에서 오픈한 파일을 다른 스레드가 사용할 수 있다.
프로세스가 종료되면 그 프로세스에 속해있던 스레드도 함께 종료된다.
하나의 프로세스 안에서 여러 개의 루틴을 동시에 수행해서 수행 능력을 향상하려고 할 때 스레드를 사용
독립적으로 수행해서 처리하려고 할 때 사용
즉 여러 개의 작업 단위로 구성된 프로그램에서 요청을 동시에 처리하기 위함
예를 들어, 워드 프로세서에서 사용자로부터 키보드 입력 받거나, 그래픽이나 UI를 그리고 문법 오류를 체크하는 등 워드 프로세서 내에서 여러 요청들을 동시에 처리해야 하는데, 이때 스레드가 필요하게 된다.
스레드는 가상 CPU, 수행 코드, 처리 데이터로 구성
가상 CPU : 인터프리터, 컴파일러에 의해 내부적으로 처리되는 가상 코드
수행 코드 : Thread Class에 구현되어 있는 run() Method 코드
처리 데이터 : Thread에서 처리하는 데이터
프로세스 내에서 실행되는 흐름의 단위
하나의 스레드는 시작해서 종료할 때까지 한번에 하나씩 명령들을 수행
각 스레드마다 call stack이 있다.
나머지 Code, Data, Heap 영역은 스레드 끼리 공유
반면에 프로세스는 다른 프로세스의 메모리에 직접 접근할 수 없다.
스레드는 다른 스레드와 독립적으로 동작