개발자는 기록이 답이다

운영체제 5주차 스터디 프로세스 동기화 본문

CS/운영체제

운영체제 5주차 스터디 프로세스 동기화

slow-walker 2024. 9. 12. 22:20

📌 절대 주소 지정과 상대주소 지정의 차이점은 뭘까요?

  • 절대 주소 지정: 메모리의 물리적인 주소를 직접적으로 참조하는 방식입니다. 실행할 프로그램이 특정 메모리 주소에 고정되어 있고, 프로그램 내에서 명령이나 데이터를 참조할 때 그 주소를 그대로 사용합니다.
  • 상대 주소 지정: 기준 주소(기본 주소)를 바탕으로 상대적인 위치를 지정하는 방식입니다. 예를 들어, 현재 위치에서 몇 바이트 떨어진 곳을 참조할 수 있으며, 이를 통해 메모리 관리가 유연해집니다.

절대 주소는 물리메모리 주소, 상대주소는 논리메모리 주소를 의미

  • 논리적 주소
    • 프로세스마다 독립적으로 가지는 공간 (=각 프로세스마다 0번지부터 시작하는 공간)
    • 프로그램이 컴파일되면 생성되는 주소
    • CPU가 보는 주소
  • 물리적 주소
    • 프로세스가 실행되면 실제 메모리에 올라가는 위치
    • 컴퓨터가 부팅되면 낮은 주소 영역(0번지 부터)에 커널이 상주하고, 나머지 주소영역을 프로세스가 나눠서 사용

📌 메모리 분할에 대해 설명해주세요.

메모리 분할은 컴퓨터의 주 메모리(RAM)를 여러 개의 작은 부분으로 나누어 관리하는 기법입니다.

  1. 고정 분할: 메모리가 고정된 크기의 여러 블록으로 나누어지며, 각 블록에 하나의 프로그램이 할당됩니다.
  2. 가변 분할: 프로그램이 필요로 하는 크기만큼 메모리를 할당하여 메모리의 효율성을 높입니다.

📌 메모리 배치 기법(메모리 관리 전략)에 대해 설명해주세요.

메모리 배치 기법은 프로세스를 빈 메모리 블록에 배치할 때 사용하는 방법 (메모리를 할당하는 방법)입니다. 

  • 최초 적합(First-Fit)
    • 가용공간 중 수용가능한 첫번째 기억공간을 할당하는 방법
  • 최적 적합(Best-Fit)
    • 모든 공간 중에서 수용가능한 가장 작은 곳을 선택
  • 최악 적합(Worst-Fit)
    • 모든 공간 중에서 수용가능한 가장 큰 곳을 선택
  • 성능
    • 공간효율성 : BF > FF ≫ WF
    • 시간효율성 : FF > BF ≒ WF

📌 외부 단편화와 내부 단편화의 차이가 뭔가요?

  • 외부 단편화: 메모리가 충분히 남아있지만, 연속된 빈 공간이 부족하여 새로운 프로세스를 수용할 수 없는 상황을 말합니다.

 

  • 내부 단편화: 할당된 메모리 블록 내에서 프로세스가 필요한 메모리보다 더 많은 메모리가 할당되어, 남는 공간이 낭비되는 경우입니다.

📌 메모리 배치 기법중 하나인 colaescing(통합)에 대해 설명해주세요.

Coalescing은 메모리 관리에서 인접한 빈 공간을 하나로 합치는 기법입니다. 외부 단편화를 줄이는 데 사용되며, 메모리 블록 사이에 남은 빈 공간을 합쳐서 더 큰 연속된 메모리 블록을 생성합니다.

📌 메모리 배치 기법중 하나인 compaction(압축)에 대해 설명해주세요.

Compaction(압축)은 메모리 공간을 재배치하여 연속된 빈 공간을 만들기 위해 사용됩니다. 외부 단편화를 줄이기 위해 메모리 내의 프로세스를 이동시켜 사용 가능한 큰 메모리 블록을 생성합니다.

📌 메모리 배치 기법중 하나인 버디 시스템에 대해 설명해주세요.

버디 시스템은 메모리를 2의 거듭제곱 크기로 나누어 관리하는 기법입니다. 요청된 크기에 가장 적합한 블록을 할당하고, 사용되지 않은 블록은 나눌 수 있는 단위로 분할(버디)하여 관리합니다. 이 방식은 메모리 할당과 해제를 빠르게 처리할 수 있습니다.

