TIL 220919

강지훈·2022년 9월 18일
0

[메모리할당: 페이징, 세그멘테이션, 페이지드 세그멘테이션]
불연속 할당
메모리를 연속적으로 할당하지 않는 불연속 할당은 현대 운영체제가 쓰는 방법으로 불연속 할당인 페이징 기법이 있습니다. 메모리를 동일한 크기의 페이지(보통 4kb)로 나누고 프로그램마다 페이지 테이블을 두어 이를 통해 메모리에 프로그램을 할당하는 것이죠.
페이징 기법말고도 세그멘테이션, 페이지드 세그멘테이션이 있습니다.

페이징
페이징(paging)은 동일한 크기의 페이지 단위로 나누어 메모리의 서로 다른 위치에 프로세스를 할당합니다. 홀의 크기가 균일 하지 않은 문제가 없어지지만 주소 변환이 복잡해집니다.

세그멘테이션
세그멘테이션(segmentation)은 페이지 단위가 아닌 의미 단위인 세그멘트(segment)로 나누는 방식입니다. 프로세스는 코드, 데이터, 스택,힙 등으로 이루어지는데, 코드와 데이터 등 이를 ㅣ반으로 나눌 수도 있으며 함수 단위로 나눌 수도 있음을 의미합니다. 공유와 보안 측면에서 좋으며 홀 크기가 균일하지 않은 문제가 발생됩니다.

페이지드 세그멘테이션
페이지드 세그멘테이션(paged segmentation)은 공유나 보안을 의미 단위의 세그멘트로 나누고, 물리적 메모리는 페이지로 나누는것을 말합니다.

[페이지교체 알고리즘: FIFO, LRU,NUR,LFU]
페이지 교체 알고리즘
메모리는 한정되어 있기 때문에 스와핑이 많이 일어납니다. 스와핑은 많이 일어나지 않도록 설계되어야 하며 이는페이지 교체 알고리즘을 기반으로 스와핑이 일어납니다.
오프라인 알고리즘
오프라인 알고리즘(off line algorithm)은 먼 미래에 참조되는 페이지와 현재 할당하는 페이지를 바꾸는 알고리즘이며, 가장 좋은 방법입니다. 그러나 미래에 사용되는 프로세스를 우리가 알 수 있을까요?
알 수 없습니다.

즉 사용할 수 없는 알고리즘이지만 다른 알고리즘과의 성능 비교에 대한 기준을 제공합니다.

FIFO
FIFO(First In First Out)는 가장 먼저 온 페이지를 교체 영역에 가장 먼저 놓는 방법을 의미합니다.

LRU
LRU(Least Recently Used)는 참조가 가장 오래된 페이지를 바꿉니다. '오래된' 것을 파악하기 위해 각 페이지마다 계수기, 스택을 두어야 하는 문제점이 있습니다.
다음 그림에서 보듯이 5번째에 5번 페이지가 들어왔을 때 가장 오래된 1번 페이지와 스왑하는 것을 볼 수 있는데 이것이 바로 LRU 방식입니다.

NUR(Not Used Recently)
일명 clock 알고리즘이라고 하며 먼저 0과 1을 가진 비트를 둡니다
1은 최근에 참조되었고 0은 참조되지 않음을 의미합니다.
시계 방향으로 돌면서 0을 찾고 0을 찾은 순간 해당 프로세스를 교체하고, 해당 부분을 1로 바꾸는 알고리즘입니다.

LFU
LFU(Least Frequently Used)는 가장 참조 횟수가 적은 페이지를 교체합니다. 즉, 많이 사용되지 않은 것을 교체하는 것이죠

[상태 코드 종류]
information : 100 (정보 응답) => 요청자는 요청을 계속해야한다
나머지를 기다리고 있음

successful: 200 (성공 응답)

redirectionL 300 (리다이렉션)

client Error: 400(클라이언트에러) => URL, 캐시,쿠키,DNS, 브라우저 캐시

server Error: 500 (서버에러)

profile
never stop

0개의 댓글