728x90
답변
프로세스와 스레드는 컴퓨터 프로그램이 실행되는 단위를 의미합니다.
먼저 프로세스는 프로그램이 실행되면서 메모리에 올라가고 해당 프로그램을 읽을 수 있는 CPU가 할당된 상태의 프로그램을 의미합니다.
스레드는 프로세스 내에서 실행되는 작업 단위를 의미합니다.
프로세스는 최소 1개의 스레드를 가지며, 여러 스레드가 병렬로 작업을 처리할 수 있습니다.
프로세스
- 정의:프로그램이 실행되면 메모리에서 별도의 공간을 할당받아 하나의 프로세스로 동작
- 프로세스는 운영체제에서 실행 중인 프로그램의 독립된 작업 단위
- 특징:
- 독립된 메모리 공간: 프로세스는 자신만의 메모리 공간(코드, 데이터, 스택 등)을 가지고 다른 프로세스와 메모리를 공유하지 않음
- 무겁고 독립적: 하나의 프로세스가 종료되더라도 다른 프로세스에는 영향을 주지 않음
- 통신 방식 필요: 다른 프로세스와 데이터를 주고받기 위해서는 IPC(Inter-Process Communication) 같은 특별한 통신 방법이 필요
- 예시: 웹 브라우저, 텍스트 에디터, 음악 재생 앱은 각각 별도의 프로세스로 실행
2. 스레드
- 정의:프로세스가 최소 1개의 스레드를 가지며, 여러 스레드를 생성해 병렬로 작업을 처리할 수 있음
- 스레드는 프로세스 내에서 실행되는 작은 작업 단위
- 특징:
- 메모리 공유: 같은 프로세스 내의 스레드들은 메모리 공간(힙, 데이터)을 공유하여 데이터를 빠르게 주고받을 수 있음
- 가볍고 효율적: 스레드는 생성 및 종료가 빠르고 비용이 적음
- 안전 관리 필요: 여러 스레드가 동시에 메모리를 접근할 수 있기 때문에 동기화나 데드락(교착 상태) 같은 문제를 주의해야 함
- 예시: 웹 브라우저의 여러 탭은 각각 하나의 스레드로 실행될 수 있고, 이미지 로딩과 렌더링도 다른 스레드에서 처리됨
프로세스와 스레드의 차이점
특징 프로세스 스레드
메모리 구조 | 독립된 메모리 공간 사용 | 프로세스 내에서 메모리 공간 공유 |
작업 단위 | 실행 중인 프로그램의 독립적 단위 | 프로세스 내의 작업 단위 |
속도 | 생성/종료가 상대적으로 느림 | 생성/종료가 빠르고 효율적 |
데이터 공유 | 별도의 통신 방식 필요 (IPC 등) | 메모리 공간 공유로 빠르게 가능 |
안전성 | 하나의 프로세스가 문제를 일으켜도 독립 | 한 스레드의 오류가 프로세스 전체에 영향 |
프로세스 메모리 구조
영역 내용 및 역할 크기 관리 생명주기
코드 | 실행할 프로그램의 명령어 저장 | 고정적 | 프로세스 종료 시 해제 |
데이터 | 전역/정적 변수 저장 | 고정적 | 프로세스 종료 시 해제 |
힙 | 동적으로 할당한 데이터 저장 | 유동적 | 명시적으로 해제해야 함 |
스택 | 함수 호출, 지역 변수, 실행 컨텍스트 저장 | 유동적 | 함수 호출 종료 시 해제 |
'Web > Frontend 기본 CS 정리' 카테고리의 다른 글
CORS와 Preflight의 개념 (0) | 2024.12.25 |
---|---|
로그인 처리를 할 때 쿠키와 세션을 어떻게 사용하시나요? (0) | 2024.12.24 |
자바스크립트에서 일어나는 데이터 형 변환에 대해 설명해주세요. (0) | 2024.12.24 |
자바스크립트가 유동적인 언어인 이유는 무엇인가요? (1) | 2024.12.24 |
불변성을 유지하려면 어떻게 해야하나요? (2) | 2024.12.24 |