📌 메모리 배치 기법중 하나인 페이징에 대해 설명해주세요.

  • 페이징은 프로세스를 일정 크기로 자르고, 이를 메모리에 불연속적으로 할당하면서 외부단편화를 해결한다
    • 예를 들어, 모든 프로세스를 10MB짜리 일정한 크기로 자르고, 이 10MB로 잘게 잘린 조각들을 불연속적으로 메모리에 배치할 수 있다면 외부단편화는 발생하지 않는다
  • 외부 단편화가 발생했던 근본적인 문제?
    • 각기 다른 크기의 프로세스가 메모리에 연속적으로 할당되었기 때문
    • 만약에 메모리에 적재되는 모든 대상이 전부 다 일정한 크기를 갖고 있었다면 외부 단편화가 발생하지 않는다.
  • 페이징 정리
    • 프로세스의 논리 주소 공간을 페이지(page)라는 일정단위로 자르고,
    • 메모리의 물리 주소 공간을 프레임(frame)이라는 페이지와 동일한 일정한 단위로 자른뒤
    • 페이지를 프레임에 할당하는 가상 메모리 관리 기법
      • 이렇게 되면 물리 주소에 저장되는 대상들이 연속 메모리 할당 방식에 비하면 조금 더 균일한 크기를 갖고있어서 외부 단편화가 발생하지 않는다.

 

페이징(Paging)은 프로세스를 고정 크기인 페이지 단위로 나누어 메모리에 배치하는 기법입니다. 물리 메모리는 페이지 프레임이라 불리는 고정된 크기로 나누어지며, 각 페이지는 프레임에 적재됩니다. 페이징은 외부 단편화 문제를 해결하는 데 도움을 줍니다.

📌 메모리 배치 기법중 하나인 세그멘테이션에 대해 설명해주세요.

세그멘테이션(Segmentation)은 메모리를 논리적인 크기 단위로 나누는 기법입니다. 각 세그먼트는 고유한 크기와 목적을 가지며, 각 프로세스의 세그먼트는 독립적으로 관리됩니다. 세그멘테이션은 외부 단편화 문제가 발생할 수 있지만, 프로세스 구조에 맞는 효율적인 메모리 배치가 가능합니다.

📌 가상 메모리에 대해 설명해주세요.

 

실행하고자 하는 프로그램의 일부만 메모리(RAM)에 적재해서 실제 물리 메모리보다 큰 프로세스를 실행할 수 있게 하는 기법

  1. 실제 메모리 용량보다 큰 프로그램을 실행할 수 있게 합니다.
  2. 자주 사용되지 않는 페이지를 디스크로 스왑 아웃하고, 필요한 페이지만 메모리에 유지함으로써 메모리 사용을 최적화합니다.

가상 메모리는 물리 메모리보다 더 큰 메모리 공간을 사용할 수 있도록 하는 기법입니다. 필요한 데이터와 프로그램을 부분적으로만 물리 메모리에 적재하고, 나머지는 디스크에 저장한 후 필요할 때 메모리에 적재합니다. 이로 인해 실행 중인 프로세스가 물리 메모리 크기에 구애받지 않고 동작할 수 있습니다.

📌 가상 주소와 물리 주소(실주소)에 대해 설명해주세요.

 

  • 가상 주소: 프로그램이 참조하는 주소로, 메모리 관리 장치(MMU)에 의해 물리 주소로 변환됩니다. 가상 주소는 각 프로세스마다 독립적으로 할당되며, 프로세스 간의 충돌을 방지합니다.
  • 물리 주소: 실제 메모리(RAM)에서 데이터가 위치하는 주소입니다. 가상 주소가 물리 주소로 변환된 후 하드웨어가 해당 주소에 접근하여 데이터를 처리합니다.

 

📌 가상 주소를 물리 주소(실주소)로 어떻게 변환할까요?

가상 주소를 물리 주소로 변환하는 과정은 메모리 관리 장치(MMU)에 의해 수행됩니다. 페이지 테이블을 통해 가상 주소의 페이지 번호를 물리 메모리의 페이지 프레임 번호로 변환하며, 이를 통해 CPU가 실제 물리 메모리 위치에 접근할 수 있습니다.

📌 Swapping이란 무엇인가요?

Swapping메모리 부족 상황에서 실행 중인 프로세스의 데이터를 디스크의 스왑 공간으로 옮기고, 필요할 때 다시 메모리로 불러오는 기법입니다. 이를 통해 더 많은 프로세스를 메모리에 적재할 수 있습니다.

📌 Swapping의 과정을 설명해 주세요.

Swapping은 프로세스가 메모리에 적재되기 전에 디스크로 내보내고, 필요할 때 다시 메모리로 불러오는 과정입니다. 일반적으로 메모리 부족 상황에서 실행 중인 프로세스를 임시로 디스크에 저장한 후, 필요할 때 다시 불러오는 방식입니다.

