3주차 발자국 운영체제

가상메모리 개요

  • 정의: 가상 메모리는 물리 메모리(RAM)의 용량이 부족할 때 보조 저장 장치(디스크)를 마치 메모리처럼 사용하는 기술이야.

  • 목적: 한정된 물리 메모리 자원을 효과적으로 활용하고, 프로그램이 실제 메모리 크기를 몰라도 실행되도록 해 줌.

  • 장점: 여러 프로그램이 동시에 실행 가능하고, 물리 메모리보다 큰 프로그램도 실행할 수 있음.

가상메모리의 메모리 분할 방식 1: 세그멘테이션(Segmentation)

  • 설명: 프로그램을 의미 있는 단위(세그먼트)로 나누는 방식. 보통 코드, 데이터, 스택 등으로 나눔.

  • 방식: 가변 분할 방식 → 각 세그먼트 크기가 서로 다름.

  • 장점:

    • 논리적인 구조 반영이 용이함 (코드, 데이터 등을 따로 관리).

    • 필요한 메모리만큼만 할당하므로 메모리 낭비가 적음.

  • 단점:

    • 외부 단편화 발생 → 메모리가 여기저기 나뉘어져 있어서 충분한 메모리가 있어도 연속 공간이 부족하면 사용하지 못하는 문제.

가상메모리의 메모리 분할 방식 2: 페이징(Paging)

  • 설명: 메모리를 고정된 크기의 페이지(Page) 단위로 나눔.

  • 방식: 고정 분할 방식 → 모든 페이지 크기가 동일함.

  • 장점:

    • 외부 단편화가 없음 → 빈 공간이 여기저기 흩어져 있어도 사용 가능.

    • 메모리 관리가 간단함.

  • 단점:

    • 내부 단편화 발생 → 페이지 크기보다 작은 데이터는 빈 공간이 생김.

가상메모리의 메모리 분할 방식 3: 페이지드 세그멘테이션(Paged Segmentation)

  • 설명: 세그멘테이션과 페이징을 결합한 방식.

  • 특징:

    • 세그먼트는 논리적인 단위지만, 각 세그먼트 내부는 페이지로 나누어서 관리.

  • 장점:

    • 외부 단편화와 내부 단편화 문제를 모두 어느 정도 해결.

    • 효율적인 메모리 할당 가능.



디맨드 페이징(Demand Paging)

  • 설명: 필요한 페이지가 메모리에 없을 때만 디스크에서 불러오는 방식. 프로그램 실행 시 전체를 메모리에 올리지 않아도 됨.

  • 근거 이론: 지역성(Locality)의 원리

    • 시간적 지역성: 최근에 참조한 데이터는 가까운 시점에 다시 참조될 가능성이 높다.

    • 공간적 지역성: 현재 참조한 주소 근처가 곧 참조될 가능성이 높다.

 

가상 메모리 주소가 참조되는 상황

  1. 스왑이 필요 없는 경우
    → 필요한 페이지가 이미 물리 메모리에 존재. 바로 접근 가능.

  2. 스왑 영역에 있는 데이터를 참조하는 경우
    → 페이지 폴트(Page Fault)가 발생하여 스왑 영역에서 페이지를 불러와야 함.

  3. 물리 메모리가 꽉 찼을 때 스왑 영역 참조
    → 기존에 있는 페이지를 스왑 아웃(교체)하고 새 페이지를 불러와야 함.


페이지 교체 정책(Page Replacement Algorithm)

  • 목적: 메모리가 꽉 찼을 때 어떤 페이지를 제거하고 새 페이지를 가져올지 결정.

  • 정책 종류:

    1. Random: 무작위 선택 → 구현은 쉽지만 비효율적.

    2. FIFO(First-In-First-Out): 가장 먼저 들어온 페이지를 제거 → 오래된 게 덜 쓸 것 같아서 사용하지만, 성능이 안 좋을 때도 있음(벨라디의 이상 현상 발생 가능).

    3. Optimal(OPT): 앞으로 가장 오래 쓰지 않을 페이지를 제거 → 이상적이지만 미래를 예측할 수 없어서 현실에서는 불가능.

    4. LRU(Least Recently Used): 최근에 사용하지 않은 페이지를 제거 → 지역성 원리를 반영하여 성능이 좋음.

      • 단점: 시간 정보 기록 필요 → 하드웨어 지원이 없으면 구현이 비효율적(비트 오버플로우 문제 등).

    5. Clock 알고리즘 (Second Chance)

      • LRU를 근사화한 방식 → 참조 비트(Reference Bit)를 사용하여 순환하면서 교체.

    6. Enhanced Clock: 참조 비트와 수정 비트를 함께 사용하여 더 효율적으로 교체.


