[혼공학습단 12기]혼자 공부하는 컴퓨터구조+운영체제 (6주차)

JAEHYEOK PARK·2024년 8월 18일
0

혼공학습단

목록 보기
6/7

연속 메모리 할당

프로세스에 연속적인 메모리 공간을 할당하는 방식

스와핑

메모리에 적재된 프로세스들 중현재 실행되지 않는 프로세스를 임시로
swap space에 쫓아내고 이렇게 생긴 공간에 다른 프로세스를 적재하여 실행하는 방식을 뜻한다.
이 과정은 swap-out(swap space로 쫓아냄) swap-in(swap space에 있던 프로세스를 다시 메모리로 옮겨오는 것)을 통해 이루어진다

//이 때 스왑 아웃되기 전 physical address와 달라질 수 있음

메모리 할당

메모리 내 빈 공간에 프로세스를 할당하는데는 대표적으로 3가지 방법이 있다.

1. 최초 적합(first fit)
os가 메모리 내 빈 공간 검색하다 적재할 빈 공간 발견하면 그 즉시 프로세스 배치
2. 최적 적합(best fit)
os가 빈 공간 전부 검색해 본 후 프로세스가 적재 가능한 가장 작은 공간에 배치
3. 최악 적합(worst fit)
os가 빈 공간 전부 검색해 본 후 가장 큰 공간에 프로세스 배치

외부 단편화(externel fragmentation)

프로세스들이 메모리에 연속적으로 할당되는 환경에서 프로세스들이 실행되고 종료되기를 반복하며 메모리 사이 사이에 빈 공간이 생기게 됨으로써
메모리 내 빈 공간의 총합보다 실질적으로 프로세스 할당이 가능한 공간이 적게 되는것

-> compaction(압축)을 통해 메모리 조각을 모아 해소할 수 있음
그러나 이 작은 공간들을 하나로 모으는 동안 시스템이 하던 일을 중지해야 하고,
이 작업은 overhead가 크며, 압축의 기준 또한 결정이 어려움

-> 가상 메모리 기법 중 하나인 페이징을 통해 해결

페이징(Paging)

메모리와 프로세스를 일정한 단위로 잘라 메모리에 불연속적으로 할당하는 방식
page: 프로세스의 논리 주소 공간
frame: 메모리 물리 주소 공간
즉 페이지를 프레임에 할당하는 방식

페이징은 스와핑 기법을 사용 가능
page in과 page out(내용은 swaping에서의 방법과 같다.)

프로세스가 분리되어 있다면 cpu입장에서는 다음에 실행할 명령어 위치를 찾기 어렵기때문에
logical address가 연속적으로 배치되도록 page table을 사용함.

//현재 페이지가 어떤 프레임에 할당되었는지 알려주는 것

프로세스마다 각자의 페이지 테이블을 가지고 있으며 이것은 메모리에 적재되어 있고
CPU내의 페이지 테이블 베이스 레지스터(PTBR)은 각 프로세스의 페이지 테이블이 적재된 주소를 가리키고 있음

그러나 페이지 테이블이 메모리에 있기 때문에 메모리 접근 시간이 두 배로 늘어날 수 있다.

-> CPU 곁에 TLB(Translation Lookside Buffer)를 두어 페이지 테이블의 캐시 메모리역할을 수행함으로써 이러한 overhead 완화

//TLB hit와 miss

그러나 내부 단편화(internel fragmentation)를 야기할 수 있음

//모든 프로세스 크기가 페이지의 배수가 아니기 때문에 메모리가 남을 수 있음

페이징 주소 변환

페이징 시스템에서는 모든 logical addresspage numberoffset(변위)으로 이루어져 있음.

//CPU의 32bit 주소에는 N-bit의 page number와 32-N-bit의 offset으로 이루어져 있는 것

페이지 테이블 엔트리(PTE):페이지 테이블의 각각의 행

PTE의 대표적인 구성요소
1. 유효 비트(valid bit)
페이지 접근 가능 여부(현재 페이지가 메모리에 적재되어있는지? 보조 기억장치에 적재 되어있는지?-> valid bit가 0인 data에 cpu가 접근하려고 하면 page fault가 발생함)
2. 보호 비트(protection bit)
페이지 보호 기능(페이지의 Read/Write 가능 여부)
3. 참조 비트(reference bit)
페이지 접근 기록 여부
4. 수정 비트(modified bit/dirty bit)
해당 페이지의 데이터 사용 기록 여부(0이면 변경 된 적 없는/접근x or ReadOnly
-> dirty bit가 1인 데이터는 swap out전에 변경값을 보조기억장치에 기록해야 하므로 필요)

