[운영체제] 메모리 분할 방식

Robert.Yang·2023년 4월 15일
1

OS

목록 보기
18/22
post-thumbnail

이 포스트는 널널한 개발자님의 강의를 듣고 작성한 글입니다.

메모리 분할 방식

지금까지 우리가 이야기했던 메모리는 물리 메모리이다. 근데 솔직히 몰라도 사는데 지장은 없다. 왜냐하면 이것은 알아서 잘 되고 있기 때문이다. 아무튼 그래도 나는 계속 이야기를 이어나가 보겠다.

이런 물리 메모리를 관리하는 방법이 크게 2가지가 존재하는데 가변분할 방식과 고정분할 방식이 있다. 이 물리 메모리를 꼭 써야하는 이유는 여기에 올라가는게 어떤 S/W의 기계어가 올라간다. 이 기계어를 하나씩 잘라다가 CPU가 연산을 해야하니까 그러기 위해서 1차 메모리에 로딩을 하는건데 문제는 이 S/W의 크기가 얼마나 되는지 알 수가 없다. 왜냐하면 프로그램마다 크기가 제각각이기 때문이다. 그런데 가변분할방식은 만약 프로그램이 동시에 여러개 작동한다면 이 프로그램들이 프로세스가 되고 이 프로세스들을 연속된 공간에 할당되고 이것의 단위를 세그먼트라고 부른다. 이 세그먼트들은 크기가 각각 다르다.

그리고 고정분할방식은 어떤 일정단위(page)로 짤라 놓은거에 대해서 할당한다, 만약 page가 20KB인데 프로세스 크기가 40KB이면 이 프로세스를 2개로 쪼갠다. 그리고 쪼개진 것들이 같이 붙어있을 수도 있겠지만 다른 곳으로 각각 떨어질 수도 있는데 이는 OS 처리방식마다 다르다.

그리고 또 알아두어야할께 가변분할이든 고정분할이든 빈 공간(자투리 공간)이 생기는데 또 다른 용어로 단편이라고 하고 이 단편(조각)들을 조각모음해줘야 한다.

흔히 요즘 OS는 가변분할 + 고정분할 합성해서 같이 쓴다.

가변분할방식을 쓰면 장점은 메모리를 촘촘하게 쓸수 있지만 문제점은 이 메모리 중간을 쓰던 프로세스가 종료되면 쓰고 있던 메모리를 회수한다. 그런데 또 다른 프로세스가 동작하게 되면 그 프로세스가 종료된 프로세스 크기보다 크게되면 문제 즉, 관리적 이슈가 발생한다. 어떻게 보면 관리적 측면에서 고정분할의 로직이 더 단순하다.

아무튼 다시 예를 들면 프로세스 A,B,C,D,E를 실행순서데로 놓는다. 그런데 중간의 B와 D가 종료되면 중간에 메모리 공간이 비게 된다. 이건것을 외부단편화라고 한다. 이런 것들을 나중에 조각모음을 해주는데 이런 조각모음을 위해 빈 공간들을 한쪽에 몰아놓으려면 기존 프로세스들이 이동해야 하는데 그러면 메모리 MOVE가 일어나는데 이 조각모음이 그래서 좋을 수도 있고 안 좋을 수도 있다. 왜냐하면 이 조각모음 자체가 CPU를 사용하는 일이고 이것도 OS연산을 수반하기 때문에 잘하는것인지는 생각해봐야 한다.

요즘은 SSD로 바뀌면서 조각모음이 필요가 없어졌는데 조각을 접근할때 HDD에 비해 어느 섹터, 트랙이든 일정속도로 다 되다보니까 굳이 필요가 없어졌다.

구분가변 분할 방식고정 분할 방식
메모리 단위세그먼테이션페이징
특징연속 메모리 할당비연속 메모리 할당
장점프로세스를 한 덩어리로 관리 가능메모리 관리가 편함
단점빈 공간의 관리가 어려움프로세스가 분할되어 처리됨
단편화외부 단편화내부 단편화
profile
모든 것을 즐길 줄 아는 개발자, 양성빈입니다.

0개의 댓글