Written by coh at home

메모리/프로세스 질문 본문

CS/OS

메모리/프로세스 질문

och 2022. 4. 1. 16:56

아.. 뭔가 헷갈려서 정리하려고 적는 포스팅이다. 

 

OS의 thread부분 강의를 듣다보면 하나의 프로세스에 멀티스레드가 존재할 수 있고 이 스레드들은 자원, 즉, 같은 메모리 공간을 공유한다는 것과 함께 각각의 프로세스마다 메모리 공간이 할당된다는 말이 나온다. 

음? 프로세스 메모리? 주기억장치 8GB가 있으면 뭐 kernal영역을 제외하고 이걸 다 활용하는 것이 아니라 

stack 부분 조금, data 부분 조금, heap 부분 조금씩 이렇게 할당해준다는 뜻인가? 뭐야 이게.  

 

근데 또 자료를 찾다보니 그러면 내가 예전에 컴구 배울 때 본 MIPS memory map와 c언어 배울 때 본 memory structure는 무슨 차이가 있는 걸까. 하는 의문도 들었다. 

나와 같은 고민을 한 친구가 있을 거라 기대하며 질문 글들을 찾아봤지만... 없다는 것에 통탄하며 결국 구글링과 학교 도서관 책을 보면서 자료를 찾기 시작했다. 

 

우선 이 질문부터 시작해야할 것 같다. 

1. 음... MIPS는 user가 쓸 수 있는 영역이 이미 정해져있는데다가 

stack, text/code, heap, data segment가 모두 어디서부터 시작하는지 지정되어 있다. 

우리의 주기억장치도 user level에서 다루는 메모리 영역이 이렇게 정의되어 있는 건가? 

그리고 또한 MIPS에서의 kernal이 내가 아는 그 커널이 맞는 건가? 

 

2.주기억 장치의 영역을 나누어서 heap, stack, data, text/code 이렇게 애초에 나누는 것이 아니라 

프로그램을 kernal에 등록해서 메모리가 할당되어 프로세스가 실행되면  

일정부분 메모리를 할당해주고 할당된 메모리에서 알아서 영역을 나누는 건가? 

만약 그렇다면 메모리 할당 정도는 어떻게 파악하지? compile 할 때? 

 

아 이거 중간고사 이후에 설명해주신다고 하네 기다려야겠다. 

다만 하나의 프로그램에 여러 개의 프로세스들이 생성될 수 있는데 이 때 각 프로세스들은 각각의 메모리 공간을 할당받고 서로 침범하지 않는다. 

 

3. 그리고 프로세서가 처리하는 프로세스는 한 개씩 순차적인가? 

멀티프로세스가 가능하다고 하면 각 프로세서의 멀티스레드들은 같은 메모리 공간을 공유한다고 했는데 그렇다면 어떻게 메모리 공간을 프로세스별로 할당하는 걸까? 

 

한 프로세서에는 하나의 프로세스를 처리한다. 내가 책을 잘못 읽었다. 

교수님이 설명해주셨는데...

 

답을 찾으면 다시 포스트를 수정해서 작성해야겠다. 

 

우선 참고할만한 자료들 링크

https://zangzangs.tistory.com/107

 

[OS] 프로세스 메모리 구조 (코드, 데이터, 스텍, 힙)

프로세스 메모리 구조 (코드, 데이터, 스텍, 힙) 프로그램의 실행 프로그램의 실행은 두가지 중요한 의미를 가진다. 파일 시스템에 존재하던 실행파일이 메모리에 적재된다는 의미 프로그램이 CP

zangzangs.tistory.com

 

https://becomeweasel.me/process-and-thread/

 

프로세스와 쓰레드

프로세스란, 실행중인 프로그램을 의미한다. 프로그램을 실행하기 위해서는 주소공간,파일,메모리 등이 필요한데 운영체제로부터 이런 것을 할당받은 프로그램을 프로세스라 한다. 프로그램은

becomeweasel.me

 

'CS > OS' 카테고리의 다른 글

OS supported SW solution -Semaphore  (0) 2022.04.07
Process Syncronization & Mutual Exclusive.2.TAS, spinlock  (0) 2022.04.06
Process Syncronization & Mutual Exclusive  (0) 2022.04.05
OS. Thread.  (0) 2022.03.25