|
2 | 2 |
|
3 | 3 | <br>
|
4 | 4 |
|
5 |
| -> **프로세스** : 프로그램을 메모리 상에서 실행중인 작업 |
| 5 | +> **프로세스** : 메모리상에서 실행 중인 프로그램 |
6 | 6 | >
|
7 | 7 | > **스레드** : 프로세스 안에서 실행되는 여러 흐름 단위
|
8 | 8 |
|
9 | 9 | <br>
|
10 | 10 |
|
11 |
| -기본적으로 프로세스마다 최소 1개의 스레드 소유 (메인 스레드 포함) |
| 11 | +기본적으로 프로세스마다 최소 1개의 스레드(메인 스레드)를 소유한다. |
12 | 12 |
|
13 | 13 | <br>
|
14 | 14 |
|
15 | 15 | 
|
16 | 16 |
|
17 |
| -프로세스는 각각 별도의 주소공간 할당 (독립적) |
| 17 | +프로세스는 각각 별도의 주소 공간을 할당받는다. (독립적) |
18 | 18 |
|
19 |
| -- Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령) |
| 19 | +- Code : 코드 자체를 구성하는 메모리 영역 (프로그램 명령) |
| 20 | + |
| 21 | +- Data : 전역 변수, 정적 변수, 배열 등 |
| 22 | + - 초기화된 데이터는 Data 영역에 저장 |
| 23 | + - 초기화되지 않은 데이터는 BSS 영역에 저장 |
20 | 24 |
|
21 |
| -- Data : 전역변수, 정적변수, 배열 등 |
22 |
| - - 초기화 된 데이터는 data 영역에 저장 |
23 |
| - - 초기화 되지 않은 데이터는 bss 영역에 저장 |
24 | 25 | - Heap : 동적 할당 시 사용 (new(), malloc() 등)
|
25 | 26 |
|
26 |
| -- Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역) |
| 27 | +- Stack : 지역 변수, 매개 변수, 리턴 값 (임시 메모리 영역) |
27 | 28 |
|
28 | 29 | <br>
|
29 | 30 |
|
30 |
| -스레드는 Stack만 따로 할당 받고 나머지 영역은 서로 공유 |
| 31 | +스레드는 Stack만 따로 할당받고 나머지 영역은 공유한다. |
31 | 32 |
|
32 |
| -- Stack 영역만 따로 할당 받는 이유 |
33 |
| - - 쓰레드는 독립적인 동작을 수행하기 위해 존재 한다 |
34 |
| - - 즉 독립적으로 함수를 호출 할 수 있어야 한다 |
35 |
| - - 때문에 함수의 매개변수, 지역변수등을 저장하는 스택 메모리 영역은 독립적으로 할당 받아야 한다 |
| 33 | +- 스레드는 독립적인 동작을 수행하기 위해 존재 = 독립적으로 함수를 호출할 수 있어야 함 |
| 34 | +- 함수의 매개 변수, 지역 변수 등을 저장하는 Stack 영역은 독립적으로 할당받아야 함 |
36 | 35 |
|
37 | 36 | <br>
|
38 | 37 |
|
39 |
| -하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드 같이 생성 |
| 38 | +하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드가 같이 생성된다. |
40 | 39 |
|
41 | 40 | <br>
|
42 | 41 |
|
43 |
| -**프로세스는 자신만의 고유 공간과 자원을 할당받아 사용**하는데 반해, **스레드는 다른 스레드와 공간, 자원을 공유하면서 사용**하는 차이가 존재함 |
| 42 | +**프로세스는 자신만의 고유 공간 및 자원을 할당받아 사용**하는 데 반해, |
44 | 43 |
|
45 |
| -<br> |
| 44 | +**스레드는 다른 스레드와 공간 및 자원을 공유하면서 사용**하는 차이가 존재한다. |
46 | 45 |
|
47 | 46 | <br>
|
48 | 47 |
|
49 | 48 | ##### 멀티프로세스
|
50 | 49 |
|
51 |
| -> 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것 |
| 50 | +> 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 처리하도록 하는 것 |
| 51 | +
|
| 52 | +<br> |
52 | 53 |
|
53 | 54 | **장점** : 안전성 (메모리 침범 문제를 OS 차원에서 해결)
|
54 | 55 |
|
55 |
| -**단점** : 각각 독립된 메모리 영역을 갖고 있어, 작업량 많을 수록 오버헤드 발생. Context Switching으로 인한 성능 저하 |
| 56 | +**단점** : 각각 독립된 메모리를 갖고 있어 작업량이 많을수록 오버헤드 발생, Context Switching으로 인한 성능 저하 |
56 | 57 |
|
57 | 58 | <br>
|
58 | 59 |
|
59 |
| -***Context Switching*이란?** |
| 60 | +***Context Switching* 이란?** |
60 | 61 |
|
61 | 62 | > 프로세스의 상태 정보를 저장하고 복원하는 일련의 과정
|
| 63 | +> - 동작 중인 프로세스가 대기하면서 해당 프로세스 상태를 보관 |
| 64 | +> - 대기하고 있던 다음 순번의 프로세스가 동작하면서 이전에 보관했던 프로세스 상태를 복구 |
62 | 65 | >
|
63 |
| -> 즉, 동작 중인 프로세스가 대기하면서 해당 프로세스의 상태를 보관하고, 대기하고 있던 다음 순번의 프로세스가 동작하면서 이전에 보관했던 프로세스 상태를 복구하는 과정을 말함 |
64 |
| -> |
65 |
| -> → 프로세스는 각 독립된 메모리 영역을 할당받아 사용되므로, 캐시 메모리 초기화와 같은 무거운 작업이 진행되었을 때 오버헤드가 발생할 문제가 존재함 |
| 66 | +> 문제점: 프로세스는 독립된 메모리 영역을 할당받으므로, 캐시 메모리 초기화와 같은 무거운 작업이 진행되면 오버헤드가 발생할 수 있음 |
66 | 67 |
|
67 | 68 | <br>
|
68 | 69 |
|
69 |
| -<br> |
| 70 | +##### 멀티스레드 |
70 | 71 |
|
71 |
| -##### 멀티 스레드 |
| 72 | +> 하나의 프로그램을 여러 개의 스레드로 구성하여 각 스레드가 하나의 작업을 처리하도록 하는 것 |
72 | 73 |
|
73 |
| -> 하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것 |
| 74 | +<br> |
74 | 75 |
|
75 |
| -스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해줌 |
| 76 | +스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해 준다. |
76 | 77 |
|
77 | 78 | <br>
|
78 | 79 |
|
79 |
| -**장점** : 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소 |
80 |
| -전역 변수와 정적 변수에 대한 자료 공유 가능 |
| 80 | +**장점** : 독립적인 프로세스에 비해 공유 메모리만큼의 시간과 자원 손실 감소, 전역 변수와 정적 변수 공유 가능 |
81 | 81 |
|
82 |
| -**단점** : 안전성 문제. 하나의 스레드가 데이터 공간 망가뜨리면, 모든 스레드가 작동 불능 상태 (공유 메모리를 갖기 때문) |
| 82 | +**단점** : 안전성 (공유 메모리를 갖기 때문에 하나의 스레드가 데이터 공간을 망가뜨리면, 모든 스레드 작동 불능) |
83 | 83 |
|
84 |
| -- 멀티스레드의 안전성에 대한 단점은 Critical Section 기법을 통해 대비함 |
| 84 | +<br> |
85 | 85 |
|
86 |
| - > 하나의 스레드가 공유 데이터 값을 변경하는 시점에 다른 스레드가 그 값을 읽으려할 때 발생하는 문제를 해결하기 위한 동기화 과정 |
87 |
| - > |
88 |
| - > ``` |
89 |
| - > 상호 배제, 진행, 한정된 대기를 충족해야함 |
90 |
| - > ``` |
| 86 | +멀티스레드의 안전성에 대한 단점은 Critical Section 기법을 통해 대비한다. |
| 87 | + |
| 88 | +> 하나의 스레드가 공유 데이터값을 변경하는 시점에 다른 스레드가 그 값을 읽으려 할 때 발생하는 문제를 해결하기 위한 동기화 과정 |
| 89 | +> |
| 90 | +> ``` |
| 91 | +> 상호 배제, 진행, 한정된 대기를 충족해야 함 |
| 92 | +> ``` |
0 commit comments