티스토리 뷰
process vs thread
process : 운영체제로부터 자원을 할당받은 작업의 단위
thread : 프로세스가 할당받은 자원을 이용하는 실행의 단위
Code : 코드 자체를 구성하는 메모리 영역 ( 프로그램 명령 )
Data (static): 전역변수, 정적변수, 배열 등 ( 초기화된 데이터 )
Heap : 동적 할당 시 사용 ( new(), mallock() 등 )
Stack : 지역변수, 매개변수, 리턴 값 ( 임시 메모리 영역 )
프로세스 특징
- 프로그램이 메모리에 올라가 수행하는 작업의 단위
- 고유 공간과 자원을 할당받아 사용
- 프로세스의 생성
초기 프로세스는 부팅 시 OS로 받지만, 그 후 부모 프로세스에게서 fork(), exec(),, 와 같은 시스템 콜로 생성됩니다.
- 시분할 시스템으로 진행중이던 작업을 저장하고 재개하기 위해 PCB를 사용
context switch : 프로세스의 상태 정보를 저장하고 복원하는 일련의 과정 -> 오버헤드 발생
- 원칙적으로는 프로세스는 독립적으로 수행됩니다.
하지만, 프로세스 간에 협력이 필요할때는 IPC를 적용
- 장점 : 안전성 (메모리 침범 문제를 OS 차원에서 해결)
- 단점 : 각각 독립된 메모리 영역을 갖고 있어, 작업량 많을 수록 오버헤드 발생. Context Switching으로 인한 성능 저하
따라서, 너무 많은 프로세스가 메모리에 있는 경우, 프로세스 수를 조절하기 위해 Medum term scheduling(swapper) 존재
쓰레드 특징
- 프로세스에는 최소 하나 이상의 쓰레드가 존재합니다.
- 쓰레드는 프로세스의 자원을 공유합니다.
- 독립적인 작업을 수행합니다.
- 스택과 레지스터 값을 할당받습니다.
why?
1 스택으로 독립적인 함수호출이 가능하고, 그로 인해 독립적인 흐름이 가능합니다.
2 cpu를 뺏겼다가 다시 할당받을때 진행중이던 작업을 다시 수행하기 위해서 레지스터 값이 필요합니다.
쓰레드 장점
1 프로세스보다 빠른 생성, 전환, 종료
2 중간에 커널이 없는 자원 공유로 빠릅니다.
쓰레드 단점
안정성 문제, 하나의 쓰레드가 공유 데이터를 망가뜨리면, 모든 쓰레드가 동작 불가능
따라서, Critical Section 접근 기법으로 동기화 작업을 할 수 있습니다.
'CS > OS' 카테고리의 다른 글
OS 부팅과정 (2) | 2023.11.21 |
---|---|
address space VS virtual memory VS swap memory (0) | 2020.07.13 |
데드락 (DeadLock) (0) | 2020.06.23 |
process synchronization(동기화) (0) | 2020.04.27 |
IPC(Inter Process Connection) (0) | 2020.04.25 |
- Total
- Today
- Yesterday
- 게리맨더링 2
- programmers
- 티스토리챌린지
- 자바
- 문자열을 정수로 바꾸기
- 17779
- 2019 카카오 공채
- 큰 수 만들기
- DP
- 가장 큰 정사각형 찾기
- java
- 라면공장
- 카카오 2020 공채
- 프로그래머스
- 3954
- 2018 카카오 공채
- 오블완
- 백준
- 짝지어 제거하기
- 주사위 윷놀이
- Brainf**k 인터프리터
- 찾아라 프로그래밍 마에스터
- 17825
- 카카오2020 공채
- 정수 내림차순으로 배치하기
- 124 나라의 숫자
- 투포인터
- 후보키
- 괄호 변환
- 단체사진 찍기
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |