일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 리눅스재부팅
- IT인프라기초
- 운영체제
- 리눅스
- 리눅스마스터
- 리눅스사용자파일
- OS
- CentOS
- 리눅스사용자관리
- 인프라구조
- linux
- linuxmaster
- 병렬처리
- centos자동로그인
- root막기
- IT인프라구조
- 웹서버
- it
- 물리서버
- 서버
- 리눅스사용자생성
- it인프라
- DB서버
- 센토스
- 리눅스명령어
- 센트
- 인프라
- 리눅스도움말명령어
- 리눅스자동로그인
- 리눅스vi
- Today
- Total
Thinking Out Loud
[IT Infra 기초] 프로세스와 스레드 본문
# 프로세스 · 스레드
≒ 프로그램 시작 시 뜨는 창들
# 프로그램 시작 시 발생하는 일 - 프로그램이 서버 내부의 디스크 상에 설치됨 - 시작 의뢰가 있으면 커널이 프로세스를 작성. 또한, 요청 분량만큼만 메모리 공간 할당 - OS 상에서 프로세스가 시작되어 사용자 요청을 받을 수 있게 됨 |
- 프로그램 실행 파일 자체 (X)
- OS 상에서 실행되어 어느 정도 독립성을 가지고 동작하는 것
- 프로세스 · 스레드가 시작되는 것 ≒ 사람이 숨을 쉬기 시작하면서 활동하는 것
- 프로세스 · 스레드가 활동하려면 메모리 공간이 필요
→ 프로세스 시작 시 커널에 의해 메모리 상에 공간이 확보됨
프로세스 · 스레드가 자신을 위해서 소유하는 공간(개인 공간)
다양한 처리를 하면서 데이터를 주고 받기 위해 이 공간을 사용
# 프로세스 vs 스레드
- 목적은 같지만, 구조가 다름
- 하나의 프로세스가 동작하고 있으면, 내부에서는 메모리 공간을 점유하는 스레드 하나가 동작하고 있다.
- 어떤 것을 이용할지는 애플리케이션 개발자가 결정
프로세스 | 스레드 | |
특징 | 1) 각각 독립된 메모리 공간 차지 → 생성 시 스레드에 비해 CPU 부하↑ ⇒ 멀티프로세스 애플리케이션에서는 프로세스 생성 부담을 낮추기 위해 미리 프로세스를 시작시켜둠 (ex. 연결 풀링(Pooling)) 2) 전용 메모리 공간을 이용해서 동작 3) 내부에서 수많은 스레드가 동작하고 있음 |
1) 하나의 메모리 공간을 공유 → 스레드 시작 시에 신규 메모리 공간은 필요 X. but, 다른 스레드에 이상 발생 시 영향 받음 2) 다른 스레드와 메모리 공간을 공유하는 운명 공동체 |
장점 | 개별 처리 독립성이 높다 | 생성 시 CPU 부하가 낮다 |
단점 | 생성 시 CPU 부하가 높다 → CPU 부하를 줄이기 위해 미리 프로세스를 시작시킴 (pooling) |
메모리 공간을 공유 → 의도하지 않는 데이터 읽기/쓰기 발생 가능 |
# 프로세스 → 메모리 공간 공유 불가? ( X : 메모리 공간 공유 가능 )
- 독자(전용) 메모리 영역 / 공유 메모리 영역 용도별로 나누어 사용
- 공유 메모리 영역 : 프로세스 간 공유하고픈 데이터 (ex. 캐시로 저장하고 있는 데이터)
- 독자(전용) 메모리 영역 : 프로세스가 단독으로 이용하는 데이터 (ex. 자신이 계산한 결과)
ex) 오라클 DB - '공유 메모리 공간'
- 각 프로세스별 메모리 공간(PGA)과 프로세스 전체가 공유하는 메모리 공간(SGA)이 나누어져 있음
- 공유 메모리(SGA) : 디스크 상의 데이터 캐시나 실행 완료된 SQL 캐시, 데이블, 인덱스 등이 저장됨
- 프로세스별 메모리(PGA) : 해당 프로세스 SQL이 이용하는 소트 영역이나 테이블 결합에 사용하는 메모리 영역이
저장되어 있음. 이 영역은 다른 프로세스가 접근 불가. 이 메모리가 부족하면 공유 메모리를 아무리 크게 잡아도
효과 X
참고 : 야마자키 야스시 외 3, 「그림으로 공부하는 IT 인프라 구조」, 제이펍
'IT Infra' 카테고리의 다른 글
[IT Infra 기초] 웹 데이터 흐름 (0) | 2021.10.12 |
---|---|
[IT Infra 기초] OS 커널 (0) | 2021.10.12 |
[IT Infra 기초] 버스 (Bus) (0) | 2021.10.12 |
[IT Infra 기초] I/O 장치 (0) | 2021.10.12 |
[IT Infra 기초] CPU와 메모리 (0) | 2021.10.08 |