쓰기 시 복사: fork했을때 처음에는 페이징을 통해 부모 프로세스와 자식 프로세스가 메모리의 같은 페이지를 공유하다가 write가 발생하면 그제서야 메모리 공간을 할당하는 방식.
write가 발생하기 전까지 메모리 공간을 절약할 수 있다는 장점이 있다.

계층적 페이징: 페이지 테이블을 계층적으로 구성하여 모든 페이지 테이블을 항상 메모리에 유지할 필요가 없어지게 된다.이 때 CPU가 발생하는 논리 주소 또한 offset과 page number에서 externel page number(CPU 근접 PTE), internel page number(page table page number), offset으로 나뉘게 된다.

요구 페이징(demand paging)

프로세스를 메모리에 적재할 때 처음부터 모든 페이지를 적재하지 않고 필요한 페이지만을 메모리에 적재하는 기법

->페이지를 스와핑할때 page fault를 최소화 해야함

FIFO 페이지 교체 알고리즘: 오래 머무른 page를 내보내는 알고리즘
optimal 페이지 교체 알고리즘: 앞으로의 사용 빈도가 가장 낮은 페이지를 교체하는 알고리즘(이론상 좋으나 실제 구현이 어려워 현실적으로 불가능)
LRU 페이지 교체 알고리즘: Least Recently Used 페이지 교체 알고리즘으로
오랫동안 사용되지 않은 페이지를 교체하는 알고리즘

스래싱(thrashing)
프로세스가 실제 실행되는 시간보다 페이징에 더 많은 시간을 소요하여 성능이 저해되는 현상
-> 프레임 할당
균등 할당(equal allocation), 비례 할당(proportional allocation)등을 통해 각 프로세스가 필요로 하는 최소한의 프레임 수를 보장해 줘서 이를 예방

파일
하드 디스크나 ssd같은 보조기억장치에 저장된 관련 정보의 집합을 의미함
//정보를 모은 논리적 단위
파일의 구성요소
이름
파일 실행위한 정보
파일 관련 부가 정보(attribute, metadata)

숙제

1. p. 400의 확인 문제 1번 풀고 인증하기


정답:
(1): 최초 적합
(2): 최악 적합
(3): 최적 적합

2. Ch.14(14-3) 프로세스가 사용할 수 있는 프레임이 3개 있고, 페이지 참조열이 '2313523423' 일 때 LRU 페이지 교체 알고리즘으로 이 페이지를 참조한다면 몇 번의 페이지 폴트가 발생하는지 풀어보기

정답:
2 3 1 3 5 2 3 4 2 3
1. 제일 오래된 2가 5로 교체(531)
2. 2가 다시 나오고 사용한지 제일 오래된 1이 교체(532)
3. 4가 나오고 사용한지 제일 오래된 5가 교체(432)
3번의 page fault가 발생하게 된다.

이번 주차 간 공부하면서 궁금했던 점들 Q&A

Q1. 연속 메모리 할당 기법에서 worst fit이란 개념이 있는 이유가 비효율적임을 보여주기 위함 뿐인지?

A: 남는 메모리 공간이 작은 조각들로 나뉘는 externel fragmentation을 예방하는데는 worst fit이 더욱 효율적이기 때문에 worst fit은 비효율적이라는 표현 자체가 크게 보았을 때 틀린 말인 듯 하다.

느낀 점

벌써 혼공학습단 12기가 끝이라니 뿌듯하기도 하고 시간이 빠르다 싶기도 하고 싱숭생숭한 기분이다. 그래도 목표가 있으니 매주 열심히 velog에 포스팅하면서 복습도 하고 알차게 시간분배를 잘 할 수 있었던 것 같다. 이런 좋은 기회를 경험할 수 있어서 참 기쁘고 혼공학습단 커리큘럼에 컴구 운체 외 다른 과목도 많던데 다음 기수에도 기회가 된다면 네트워크 복습이나 머신러닝같은 과목으로 참여하면 좋을 것 같다. 하루하루 계속 스텝업하자 화이팅!

0개의 댓글