Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코테
- Kotlin
- 코틀린
- 정보처리기사
- Til
- select
- 자바
- java
- groupby
- CS
- MySQL
- 티스토리챌린지
- SQL
- 프로그래머스
- Android
- 알고리즘
- 카카오코테
- 오블완
- 정처기
- 안드로이드스튜디오
- 스터디
- doitandroid
- 혼공단
- 인프런
- 안드로이드
- 기술면접
- 혼공파
- 자료구조
- 혼공챌린지
- join
Archives
- Today
- Total
Welcome! Everything is fine.
#02. 프로세스와 스레드의 차이 본문
728x90
프로세스(Process)란?
프로세스란 실행중에 있는 프로그램을 의미하며, 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말한다. 프로세스는 최소 하나의 스레드를 가진다. 프로그램이 실행되면 메모리가 할당되고, 할당된 메모리 공간으로 바이너리 코드가 올라가면 그것을 프로세스라고 부른다. 프로세스마다 고유한 가상 메모리 공간 제공하는 이 공간은 다음과 같이 4개로 나눌 수 있다.
code | 작성한 코드가 저장되는 공간 |
data | 코드에서 전역변수, 정적변수, 상수 등 저장 |
heap | 코드에서 동적으로 생성되는 데이터 구조나 객체들을 저장 |
stack | 작성한 함수에서 지역변수, 매개변수, return 주소 등을 저장 |
스레드(Thread)란?
프로세스의 실행단위로, 프로세스 내의 공유된 자원(코드, 데이터, 파일 등)을 사용한다. 한 프로세스 내에서 각각의 스레드는 독립적인 실행 흐름을 가진다. 그러나 같은 프로세스 내에 있는 스레드들은 같은 메모리 공간을 공유한다. 따라서 스레드 간에 공유된 자원에 대한 동기화와 관리가 필요하다.
프로세스와 스레드의 차이
프로세스는 독립적인 실행환경을 가진 프로그램의 인스턴스이며, 스레드는 하나의 프로세스 내에서 실행되는 각각의 실행흐름이다. 프로세스는 한 프로세스의 오류가 다른 프로세스에 영향을 미치지 않아서 안정성이 높고, 독립된 메모리 공간을 가지고 있어 독립성이 강하다. 하지만 그렇기 때문에 자원 소비가 큰 단점이 있다. 스레드는 프로세스에 비해 경량화되어 있어서 자원 소비가 적고, 같은 프로세스 내에서 공유된 자원을 사용하므로 더 빠른 통신을 할 수 있다. 그러나 하나의 스레드가 다른 스레드에 영향을 미칠 수 있어 상대적으로 안정성 문제가 생길 확률이 크다.
'CS 스터디' 카테고리의 다른 글
#06. 절차지향 vs 객체지향 (0) | 2024.01.30 |
---|---|
#05. 객체 지향 프로그래밍(OOP)의 개념 / 특징 / 설계 원칙 (0) | 2024.01.30 |
#04. 동기와 비동기 (0) | 2024.01.24 |
#03. 쿠키(Cookie)와 세션(Session) (0) | 2024.01.23 |
#01. HTTP란? / HTTP의 특징 / HTTP METHOD 종류 (1) | 2024.01.16 |