📌 Swapping의 장단점을 설명해 주세요.

  • 장점: 메모리가 부족한 상황에서 더 많은 프로세스를 실행할 수 있습니다.
  • 단점: 디스크 입출력이 빈번하게 발생할 경우, 성능 저하가 발생할 수 있습니다.

📌 페이지 교체에 대해서 설명해주세요.

페이지 교체(Page Replacement)는 가상 메모리 시스템에서 페이지 부재가 발생했을 때, 물리 메모리에서 사용하지 않는 페이지를 디스크로 내보내고, 필요한 페이지를 메모리에 적재하는 과정입니다.

📌 페이지 부재를 최소화하려면 어떻게 해야 하나요?

페이지 부재를 최소화하려면 효율적인 페이지 교체 알고리즘을 사용해야 합니다. 대표적인 방법은 최적 페이지 교체 알고리즘(OPT)이나 LRU(Least Recently Used) 알고리즘을 사용하는 것입니다.

📌 페이지 교체 알고리즘 FIFO에 대해 설명 해주세요.

FIFO(First In, First Out) 알고리즘은 가장 먼저 메모리에 들어온 페이지를 가장 먼저 교체하는 방식입니다. 하지만 오래된 페이지가 여전히 자주 사용되는 경우에도 교체될 수 있는 단점이 있습니다.

📌 페이지 교체 알고리즘 LRU에 대해 설명 해주세요.

LRU(Least Recently Used) 알고리즘은 가장 오래 사용되지 않은 페이지를 교체하는 방식입니다. 페이지의 최근 사용 시점을 기억하여 페이지 교체를 결정하므로, 최근에 자주 사용된 페이지는 유지하고 오래된 페이지를 교체합니다.

📌 페이지 교체 알고리즘 LFU에 대해 설명 해주세요.

LFU(Least Frequently Used) 알고리즘은 사용 빈도가 가장 적은 페이지를 교체하는 방식입니다. 자주 사용되는 페이지는 유지하고, 사용 빈도가 낮은 페이지를 우선적으로 교체합니다.

📌 페이지 교체 알고리즘 클럭 알고리즘에 대해 설명해주세요.

클럭 알고리즘(Clock Algorithm)LRU의 간단한 버전으로, 원형 형태로 페이지들을 관리하며, 참조 비트를 사용하여 페이지 교체 여부를 결정합니다. 참조 비트가 0인 페이지를 우선적으로 교체합니다.

📌 쓰레싱에 대해 설명해주세요.

쓰레싱(Thrashing)은 페이지 부재가 너무 빈쓰레싱(Thrashing)은 시스템이 과도한 페이지 부재로 인해 대부분의 시간을 페이지 교체에 소비하는 현상을 말합니다. 이로 인해 프로세스의 실행이 거의 이루어지지 않고, CPU 자원이 비효율적으로 사용됩니다.

 

너무 많은 프로그램이 메모리에 올라와 있어, 각 프로세스가 작업 수행에 필요한 최소한의 메모리를 가지고 있지 못하기 때문에 계속해서 page fault가 발생하는 상황이다.

  • page를 메모리에 올리는 IO 작업을 수행하느라 CPU 이용률이 현저히 떨어지게 된다.
  • 프로세스에 필요한 최소한의 메모리는 보장해줘야 이 문제를 해결할 수 있다.

📌 워킹 알고리즘에 대해 설명해주세요.

쓰레싱을 해결하기 위한 방법

  • 현재 기점으로 집중되어서 사용되는 페이지 집합(워킹 셋)을 산정
  • 워킹 셋은 전체가 메모리에 올라가 있을 수 있도록 보장하는 방식
  • 전체가 메모리에 올라갈 수 없는 경우 모든 frame을 반납하여 swap out 시킴

워킹 셋(Working Set) 알고리즘은 프로세스가 특정 시간 동안 자주 참조하는 페이지 집합을 관리하여 페이지 교체를 최소화하는 방법입니다. 워킹 셋의 크기를 기반으로 메모리 할당을 조절하여 쓰레싱을 방지하는 데 사용됩니다.

📌 페이지 부재 빈도 알고리즘에 대해 설명해주세요.

페이지 부재 빈도(Page Fault Frequency, PFF) 알고리즘은 페이지 부재 발생 빈도를 기준으로 메모리 할당을 조정합니다. 페이지 부재가 자주 발생하면 더 많은 메모리를 할당하고, 적게 발생하면 메모리 할당을 줄이는 방식으로 시스템 성능을 최적화합니다.

 

 

 

 

참고 :

인프런 혼공컴운

https://sisparang.tistory.com/39

https://velog.io/@anyeji1220/%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-5%EC%A3%BC%EC%B0%A8-%EC%8A%A4%ED%84%B0%EB%94%94