공부

[혼공컴운] 6주차_ 가상메모리/파일 시스템

무른2 2025. 2. 22. 22:10

✔️연속 메모리 할당

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

 

 

✔️스와핑

https://coji.tistory.com/176

메모리에서 사용되지 않는 일부 프로세스를 보조기억장치로 내보내고 실행할 프로세스를 메모리로 들여보내는 메모리 관리 기법

 

🌟스왑 영역: 프로세스들이 쫓겨나는 보조기억장치의 일부 영역

🌟스왑 아웃: 현재 실행되지 않는 프로세스가 메모리에서 스왑 영역으로 옮겨지는 것

🌟스왑 인: 스왑 영역에 있던 프로세스가 다시 메모리로 옮겨오는 것 

 

✔️메모리 할당

🌟최초 적합: 최초로 발견한 적재 가능한 빈 공간에 프로세스를 배치하는 방식

🌟최적 적합: 프로세스가 적재될 수 있는 가장 작은 공간에 프로세스를 배치하는 방식

🌟최악 적합: 프로세스가 적재될 수있는 가장 큰 공간에 프로세스를 배치하는 방식

 

✔️외부 단편화

프로세스를 할당하기 어려울 만큼 작은 메모리 공간들로 인해 메모리가 낭비되는 현상

연속 메모리 할당시 프로세스들이 실행과 종료를 반복하며 빈 공간들이 발생하고 이때 발생하는 문제점이다.

 

해결 방안: 압축

흩어져 있는 빈 프로세스 공간들을 하나로 모으는 방식이다.

 

단점: 메모리에 있는 내용을 옮기는 작업은 오버헤드를 일으킨다.

 

✔️페이징

페이징 시스템에서의 스왑 아웃은 페이지 아웃, 스왑 인은 페이지 인으로 불린다.

 

메모리의 물리 주소 공간을 프레임 단위로 자르고, 프로세스의 논리 주소 공간을 페이지 단위로 자른 뒤 각 페이지를 프레임에 할당하는 가상 메모리 관리 기법 - 메모리를 조각 내어 불연속적으로 적재하는 것과 같음

 

가상 메모리: 실행하고자 하는 프로그램을 일부만 메모리에 적재하여 실제 물리 메모리 크기보다 더 큰 프로세스를 실행할 수 있게 하는 기술로, 가상 메모리 관리 기법에는 페이징과 세그멘테이션이 존재한다.

 

 

🌟페이지 테이블: 페이징 기법에서 현재 어떤 페이지가 어떤 프레임에 할당되었는지를 알려준다.

프로세스가 물리 주소에 불연속적으로 배치되더라도 CPU는 페이지 테이블을 통해 페이지 번호가 적재된 프레임을 찾을 수 있다.

 

 

✔️내부 단편화

