Skip to content

Commit 985da4a

Browse files
authored
Merge pull request #203 from ssbb1166/patch-3
docs: 오탈자 수정 및 가독성 개선, 사소한 내용 수정
2 parents a6a2f86 + 7fd459e commit 985da4a

File tree

1 file changed

+37
-35
lines changed

1 file changed

+37
-35
lines changed

Computer Science/Operating System/Process vs Thread.md

+37-35
Original file line numberDiff line numberDiff line change
@@ -2,89 +2,91 @@
22

33
<br>
44

5-
> **프로세스** : 프로그램을 메모리 상에서 실행중인 작업
5+
> **프로세스** : 메모리상에서 실행 중인 프로그램
66
>
77
> **스레드** : 프로세스 안에서 실행되는 여러 흐름 단위
88
99
<br>
1010

11-
기본적으로 프로세스마다 최소 1개의 스레드 소유 (메인 스레드 포함)
11+
기본적으로 프로세스마다 최소 1개의 스레드(메인 스레드)를 소유한다.
1212

1313
<br>
1414

1515
![img](https://camo.githubusercontent.com/3dc4ad61f03160c310a855a4bd68a9f2a2c9a4c7/68747470733a2f2f74312e6461756d63646e2e6e65742f6366696c652f746973746f72792f393938383931343635433637433330363036)
1616

17-
프로세스는 각각 별도의 주소공간 할당 (독립적)
17+
프로세스는 각각 별도의 주소 공간을 할당받는다. (독립적)
1818

19-
- Code : 코드 자체를 구성하는 메모리 영역(프로그램 명령)
19+
- Code : 코드 자체를 구성하는 메모리 영역 (프로그램 명령)
20+
21+
- Data : 전역 변수, 정적 변수, 배열 등
22+
- 초기화된 데이터는 Data 영역에 저장
23+
- 초기화되지 않은 데이터는 BSS 영역에 저장
2024

21-
- Data : 전역변수, 정적변수, 배열 등
22-
- 초기화 된 데이터는 data 영역에 저장
23-
- 초기화 되지 않은 데이터는 bss 영역에 저장
2425
- Heap : 동적 할당 시 사용 (new(), malloc() 등)
2526

26-
- Stack : 지역변수, 매개변수, 리턴 값 (임시 메모리 영역)
27+
- Stack : 지역 변수, 매개 변수, 리턴 값 (임시 메모리 영역)
2728

2829
<br>
2930

30-
스레드는 Stack만 따로 할당 받고 나머지 영역은 서로 공유
31+
스레드는 Stack만 따로 할당받고 나머지 영역은 공유한다.
3132

32-
- Stack 영역만 따로 할당 받는 이유
33-
- 쓰레드는 독립적인 동작을 수행하기 위해 존재 한다
34-
- 즉 독립적으로 함수를 호출 할 수 있어야 한다
35-
- 때문에 함수의 매개변수, 지역변수등을 저장하는 스택 메모리 영역은 독립적으로 할당 받아야 한다
33+
- 스레드는 독립적인 동작을 수행하기 위해 존재 = 독립적으로 함수를 호출할 수 있어야 함
34+
- 함수의 매개 변수, 지역 변수 등을 저장하는 Stack 영역은 독립적으로 할당받아야 함
3635

3736
<br>
3837

39-
하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드 같이 생성
38+
하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드가 같이 생성된다.
4039

4140
<br>
4241

43-
**프로세스는 자신만의 고유 공간과 자원을 할당받아 사용**하는데 반해, **스레드는 다른 스레드와 공간, 자원을 공유하면서 사용**하는 차이가 존재함
42+
**프로세스는 자신만의 고유 공간 및 자원을 할당받아 사용**하는 데 반해,
4443

45-
<br>
44+
**스레드는 다른 스레드와 공간 및 자원을 공유하면서 사용**하는 차이가 존재한다.
4645

4746
<br>
4847

4948
##### 멀티프로세스
5049

51-
> 하나의 프로그램을 여러개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 수행하는 것
50+
> 하나의 프로그램을 여러 개의 프로세스로 구성하여 각 프로세스가 병렬적으로 작업을 처리하도록 하는 것
51+
52+
<br>
5253

5354
**장점** : 안전성 (메모리 침범 문제를 OS 차원에서 해결)
5455

55-
**단점** : 각각 독립된 메모리 영역을 갖고 있어, 작업량 많을 수록 오버헤드 발생. Context Switching으로 인한 성능 저하
56+
**단점** : 각각 독립된 메모리를 갖고 있어 작업량이 많을수록 오버헤드 발생, Context Switching으로 인한 성능 저하
5657

5758
<br>
5859

59-
***Context Switching*이란?**
60+
***Context Switching* 이란?**
6061

6162
> 프로세스의 상태 정보를 저장하고 복원하는 일련의 과정
63+
> - 동작 중인 프로세스가 대기하면서 해당 프로세스 상태를 보관
64+
> - 대기하고 있던 다음 순번의 프로세스가 동작하면서 이전에 보관했던 프로세스 상태를 복구
6265
>
63-
> 즉, 동작 중인 프로세스가 대기하면서 해당 프로세스의 상태를 보관하고, 대기하고 있던 다음 순번의 프로세스가 동작하면서 이전에 보관했던 프로세스 상태를 복구하는 과정을 말함
64-
>
65-
> → 프로세스는 각 독립된 메모리 영역을 할당받아 사용되므로, 캐시 메모리 초기화와 같은 무거운 작업이 진행되었을 때 오버헤드가 발생할 문제가 존재함
66+
> 문제점: 프로세스는 독립된 메모리 영역을 할당받으므로, 캐시 메모리 초기화와 같은 무거운 작업이 진행되면 오버헤드가 발생할 수 있음
6667
6768
<br>
6869

69-
<br>
70+
##### 멀티스레드
7071

71-
##### 멀티 스레드
72+
> 하나의 프로그램을 여러 개의 스레드로 구성하여 각 스레드가 하나의 작업을 처리하도록 하는 것
7273
73-
> 하나의 응용 프로그램에서 여러 스레드를 구성해 각 스레드가 하나의 작업을 처리하는 것
74+
<br>
7475

75-
스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해줌
76+
스레드들이 공유 메모리를 통해 다수의 작업을 동시에 처리하도록 해 준다.
7677

7778
<br>
7879

79-
**장점** : 독립적인 프로세스에 비해 공유 메모리만큼의 시간, 자원 손실이 감소
80-
전역 변수와 정적 변수에 대한 자료 공유 가능
80+
**장점** : 독립적인 프로세스에 비해 공유 메모리만큼의 시간과 자원 손실 감소, 전역 변수와 정적 변수 공유 가능
8181

82-
**단점** : 안전성 문제. 하나의 스레드가 데이터 공간 망가뜨리면, 모든 스레드가 작동 불능 상태 (공유 메모리를 갖기 때문)
82+
**단점** : 안전성 (공유 메모리를 갖기 때문에 하나의 스레드가 데이터 공간을 망가뜨리면, 모든 스레드 작동 불능)
8383

84-
- 멀티스레드의 안전성에 대한 단점은 Critical Section 기법을 통해 대비함
84+
<br>
8585

86-
> 하나의 스레드가 공유 데이터 값을 변경하는 시점에 다른 스레드가 그 값을 읽으려할 때 발생하는 문제를 해결하기 위한 동기화 과정
87-
>
88-
> ```
89-
> 상호 배제, 진행, 한정된 대기를 충족해야함
90-
> ```
86+
멀티스레드의 안전성에 대한 단점은 Critical Section 기법을 통해 대비한다.
87+
88+
> 하나의 스레드가 공유 데이터값을 변경하는 시점에 다른 스레드가 그 값을 읽으려 할 때 발생하는 문제를 해결하기 위한 동기화 과정
89+
>
90+
> ```
91+
> 상호 배제, 진행, 한정된 대기를 충족해야 함
92+
> ```

0 commit comments

Comments
 (0)