앞에서 포스팅한 프로세스는 컴퓨터로부터 메모리 공간을 할당을 받는다고 정리를 하였다.
(자세한 내용은 아래 포스팅 참고)
프로세스와 스레드의 차이
개발자 면접에서 단골 질문인 "프로세스와 스레드의 차이를 설명하시오" 에 대해 정리해보려고 한다. 우선 둘의 차이를 알려면 각각의 개념에 대해서 알아볼 필요가 있다. 1) 프로세스란 무엇인
eeasyy.tistory.com
할당받은 메모리 공간의 구조는 어떻게 생겼고 얼마나 받을 수 있는지 정리를 해보려고 한다.
1) 프로세스는 얼마나 자신의 독립적인 공간을 할당 받을까?
답부터 말하자면 4GB 이다.
할당받은 메모리 공간은 가상 메모리라는 것이며 말 그대로 실제로 존재하지 않은 공간이다.
운영체제내에서 구현한 가상의 메모리 공간이고 이제 물리 메모리에 맴핑을 하며 가상 메모리 공간을 관리한다.
가상 메모리 관련해서는 내용이 길어지기에 여기서 줄이도록 하겠다.
할당은 4GB의 공간은 다시 사용자영역과 커널영역으로 나눠진다.
오늘은 커널영역이 아닌 사용자영역에 대해서만 다루고 넘어가도록 하겠다.
아래의 그림은 사용자영역의 메모리 구조이다.
위에서부터 code, data, heap, stack 이라 불리는 메모리 공간이다.
한번 하나씩 공간의 역할에 대해서 알아보도록 하자.
2) 각 메모리 공간의 역할
code 영역
개발자가 작성한 코드들이 저장되는 공간이다.
data 영역
개발자가 사용한 전역변수, static 변수가 저장되는 공간이다.
heap 영역
프로세스가 개발자에게 제공하는 자유로운 공간이라고 생각하면 된다. 개발자가 사용하고싶은만큼 사용하고 해제하면된다.
우리가 사는 세상처럼 자유롭게 사용했으면 제자리에 갔다놔야하는데 안그러면 문제가 발생하는곳이기도 하다.
주어진 자유에 책임이 따른다.
stack
함수 내부에서 사용하는 지역변수와 함수의 매개변수 등을 저장하는 곳이다.
프로세스의 메모리 공간에 대해서 간단히 살펴봤는데
사실 파고 파고 들어가면 정말 방대한 내용들이 있는데..
여기서 다 다루기에는 너무 힘들것같아 여기서 줄이도록 한다.
더 자세한 내용은 추후에 꼭!꼭! 다루기로 하자.
그럼 끝.
'CS > 운영체제' 카테고리의 다른 글
동시성에 대해서(동기 vs 비동기) (0) | 2023.03.20 |
---|---|
프로세스와 스레드의 차이 (0) | 2023.01.09 |