각각의 프로세스는 독립된 메모리 공간을 갖고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제한이 걸려있다. 단지, 운영체제 만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않는다.
기억장치 계층 구조
- 계층 구조에서 상위의 기억장치일수록 접근 속도와 접근 시간이 빠르지만, 기억 용량이 적고 고가이다.
- 주기억장치는 각기 자신의 주소를 갖는 워드 또는 바이트들로 구성되어 있으며, 주소를 이용하여 액세스할 수 있다.
- 레지스터, 캐시 기억장치, 주기억장치의 프로그램과 데이터는 CPU가 직접 액세스 할 수 있으나
보조기억장치에 있는 프로그램이나 데이터는 직접 액세스할 수 없다.
- 보조기억장치에 있는 데이터는 주기억장치에 적재된 후 CPU에 의해 액세스 될 수 있다.
🗂 주기억장치 할당 기법
- 연속 할당 기법
- 단일 분할 할당 기법 : 오버레이, 스와핑
- 다중 분할 할당 기법 : 고정 분할 할당 기법, 동적 분할 할당 기법
- 분산 할당 기법
📌 스와핑(Swapping)
메모리의 관리를 위해 사용되는 기법.
표준 Swapping 방식으로는 Round Robin 과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장치(e.g. 하드디스크)로 내보내고 다른 프로세스의 메모리를 불러 들일 수 있다.
이 과정을 Swap(스왑시킨다)이라 한다.
다시 말해,
하나의 프로그램 전체를 주기억장치에 할당하여 사용하다
필요에 따라 다른 프로그램과 교체하는 기법이다.
- Swap In : 보조기억장치 → 주기억장치(RAM)로 불러오는 과정
- Swap Out : 주기억장치 → 보조기억장치로 내보내는 과정
- Swap에는 큰 디스크 전송시간이 필요하기 때문에 현재에는 메모리 공간이 부족할 때 Swapping 이 시작
- 하나의 사용자 프로그램이 완료될 때까지 교체 과정 여러 번 수행 가능
- 가상기억장치의 페이징 기법으로 발전
단편화(Fragmentation)란?
프로세스들이 메모리에 적재되고 제거되는 일이 반복되다보면,
프로세스들이 차지하는 메모리 틈 사이에
사용 하지 못할 만큼의 작은 자유 공간들이 늘어나게 되는데, 이것이 단편화 이다.
단편화는 2가지 종류로 나뉜다.
내부 단편화
- 프로세스가 사용하는 메모리 공간에 포함된 남는 부분 → 분할된 영역이 할당될 프로그램의 크기보다 크기 때문에 프로그램이 할당된 후 사용되지 않고 남아 있는 빈 공간
- 예를들어 메모리 분할 자유 공간이 10,000B 있고 Process A 가 9,998B 사용하게되면 2B 라는 차이 가 존재하고, 이 현상을 내부 단편화라 칭한다.
외부 단편화
- 메모리 공간 중 사용하지 못하게 되는 일부분. → 분할된 영역이 할당될 프로그램 크기보다 작기 때문에 프로그램이 할당될 수 없어 사용되지 않고 빈공간으로 남아 있는 분할된 전체 영역
- 물리 메모리(RAM)에서 사이사이 남는 공간들을 모두 합치면 충분한 공간이 되는 부분들이 분산되어 있을 때 발생한다고 볼 수 있다.
단편화 제거
디스크 단편화 제거
- 통합
- 압축(집약)
물리적으로 디스크의 내용을 다시 정리하여 각 파일을 연속적으로 붙이면서 이러한 작업을 수행한다. → 외부 단편화를 해소하기 위해 프로세스가 사용하는 공간들을 한쪽으로 몰아, 자유공간을 확보하는 방법론이다.
- 작업 효율이 좋지 않다.
조각이 난 파편을 제거하는 방식
→ 메모리 단편화 제거(페이징, 세그먼테이션)를 사용하면 효율적이다.
🗂 가상기억장치 구현 기법
가상기억장치는 보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용하는 것으로,
용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법이다.
📌 페이징(Paging)
하나의 프로세스가 사용하는메모리 공간이 연속적이어야 한다는 제약을 없애는메모리 관리 방법이다.
외부 단편화와 압축 작업을 해소 하기 위해 생긴 방법론이다.
가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후
나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 시행하는 기법이다.
- 페이지(Page) : 프로그램을 일정한 크기로 나눈 단위
- 페이지 프레임(Page Frame) : 페이지 크기로 일정하게 나누어진 주기억장치의 단위
- 특징
- 논리 메모리는 물리 메모리에 저장될 때, 연속되어 저장될 필요가 없다.
- 외부 단편화를 해결할 수 있다.
- 주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블(Page Map Table)이 필요하다.
- 단점
- 외부 단편화는 발생하지 않으나 내부 단편화 문제의 비중이 늘어나게 된다.
- 페이지 맵 테이블 사용으로 비용이 증가되고, 처리 속도가 감소된다.
📌 세그먼테이션(Segmentation)
가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후
주기억장치에 적재시켜 실행시키는 기법이다.
페이징에서처럼 논리 메모리와 물리 메모리를 같은 크기의 블록이 아닌,서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 분할한다. 사용자가 두 개의 주소로 지정(세그먼트 번호 + 변위)한다.
- 세그먼트(Segment) : 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위
→ 각 세그먼트는 고유한 이름과 크기를 갖는다.
- 특징
- 기억장치의 사용자 관점을 보존하는 기억장치 관리 기법이다.
- 내부 단편화를 해결할 수 있다.
- 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블(Segment Map Table)이 필요하다.
- 세그먼트가 주기억장치에 적재될 때, 다른 세그먼트에게 할당된 영역을 침범할 수 없다.
→ 기억장치 보호키(Storage Protection Key) 필요
- 단점
- 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있다.
→ 서로 다른 크기의 세그먼트들이 메모리에 적재되고 제거되는 일이 반복되다 보면, 자유 공간들이 많은 수의 작은 조각들로 나누어져 못 쓰게 될 수도 있다.
- 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있다.
⍞ Reference
- 도서 : 2020 시나공 정보처리기사 필기, 길벗
'정리 log > 용어 · 개념' 카테고리의 다른 글
[OS] 블로킹-논블로킹, 동기-비동기 (0) | 2020.09.12 |
---|---|
[데이터베이스] 정규화 vs. 비정규화(반정규화) (1) | 2020.06.15 |
[네트워크] 프로토콜 (0) | 2020.05.25 |
[네트워크] OSI 참조 모델, TCP/IP 모델 (0) | 2020.05.18 |
[네트워크] 인터넷, IP 주소, 서브네팅 (0) | 2020.05.17 |
댓글