Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 다익스트라 알고리즘
- 세마포어와 뮤텍스의 차이
- Dijkstra Algorithm
- 뮤텍스란?
- Proxy Server
- SSAFY
- 프록시서버
- 싸피
- 싸피 합격
- 호스팅
- Proxy
- 세마포어
- 클라우드 서버
- 프록시
- 뮤텍스
- floyd-warshall
- 싸피 면접 후기
- 삼성 청년 SW 아카데미
- Synchronization
- 웹 호스팅
- 세마포어와 뮤텍스
- 호스팅이란?
- 플로이드 워셜
- 서버 호스팅
- 세마포어란?
- 최단 경로
- 다익스트라
- 플로이드 와샬
- 동기화
Archives
- Today
- Total
어제의 나보다 성장한 오늘의 나
[운영체제] Process Address Space 프로세스 메모리 구조 본문
프로그램은 파일 시스템에 있다. 그 프로그램이 메모리로 올라가서 메모리를 차지하고 있는 상태에서 실행되어야 한다.
메모리 주소에 저장된 프로세스 형태는 다음과 같다.
code segment와 data segment
code segment와 data segment은 실행파일에 들어가 있다. 즉! C나 C++로 프로그래밍한 것이 컴파일되면 기계어 코드로 작성이 되고, 이 코드가 이 부분에 올라가게 된다.
data 영역에는 전역변수나 static data들은 프로그램이 실행이 될 때 항상 메모리 공간을 가지고 있어야 한다. 그래야지 function이 아무데서나 다 접근할 수 있고 static 변수 같은 경우에는 function에 갔다 다시 들어와도 옛날의 값을 유지할 수 있다.
코드 영역은 코드가 저장되고, 데이터 영역은 전역변수 or 스태틱 변수, 이 2개의 영역은 실행파일에 존재한다.
Heap & Stack
heap과 stack 부분은 프로그램을 실행하면서 생겨졌다 없어졌다 하면서 메모리를 사용을 한다.
이때 heap은 동적 할당(dynamic memory allocation)에 의해서 생기는 공간인데 C++ 같은 경우는 new 키워드를 사용해서 메모리를 할당하고 delete로 해제한다.
stack은 push되고 pop 되면서 저장공간이 늘어나고 줄어든다. 대표적인 예로 함수를 호출할 때 Stack에 매개변수로 데이터가 push 된다.
지역변수 또한 Stack의 영향이다. 어떤 함수 안에 어떤 변수를 선언하면 그 함수를 수행할 동안 잠시 저장공간이 생겼다가 함수가 끝나고 나면 없어지고 한다.
힙은 프로세스가 돌아가는 런타임에 크기를 알려줌으로써 영역을 확보하는 공간, 스택은 컴파일 타임에 지역변수나 매개변수가 차지하는 공간
출처
'CS > 운영체제' 카테고리의 다른 글
[운영체제] 프로세스 상태 (0) | 2021.05.25 |
---|---|
[운영체제] 인터럽트의 종류 (0) | 2021.05.24 |
[운영체제] 가상 메모리, 페이징, 세그멘테이션, 페이지 교체 기법 (2) | 2021.05.09 |
[운영체제] 메모리 관리 전략 (Memory Management Strategy) (0) | 2021.05.07 |
[운영체제] 세마포어와 뮤텍스 (0) | 2021.04.30 |
Comments