운영체제 기본/프로세스와 스레드: 두 판 사이의 차이

C 예시를 지원되는 코드 표시 형식으로 정리
호출 스택 그림의 줄바꿈과 열 너비 정리
84번째 줄: 84번째 줄:
공유하는 코드: calculate(), double_value()
공유하는 코드: calculate(), double_value()


A의 호출 스택                           B의 호출 스택
A의 호출 스택                 B의 호출 스택
+--------------------------+           +--------------------------+
+----------------------+     +----------------------+
| A를 시작한 함수의 프레임 |           | B를 시작한 함수의 프레임 |
| A caller            |     | B caller            |
+--------------------------+           +--------------------------+
+----------------------+     +----------------------+
| calculate(10)           |           | calculate(20)           |
| calculate(10)       |     | calculate(20)       |
| partial = 11             |           | partial = 21             |
| partial = 11         |     | partial = 21         |
+--------------------------+           +--------------------------+
+----------------------+     +----------------------+
| double_value(11)         | <- SP_A    | double_value(21)         | <- SP_B
| double_value(11)     |     | double_value(21)     |
| A의 calculate로 복귀    |           | B의 calculate로 복귀    |
| SP_A -> current frame|      | SP_B -> current frame|
+--------------------------+           +--------------------------+
| return to A          |     | return to B          |
+----------------------+     +----------------------+
       각자의 호출 순서에 따라 프레임을 만들고 제거
       각자의 호출 순서에 따라 프레임을 만들고 제거
</pre>
</pre>