스레싱(Thrashing)과 워킹셋(Working Set)

  • 스레싱: 과도한 페이지 폴트로 CPU가 페이지 교체에만 매달리는 현상 → CPU 사용률 저하.

    • 원인: 물리 메모리가 부족해서 자주 교체가 발생.

  • 워킹셋 모델:

    • 현재 프로세스가 일정 시간 동안 자주 사용하는 페이지 집합을 워킹셋이라 함.

    • 워킹셋을 메모리에 유지하면 페이지 폴트율을 낮출 수 있음.

    • 운영체제가 페이지 폴트율을 기준으로 페이지를 할당하거나 회수하는 방식으로 스레싱 완화 가능.


주변장치

  • I/O 디바이스와 저장장치 구분

    • 캐릭터 디바이스: 데이터가 순차적으로 처리(키보드, 마우스, 프린터 등).

    • 블록 디바이스: 대량의 데이터 블록 단위 처리(하드디스크, SSD 등).

  • 연결 방식

  • 시스템 버스와 입출력 제어기로 연결됨.

  • DMA(Direct Memory Access): CPU 개입 없이 메모리와 직접 데이터 전송 → 고속 입출력 지원.

  • Memory Mapped IO: 입출력 장치를 메모리처럼 접근.

     

     

     

    마우스와 키보드 동작

  • 광학 마우스

    • 초당 수천 번 촬영한 사진을 DSP가 분석해서 위치 변화를 계산.

    • 클릭/움직임 감지 후 인터럽트 신호를 CPU에 전달.

  • 키보드

  • 키가 눌릴 때 신호 발생 → 디바이스 컨트롤러가 감지 후 CPU에 인터럽트 발생.

     

     

    하드디스크 vs 플래시 메모리(SSD)

    • 하드디스크

      • 기계적 방식 → 회전하는 플래터와 읽기/쓰기 헤드 사용.

      • 자성 매체라서 외부 충격, 자기장에 민감함.

      • 트랙과 섹터로 구분, 밀리초 단위 접근 시간.

    • SSD

      • 전자적 방식 → 반도체 기반으로 전기 신호로 데이터 저장.

      • 속도가 빠르고 충격에 강함.

      • 수명 제한(지울 수 있는 횟수 제한).


    파일 시스템(파일 관리자)

    • 기능

      • 파일 생성, 수정, 삭제, 검색.

      • 접근 권한 관리, 암호화, 백업 및 복구.

    • 파일 관리

      • 파일 테이블과 파일 제어 블록(FCB) 사용 → 파일 속성 및 위치 정보 저장.

    • 전송 단위

      • 저장 장치에서는 블록 단위, 사용자 관점에서는 바이트 단위 접근.

    • 파일 구성

      • 헤더: 속성 정보(이름, 크기, 시간 등).

      • 데이터: 실제 내용.

    • 파일 구조

      1. 순차 파일: 순서대로 접근 → 수정과 삽입이 비효율적.

      2. 직접 파일: 해시 기반 → 빠른 접근.

      3. 인덱스 파일: 인덱스를 통해 빠르게 검색 가능 → 음악 목록 같은 구조.

         

         

        디렉토리와 파일 디스크

        • 디렉토리도 파일이지만 파일 정보를 저장하는 특수한 구조.

        • 블록 단위로 디스크 관리, 페이지와 유사하지만 파일 시스템에선 블록.

        • 할당 방식

          1. 연속 할당: 빠르지만 외부 단편화 문제.

          2. 불연속 할당:

            • 연결 할당: 링크드 리스트 방식 → 순차 접근 효율.

            • 인덱스 할당: 인덱스 블록으로 블록 정보를 관리 → 랜덤 액세스에 유리.

채널톡 아이콘