-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
04882da
commit 27d0261
Showing
1 changed file
with
21 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# 질문지- 프로세스 메모리 모델 | ||
|
||
### 프로세스 메모리 모델에서 스택 영역이 하는 일을 말해보세요 | ||
-> 지역 변수, 현재 함수 콜 스택, 리턴 주소 등이 저장됩니다. 함수마다 스택 프레임이 생성돼서 지역 변수를 저장할 수 있고 종료되면 스택 프레임을 pop하면서 그 전 함수로 돌아갈 수 있습니다. | ||
### 프로세스 메모리 모델에서 힙 영역이 하는 일을 말해보세요 | ||
-> 런타임에 동적 할당된 변수가 저장됩니다. | ||
|
||
### 메모리 구조 중 쓰레드간에 공유하는 공간과 공유하지 않는 공간을 말해보세요 | ||
-> 스택 영역은 일종의 실행 흐름이므로 서로 다른 실행 흐름인 쓰레드 간에 스택 영역은 공유하지 않습니다. 그 외에 코드, 데이터, 힙 영역은 공유합니다. | ||
|
||
### 힙 메모리에 데이터를 자주 생성하고 해제를 반복하다보면 fragmentation이 생길 수 있습니다. malloc() 자체가 실패할 수 있는데 어떻게 해결할 수 있을까요? | ||
-> 힙 메모리에서 중간 중간 해제가 되다 보니, 전체적으로는 공간이 있는데 연속적으로 메모리 공간을 받지 못해서 malloc()이 실패할 수 있습니다. 운영체제가 메모리의 free space들을 잘 관리해서(free list), 새로 메모리를 할당해줘야할 때 최대한 적절한 메모리 영역(크기가 비슷한 영역이라든가)을 할당해준다면 이런 단편화 문제를 줄일 수 있습니다. | ||
(아님.. 페이징..? 세그먼테이션..?) | ||
|
||
### 32 bit 운영체제에서 각 프로세스는 얼만큼의 Virtual Address Space를 가질까요? | ||
-> 2^32byte == 4GB | ||
* 그중 대부분의 공간은 Unused 상태로 남아있을텐데 어떻게 효율적으로 관리할 수 있을까요? | ||
-> 빈 공간을 free list를 통해 따로 저장해서 관리해야 합니다. | ||
|
||
|
||
#CS 스터디/운영체제/프로세스 메모리 모델# |