하나의 페이지 크기보다 작은 크기로 발생하는 메모리 낭비Partition의 크기가 프로세스의 크기보다 커서 메모리가 남지만, 다른 프로세스가 사용할 수 없는 상태(출처: https://hojunking.tistory.com/109)

 

 

✔️PTBR(페이지 테이블 베이스 레지스터)

프로세스마다 페이지 테이블이 존재하고 각 프로세스의 페이지 테이블이 적재된 주소를 가리킨다.

 

문제점: 메모리 접근 시간이 두 배로 늘어난다. (1. 페이지 테이블 2. 프레임)

해결점: TLB(페이지 테이블의 캐시 메모리) - 페이지 테이블의 일부를 저장

 

🌟TLB히트: CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 있을 경우 메모리에 한 번 접근한다.

🌟TLB미스: CPU가 발생한 논리 주소에 대한 페이지 번호가 TLB에 없을 경우 메모리에 두 번 접근한다. - 페이지가 적재된 프레임을 알기 위해 메모리 내 페이지 테이블에 접근

 

 

✔️페이징에서의 주소 변환

하나의 페이지 혹은 프레임은 여러 주소를 포괄하고 있다. 그러므로 특정 주소에 접근시 두 가지 정보가 필요하다.

  • 어떤 페이지 혹은 프레임에 접근하고자 하는지
  • 접근하려는 주소가 그 페이지 혹은 프레임으로부터 얼마나 떨어져 있는지

 

즉 페이징 시스템에서 논리 주소는 페이지 번호와 변위로 이루어진다.

 

🌟페이지 번호: 접근하고자 하는 페이지 번호로 페이지 번호를 알면 어떤 프레임에 할당되었는지 알 수 있다.

🌟변위: 접근하려는 주소가 프레임의 시작 번지로부터 얼만큼 떨어져 있는지 

 

논리 주소 <페이지 번호, 변위>는 페이지 테이블을 통해 물리 주소 <페이지 번호, 변위>로 변환된다.

 

 

✔️페이지 테이블 엔트리

페이지 테이블의 각각의 행들을 페이지 테이블 엔트리라고 칭한다.

 

페이지 테이블 엔트리에는 페이지 번호, 프레임 번호, 유효 비트, 보호 비트, 참조 비트, 수정 비트 등이 담겨 있다.

 

🌟유효 비트: 현재 페이지가 메모리에 적재되어 있는지 보조기억장치에 있는지 알려주는 비트

🌟보호 비트: 페이지 보호 기능을 위해 존재하는 비트 - 읽기/쓰기/실행 가능 여부를 알려준다.

🌟참조 비트: CPU가 해당 페이지에 접근한 적이 있는지 여부

🌟수정 비트: 해당 페이지에 데이터를 쓴 적이 있는지 없는지 수정 여부를 알려준다.

 

 

✔️페이지 교체와 프레임 할당

운영체제는 프로세스들이 한정된 메모리를 효율적으로 이용하도록 메모리에 적재된 불필요한 페이지를 선별하여 보조기억장치로 내보내고 프로세스들에 적절한 수의 프레임을 할당하여 페이지를 할당할 수 있게 페이지 교체 알고리즘을 사용한다.

 

 

✔️요구 페이징

 

페이지가 필요할 때에만 메모리에 적재하는 기법

 

요구 페이징의 원리

1. CPU가 특정 페이지에 접근하는 명령어 실행

2. 해당 페이지가 현재 메모리에 있을 경우(유효 비트가 1일 경우) CPU는 페이지가 적재된 프레임에 접근

3. 해당 페이지가 현재 메모리에 없을 경우(유효 비트가 0일 경우) 페이지 폴트 발생

4. 페이지 폴트 처리 루틴은 해당 페이지를 메모리로 적재하고 유효 비트를 1로 설정

5. 다시 1번부터 수행

 

🌱참고(페이지 폴트 관련 설명)

https://velog.io/@orcasuit/Page-Fault

 

Page Fault

운영 체제(OS)에서의 페이지 폴트(Page Fault)는 프로세스가 접근하려는 메모리 페이지가 물리적 메모리(RAM)에 존재하지 않을 때 발생하는 이벤트입니다. 페이지 폴트는 가상 메모리 시스템의 중요

velog.io

 

 

✔️FIFO 페이지 교체 알고리즘

적재된 페이지 순서대로 교체하는 페이지 교체 알고리즘으로 메모리에 가장 먼저 올라온 페이지부터 내쫓는 방식이다.

 

 

✔️최적 페이지 교체 알고리즘

CPU에 의해 참조되는 횟수를 고려하는 페이지 교체 알고리즘으로 앞으로의 사용 빈도가 가장 낮은 페이지를 교체한다.

 

✔️LRU 페이지 교체 알고리즘

가장 오랫동안 사용되지 않은 페이지 교체 알고리즘

최적 페이지 교체 알고리즘은 오랫동안 사용되지 '않을' 페이지를 교체한다는 점에서 차이가 있다.

 

 

✔️스레싱

https://velog.io/@chappi/OS%EB%8A%94-%ED%95%A0%EA%BB%80%EB%8D%B0-%ED%95%B5%EC%8B%AC%EB%A7%8C-%ED%95%A9%EB%8B%88%EB%8B%A4.-18%ED%8E%B8-Thrashing%EC%8A%A4%EB%A0%88%EC%8B%B1

 

지나치게 빈번한 페이지 교체로 인해  CPU 이용률이 낮아지는 문제

 

스레싱을 그래프로 표현할시 다음과 같은 그림으로 그려진다.

동시에 실행되는 프로세스의 수(멀티프로그래밍의 정도)를 늘린다고 해서 CPU 이용률이 비례하여 증가하지 않음을

보여준다. 즉 동시에 실행되는 프로세스 수가 어느 정도 증가시 CPU 이용률이 높아지지만 필요 이상으로 늘릴시 각 프로세스들이 사용할 수 있는 프로세스 수가 적어지기 때문에 페이지 폴트가 빈번하게 발생하고 CPU 이용률이 떨어지는 것을 확인할 수 있다. 

 

 

스레싱이 발생하는 근본 원인: 각 프로세스가 필요로 하는 최소한의 프레임 수가 보장되어 있지 않기 때문

 

 

✔️프레임 할당 방식

정적 할당 방식

🌟균등 할당: 모든 프로세스에 동일한 프레임을 배분하는 방식

🌟비례 할당: 프로세스 크기에 따라 프레임을 배분하는 방식

 

동적 할당 방식

🌟 작업 집합 모델: 작업 집합(실행 중인 프로세스가 일정 시간 동안 참조한 페이지의 집합)의 크기만큼 프레임 할당

🌟페이지 폴트 방식: 페이지 폴트율에 상한선과 하한선을 정하고 그 내부 범위 안에서만 프레임을 할당

https://velog.io/@mm723/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%ED%8E%98%EC%9D%B4%EC%A7%80-%EA%B5%90%EC%B2%B4%EC%99%80-%ED%94%84%EB%A0%88%EC%9E%84-%ED%95%A0%EB%8B%B9

 

 

 

 

✔️파일과 디렉터리

파일: 의미 있고 관련 있는 정보를 모은 논리적인 단위

속성: 파일 관련 부가 정보

 

파일 속성과 유형

속성 이름 의미
유형 운영체제가 인지하는 파일의 종류
크기 파일의 현재 크기와 허용 가능한 최대 크기
보호 어떤 사용자가 해당 파일을 읽고 쓰고 실행할 수 있는지
생성 날짜 파일이 생성된 날짜
마지막 접근 날짜 파일에 마지막으로 접근한 날짜
마지막 수정 날짜 파일이 마지막으로 수정된 날짜
생성자 파일을 생성한 사용자
소유자 파일을 소유한 사용자
위치 파일의 보조기억장치상의 현재위치

 

 

파일 유형

파일 유형 대표 확장자
실행 파일 없는 경우, exe, com, bin
목적 파일 obj, o
소스 코드 파일 c, cpp, cc, java, asm, py
워드 프로세서 파일 xml, rtf, doc, docx
라이브러리 파일 lib, a, so, dll
멀티미디어 파일 mpeg, mov, mp3, mp4, avi
백업/보관 파일 rar,zip,tar

 

 

디렉터리: 운영체제에서는 폴더로 칭하며 디렉터리를 이용하여 파일이나 디렉터리를 관리할 수 있다.

경로: 디렉터리를 이용해 위치를 특정 짓는 정보

절대 경로: 루트 디렉터리부터 시작하는 경로

상대 경로: 현재 디렉터리부터 시작하는 경로

 

 

✔️파일 시스템

 

파일과 디렉터리를 보조기억장치에 저장하고 접근할 수 있게 하는 운영체제 내부 프로그램

대표적으로 FAT 파일 시스템과 유닉스 파일 시스템이 있다.

 

🌟파티셔닝: 저장 장치의 논리적인 영역을 구획하는 작업

🌟파티션: 파티셔닝 작업을 통해 나누어진 영역

🌟포매팅: 파일 시스템을 설정하여 어떤 방식으로 파일을 저장하고 관리할 것인지 결정, 새로운 데이터를 쓸 준비를 하는 작업

 

 

✔️파일 할당 방법

파일 할당 방법에는 연속 할당과 불연속 할당이 있고 불연속 할당은 오늘날까지 사용되는 방식이다.

불연속 할당에는 연결 할당과 색인 할당 방법이 있다.

 

 

✔️연속 할당

https://velog.io/@khs0415p/14-%ED%8C%8C%EC%9D%BC-%ED%95%A0%EB%8B%B9

 

파일이 저장 장치 내에서 연속적인 공간을 차지하도록 블록을 할당하는 방법

 

장점: 구현이 단순하다

단점: 외부 단편화를 야기한다.

 

 

✔️연결 할당

https://velog.io/@khs0415p/14-%ED%8C%8C%EC%9D%BC-%ED%95%A0%EB%8B%B9

 

각 블록 일부에 다음 블록의 주소를 저장하여 각 블록이 다음 블록을 가리키는 형태로 할당하는 방식

파일을 이루는 데이터를 연결 리스트로 관리한다. 

 

장점: 외부 단편화 문제를 해결할 수 있다.

단점: 반드시 첫 번째 블록부터 하나씩 차례대로 읽어야 한다. - 임의 접근 속도가 느리다.

         하드웨어 고장이나 오류 발생  시 해당 블록 이후 블록 접근이 불가하다.

 

 


🌟FAT 시스템 

연결 할당의 단점을 보완한 파일 시스템

각 블록에 포함된 다음 블록의 주소들을 모아 테이블 형태로 관리하는, 즉 파일 할당 테이블(FAT)를 활용한다.

 

 

✔️색인 할당

https://velog.io/@khs0415p/14-%ED%8C%8C%EC%9D%BC-%ED%95%A0%EB%8B%B9

 

파일의 모든 블록 주소를 색인 블록이라는 하나의 블록에 모아 관리하는 방식

색인 할당은 연결 할당과 달리 파일 내 임의의 위치에 접근하기 쉽다.

색인 할당을 사용하는 파일 시스템에서는 디렉터리 엔트리에 파일 이름과 더불어 색인 블록 주소를 명시한다.

 

 

🌟유닉스 파일 시스템

유닉스 파일 시스템은 색인 할당 기반의 파일 시스템으로 i-node 블록을 통해 블록을 관리한다.

i-node 에는 파일 속성 정보와 15개의 블록 주소를 저장할 수 있다.

 

유닉스 파일 시스템의 원리

1. 블록 주소 중 12개에는 직접 블록 주소(파일 데이터가 저장된 블록)를 저장한다.

2. 1번의 내용으로 충분치 않다면 13번째 주소에 단일 간접 블록 주소(파일 데이터를 저장한 블록 주소가 저장된 블록)를 저장한다.

3. 2번 내용으로 충분치 않다면 14번째 주소에 이중 간접 블록 주소(단일 간접 블록들의 주소를 저장하는 블록)를 저장한다.

4.3번 내용으로 충분치 않다면 15번째 주소에 삼중 간접 블록 주소를 저장한다. 

 

 

 

✔️숙제