연속 메모리 할당
스와핑
현재 사용되지 않는 프로세스들을 보조기억장치의 일부영역으로 쫒아내고 빈 공간에 새 프로세스를 적재하는 방식
스왑 영역 : 프로세스들이 쫓겨나 저장되는 보조기억장치의 일부 영역
스왑 아웃 : 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것
스왑 인 : 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것
-->스와핑을 이용하여 프로세스들이 요구하는 메모리 주소 공간의 크기가 실제 메모리 크기보다 큰 경우에도 프로세스들을 동시에 실행 가능하다.
메모리 할당
최초 적합 : 운영체제가 메모리 내의 빈 공간을 순서대로 검색하다 적재할 수 있는 공간을 발견하면 그 공간에 프로세스를 배치하는 방식, 검색 최소화, 빠른 할당
최적 적합 : 운영체제가 빈 공간을 모두 검색해 본 후 뒤, 적재가능 한 가장 작은 공간에 할당
최악 적합 : 운영체제가 빈 공간을 모두 검색해 본 후, 적재가능 한 가장 큰 공간에 할당
외부 단편화
프로세스들이 실행되고 종료되길 반복하면서 메모리 사이에 생기는 작은 공간으로 인해서 생기는 메모리 낭비 현상.
외부 단편화 해결 방법
1. 압축 : 프로세스를 적당히 재배치시켜 흩어져 있는 작은 빈 공간들을 하나의 큰 빈 공간으로 만드는 방법
단점 : 하던 일을 중지해야 하고, 메모리에 있는 내용을 옮기는 작업은 많은 오버헤드를 야기하며, 명확한 기준이 없음
페이징을 통한 가상 메모리 관리
가상 메모리 : 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게하는 기술 (페이징, 세그멘테이션)
페이징이란?
프로세스의 논리 주소 공간을 페이지라는 일정한 단위로 자르고,
메모리 물리 주소 공간을 프레임이라는 페이지와 동일한 크기의 일정한 단위로 자른 뒤
페이지를 프레임에 할당하는 가상 메모리 기법
페이징 시스템에서 스와핑
프로세스 단위가 아닌 페이지 단위로 스왑 인, 스왑 아웃
메모리에 적재될 필요가 없는 페이지들은 스왑 아웃
실행에 필요한 페이지들은 메모리로 스왑 인
--> 프로세스를 실행하기 위해 모든 페이지가 적재될 필요없다. --> 물리메모리보다 큰 프로세스도 실행 할 수 있다!
페이지 테이블
프로세스가 물리 주소에 불연속적으로 배치되더라도 논리 주소에는 연속적으로 배치되도록 하는 것
페이지 번호와 프레임 번호를 짝지어주는 역할을 함
페이지 테이블의 페이지 번호를 이용해 CPU는 논리주소로 순차적으로 실행하면 됨
※페이징 시스템은 외부 단편화 문제를 해결할 수 있지만, 내부 단편화 문제를 야기할 수 있음
프로세스 크기가 페이지 크기의 배수가 아닐 수 있음 -- 약간 남아도는 페이지가 내부 단편화
페이지 테이블 베이스 레지스터
각 프로세스의 페이지 테이블이 적재된 주소를 가르키는 레지스터. CPU 내에 존재함
페이지 테이블을 참조하는데 효율적이지않아 캐시메모리를 사용함
TLB : CPU 곁에 페이지 테이블의 캐시메모리
페이지 테이블의 일부를 저장함
TLB 히트: CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있을 경우(메모리 한번 접근)
TLB 미스: CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 없을 경우(메모리 두번 접근)
페이징에서의 주소 변환
페이징 시스템 논리 주소 형식 == 페이지 번호와 변위
페이지 번호: 접근하고자 하는 페이지 번호
변위: 프레임의 시작 번지로부터 얼만큼 떨어져 있는지의 정보
<페이지 번호, 변위> 논리주소 -- > 페이지 테이블 -- > <프레임 번호, 변위> 논리 주소로 변환됨
페이지 테이블 엔트리
페이지 테이블의 각각의 행들
페이지 테이블 엔트리에 있는 정보
유효 비트 : 현재 해당 페이지에 접근 가능한지 여부를 알려주는 비트
메모리에 적재(1), 보조기억장치에 적재(0)
페이지 폴트 : 유효 비트가 0인 페이지에 접근하려고 할때 발생하는 예외
페이지 폴트 발생시
CPU 기존 작업 내용 백업
페이지 폴트 처리 루틴 실행
페이지 처리 루틴은 원하는 페이지 메모리에 적재 후 유효 비트 1로 변경
페이지 폴트 해결후 CPU는 해당 페이지에 접근 가능
보호 비트 : 페이지 보호 기능을 위한 비트
읽기 모드와 읽기/쓰기 모드를 구분함
보호 비트가 0 일 경우: 읽기만 가능
보호 비트가 1 일 경우: 읽기/쓰기 모두 가능
참조 비트 : CPU가 해당 페이지에 접근한 적이 있는지 여부를 나타내는 비트
접근한 적이 있다면 1, 접근한 적이 없다면 0
수정 비트 : 해당 페이지에 데이터의 수정 여부를 나타냄
변경된 적이 있다면 1, 변경된 적이 없다면 0
수정된 페이지는 스왑 아웃 될때 보조기억장치에도 쓰기 작업을 거쳐야 하므로 수정비트가 필요
페이지 교체와 프레임 할당
요구 페이징
처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법
요구되는 페이지만 적재하는 기법
순수 요구 페이징 : 어떠한 페이지도 메모리에 적재하지 않은 채로 실행하여 메모리에 적재하는 기법.
--> 메모리가 가득참 --> 교체가 필요! --> 최적화된 알고리즘 필요
페이지 교체 알고리즘
페이지 참조열 : CPU가 참조하는 페이지들 중 연속된 페이지를 생략한 페이지열
중복된 페이지를 참조하는 행위는 페이지 폴트를 발생시키지 않기 떄문에
FIFO 페이지 교체 알고리즘 : 페이지 폴트 발생 시 메모리에 가장 먼저 적재된 페이지부터 내쫓는 방식
단점 - 프로그램 실행 내내 사용될 페이지가 있을수 있다.
2차 기회 페이지 교체 알고리즘 : 기본적으로 FIFO 페이지 교체 알고리즘의 규칙에서 기회를 한번더 줌
참조비트를 기반으로 한번기회를 주고 뒤로 밀어냄
최적 페이지 교체 알고리즘 : 앞으로의 사용 빈도가 가장 낮은 페이지를 교체하는 알고리즘
실제 구현이 어렵기 때문에
다른 알고리즘을 평가하는데 사용.
LRU 페이지 교체 알고리즘 : 가장 오랫동안 사용되지 않은 페이지를 교체하는 알고리즘.
스래싱과 프레임 할당
스래싱 : 프로세스가 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 CPU 이용률이 저해되는 문제
멀티프로그래밍의 정도 : 메모리에서 동시 실행되는 프로세스의 수
동시 실행되는 프로세스가 늘린다고 CPU 이용률도 계속 비례해서 높아지는 것이 아니다.
--> 각 프로세스가 필요로 하는 최소한의 프레임 수를 파악하고 적절한 프레임을 할당해야한다.
프레임 할당 방식
균등 할당 : 모든 프로세스들에게 균등하게 프레임을 제공하는 방식
비례 할당 : 프로세스 크기에 비례해 할당하는 방식
프레임의 수는 실행해봐야 알 수 있다
작업 집합 모델 : CPU가 특정 시간 동안 주로 참조한 페이지 개수만큼만 프레임을 할당
작업 집합 : 실행 중인 프로세스가 일정 시간 동안 참조한 페이지의 집합
페이지 폴트 빈도 : 페이지 폴트율에 상한선과 하한선을 정하고, 이 범위 내로 프레임을 할당하는 방식.
너무 많지도 적지도 않은 프레임을 할당하게 하는 방식.
'컴퓨터 사이언스 > 컴퓨터 구조 & 운영체제' 카테고리의 다른 글
[혼공컴운] 운영체제 6주차 미션 (0) | 2024.02.13 |
---|---|
[혼공컴운] 운영체제 chapter 15 (0) | 2024.02.13 |
[혼공컴운] 5주차 미션 (1) | 2024.02.07 |
[혼공컴운] 운영체제 chapter 12 & 13 & 실습 (1) | 2024.02.07 |
[혼공JS] Express 서버 시작하기 (0) | 2024.02.07 |