- 프로세스 내 작업 흐름
- 대부분 운영체제에서는 프로세스끼리 메모리 공유할 수 있긴한데 이를 위한 추가 조치가 바로 스레드!!!
- 스택 메모리 제외한 다른 메모리 영역을 같은 프로세스 내의 다른 스레드와 공유
- 다른 스레드와 격리 X, 그냥 통신 가능
- 한 스레드 문제 발생시 다른 스레드 영향 받을 수 있음
- 프로세스는 자원을 담는 용기, 스레드는 여기서 좀 더 동적인 부분(이 용기 안에서 실행되는 인스트러션 연속열) 해당
- 따라서, 운영체제의 관점에서 보면 프로세스는 자원을 할당 받는 단위이고, 스레드는 실행하는 단위!
- 운영체제가 스레드 관리하며 사용할 수 있는 프로세서 코어에 이들을 배정
역사와 표준
- 하드웨어 제조사 들은 나름의 방식으로 스레드 구현
- 그래서 개발자들이 스레드가 적용된 앱 이식성 있게 구현하기 곤란
- 표준화된 프로그래밍 인터페이스 필요
- 유닉스 시스템에선 IEEE POSIX 표준을 통해 표준 정의
- 윈도우계열은 비필수 라이브러리로 제공
- 이 표준의 구현은
- 표준에서는
- 프로그램 실행하려면 운영체제가 프로세스를 생성하도록 함
- 모든 프로세스는 최소 하나의 스레드 갖도록 함
- 각 스레드는 인스트럭션을 독립적이고 안전히 실행할 수 있도록 각기 독립적인 실행 컨텍스트 유지