[운영체제] 프로세스 & 스레드

강민승·2023년 7월 23일
0

운영체제

목록 보기
1/18
post-thumbnail

도움

📍 프로세스:

컴퓨터 시스템에서 실행 중인 프로그램의 인스턴스를 의미.
프로세스는 자신만의 메모리 공간을 가지고 있으며, 한 프로세스의 메모리는 다른 프로세스로부터 보호받는다.

📌 프로세스의 정보:

⭐️ 프로세스 메모리 ⭐️
코드, 현재 활동, 스택, 힙 등을 포함합니다.

프로세스 메모리

Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)

Data : 전역변수, 정적변수, 배열 등

초기화 된 데이터는 data 영역에 저장
초기화 되지 않은 데이터는 bss 영역에 저장

Heap : 동적 할당 시 사용 (new(), malloc() 등)

Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)

프로세스 상태:
실행 중, 준비, 대기 등의 상태를 표시합니다.

프로세스 ID:
운영 체제가 프로세스를 구별하는 데 사용합니다.

프로그램 카운터:
다음에 실행될 명령어의 주소를 가리킵니다.

CPU 레지스터:
프로세스가 실행되는 동안 사용되는 변수를 저장합니다.

📌 프로그램 메모리 레이아웃

프로그램의 메모리 레이아웃에는 일반적으로 다음과 같은 영역들이 포함됩니다:

텍스트 영역: 프로그램의 실행 코드가 저장되는 영역입니다.

데이터 영역: 초기화된 전역 변수와 정적 변수가 저장되는 영역입니다.

BSS 영역: 초기화되지 않은 전역 변수와 정적 변수가 저장되는 영역입니다.

힙 영역: 동적 메모리 할당을 위해 사용되는 영역입니다.

스택 영역: 함수 호출과 관련된 정보(예: 지역 변수, 반환 주소 등)를 저장하는 영역입니다.

📍 스레드

프로세스 내에서 실행되는 독립적인 실행 흐름
모든 프로세스는 하나 이상의 스레드를 가지며, 이게 멀티스레딩
프로세스의 자원을 공유하므로 프로세스 내의 스레드 간 통신은 상대적으로 간단하고 빠름

📌 스레드 내부

스레드 ID
- 운영 체제가 스레드를 구별하는 데 사용합니다

프로그램 카운터
- 다음에 실행될 명령어의 주소를 가리킵니다

레지스터 세트
-스레드가 실행되는 동안 사용되는 변수를 저장합니다

스택
-함수 호출에 따라 할당 및 제거되는 로컬 변수 및 반환 주소를 저장합니다

📌 스레드 특징

  1. 모든 스레드는 프로세스 메모리(힙 메모리)를 공유
    이는 스레드 간에 데이터를 공유하거나 통신하는 데 유용하다. 하지만 동기화 문제가 발생할 수 있으므로 주의를 기울여 동기화 문제를 해결해야 한다!

📍 정리

프로세스는 독립적인 실행을 위한 코드, 메모리 공간, 및 다른 자원들을 포함하는 독립적인 엔티티이며, 스레드는 이런 프로세스 내에서 독립적인 실행 흐름을 나타내며 프로세스의 자원을 공유한다. 이 두 가지는 병렬 처리동시성을 지원하고 시스템 성능을 향상시키는 중요한 요소다!

한 줄로 요약하면, 프로세스는 자신만의 고유 공간과 자원을 할당받아 사용하는데 반해, 스레드는 다른 스레드와 공간, 자원을 공유하면서 사용하는 차이가 존재한다.

profile
Step by Step goes a long way. 꾸준하게 성장하는 개발자 강민승입니다.

1개의 댓글

comment-user-thumbnail
2023년 7월 23일

좋은 글 감사합니다. 자주 올게요 :)

답글 달기