Not - continuous allocation 가상 메모리 기초 지식

2022. 9. 23. 23:08컴퓨터사이언스(CS)

728x90

컴퓨터 사이언스를 배우면서 또는 현업 백앤드 프런트 앤드를 하시면서 가상 메모리를 모른다는 것은

바보입니다 가상 메모리를 아냐 모르냐 에서 왕초보와 그냥 초보로 나눈 것 같습니다  ( 내 기준..)

 

오늘은 컴퓨터 사이언스를 배우면 아주 기초적인 큰 그림으로 가상 메모리에 대해서 약간 알아보려고

합니다 이 이후 가상 메모리에 대해서 적을 것인데요 전부다 가상 메모리에 대해서 어렵게 적혀있길래

조금 쉽게 적어보려고 합니다 

 

Not - continuous allocation 이 아닌 continuous allocation 은 메모리를 연속적으로 할당합니다 즉 메모

리에 실제 프로그램 전체를 올리는 것이죠 (  저의 블로그에 continuous allocation 설명 있음 중요 )

 

가상 메모리라는 것은 실제 메모리가 아닌 가상을 말하는데요 아주 말하면 " 메모리 인척 " 하는 "디스크"

입니다.

 

디스크에서 메모리를 읽을 때는 1 bit 이건 2bit 이건 한 블록단위 1~ 4 kb를 읽습니다 하지만 연속적으로 

할당( continuous allocation ) 하여 메모리에 적재한다면 메모리 공간이 부족하면 프로세스가 올라오지 못

하는 상황이 됩니다 즉 프로세스를 전체다 읽어온다면 쓰지 않는 프로세스들도 메모리에 적재시켜야 하는

단점이 있습니다 

 

가상 메모리라는 것은 사실 프로세스가 메모리에 올라오기 전에 메모리 공간이 있으면 메모리에 올라가고 

공간이 없으면 메모리 공간 말고 가상 메모리 공간에 올가 가게 됩니다 그것을 스와핑이라고 하는데요 

 

메모리를 올리기 전 블록단위로 프로세스를 읽어와 여러 개로 분할해줘 스왑 디바이스 ( 메모리가 없으면 가는

공간 )으로 보냅니다 그리고 가상 메모리 ( 스왑 디바이스) 에있는 각 프로세스를 필요할 때마다 읽어와 실제 주소

와  메모리의 주소를 붙여  사용하는데요 여기까지 글로만 이해하셨다면 당신은 천제입니다  여기까지 가상 메모리의 개념인데요 제가 밑에서 ( 한빛미디어 관련 교제)의 부분을 사용해 쉽게 그림으로 설명해보겠습니다

 

자 위에 그림 처럼 파란색이 우리 프로세스라고 생각해 보겠습니다 파란색 프로세스 들은 각각 블록 단위 ( 메모리가 디스크에서 프로세스로 읽는 단위 )로 프로세스를 읽어 가상 메모리 ( 스왑 디바이스 )에 단위 별로 넣어둡니다

 

그 후 스왑 디바이스에서는 virtual address( 가상 메모리 주소 )  블록단위의 프로세스 = (가상 메모리의 프로세스가 저장되는 실제주소 , 가상 메모리에서 블록단위로 잘린 프로세스의 끝나는 지점의 주소 ) 가상 메모리 주소를 붙여 스왑 디바이스에 넣어 두는데요 그 후 커널에는 각 프로세스마다 잘린 단위야 크기를 저장할 수 있는 BMT에 정보를 저장해두는데요

이런 식으로 커널에 저장됩니다

block number : 가상 메모리 시작 주소 ,

residence bit : 실제메모리적제여부 1( 메모리에 있음 ) 0 메모리 없음

real address :  residence bit에

 

 

 

이렇게 1이라면 메모리의 실제주소 와 맵핑을 시켜 주소를 알아낸 후 메모리 맵핑을 시키는데요 만약 0이면 저장하지 않고

만약 메모리에 있다면 메모리에 저런 식으로 맵핑에 메모리에 올려 사용합니다

 

 

이렇게 가상 메모리의 아주 기초 메모리 주소 맵핑 가상 메모리에 있는 프로세스들을 맵핑시키는 방법을 알아봤습니다

이제 다음장부터는 가상 메모리의 대해서 글을 적어 보려고 합니다 

 

꼭 맵핑되어야 하는지 식이 필요합니다 그리고 이해도 훨씬 빨리 할 수 있기 때문에 한 번쯤 기억해두시면 좋을 것 같습니다 감사합니다

 

 

728x90