티스토리 뷰
프로세스와 스레드?
- 프로세스는 운영체제로부터 자원을 할당 받는 작업의 단위
- 스레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위
좀 더 자세히...
프로세스
는 실행될 때 운영체제로부터프로세서
를 할당받고, 운영되기 위해 필요한 주소공간, 메모리 등의 자원도 할당받음
스레드
는 하나의 프로세스
내에서 동작되는 여러 실행의 흐름으로, 프로세스 내의 주소공간, 메모리 등의 자원을 프로세스
내에 스레드끼리 공유하면서 실행된다
스레드를 왜 사용해?
- 그러면 여러 프로세스(멀티 프로세스)를 하지 않고 굳이 하나의 프로세스안에 스레드로 나눠서 실행하는가?
- 운영체제는 시스템작업을 효율적으로 관리하기 위해 존재 -> 이 목적을 달성하기 위함
- 멀티 스레드의 장점
- 프로세스 생성, 자원 할당 이라는 시스템 콜을 줄여 자원을 효율적으로 관리 할 수 있음
- 프로세스간의 통신보다 스레드간의 통신이 비용이 적으므로 작업들간의 부담도 줄일 수 있음
그러면 멀티 스레드가 답인가?
- 멀티 스레드는 자원의 효율성을 증가 시켜주지만 주의할 점이 있음
- 스레드간 공유하는 자원은 전역변수로 사용하기에,
동기화
에 신경을 써야 함 (동시에 여러 스레드가 실행되는 경우)
- 공유자원을 사용하지 않는 프로세스와 프로세스사이는 상대적으로 안전
해결방법?
- 한 번에 한 스레드만 공유자원에 접근할 수 있도록 조정해주면 된다
- 이것을 Lock이라고 하는데, 얼마나 적은 Lock을 거는가가 성능의 관건
« 2024/11 »
일 |
월 |
화 |
수 |
목 |
금 |
토 |
|
|
|
|
|
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 |