아직 작성 중인 글입니다!
23. 05. 30. 작성 완료→ 23. 06. 09. 내용 추가
컴퓨터가 특정 작업을 수행하기 위해 작성된 실행 가능한 일련의 명령어 모음
다양한 방식으로 정의되어 있지만 전반적으로 읽어봤을 때 이렇게 이해하기로 했다! 프로그램에 대한 정의를 먼저 확인한 이유는 프로세스의 정의가 좀 더 좁은 범위의 프로그램이기 때문이다.
- '실행 중인' 프로그램의 '인스턴스' (Task와 거의 비슷한 의미로 사용)
- 메모리 상에서 실행되는 운영체제 기준의 작업 단위
- 생성에 많은 시간과 자원을 소비함 (오버헤드가 크다)
프로그램 자체가 아닌 프로그램의 인스턴스로 여러 개가 동시에 존재하는 것이 가능하다는 것이 특징적인 부분이라고 생각한다.
- 프로세스 내 작업을 수행하는 CPU 기준의 실행 단위
- 모든 프로세서는 1개 이상의 스레드가 존재
- 스레드는 각각의 레지스터와 스택을 보유
- 힙 메모리 공간은 공유
프로세스가 좀 더 큰 범주의 단위라고 볼 수 있음
하지만 단순하게 여기까지만 말하는 거라면 굉장히 포괄적인 답변이라고 생각할 수 있을 거 같아서 잘 정리된 글들을 참고해서 추가적인 정리를 해보았다!
- 프로세스의 오류가 다른 프로세스의 영역으로 번지지 않음
- But 하나의 스레드가 오류 발생하는 경우 전체 스레드 종료
→ 메모리 영역을 공유하는 부분이 존재하기 때문
Process와 Thread의 차이점이란?
하나의 프로세스 내에서 여러 개의 스레드가 동시에 작업을 수행하는 것
기본적으로 동시에 처리할 수 있는 최대 작업 수는 Core의 수만큼
Core의 수보다 많은 스레드가 실행되는 경우 각 코어가 여러 작업을 번갈아가면서 수행
스레드가 교체될 때 현재까지의 작업 상태나 다음 작업에 필요한 데이터를 저장하고 읽어오는 작업
위키백과의 프로세스와 스레드 항목
프로세스와 스레드의 차이 by raejoonee
프로세스와 스레드의 차이 by heejeong Kwon