[운영체제] 5주차 스터디

톰톰·2023년 10월 13일
0

질문

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

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

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

    하나의 컴퓨터에서 여러 프로그램이 동시에 실행되기 위해서는 공유 자원인 ‘메모리’를 여러 프로세스가 나누어 사용해야 한다. 이를 위해 각각의 프로세스에게 해당 프로세스의 작업 공간인 메모리를 할당해주는 방법을 말한다.

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

    과거부터 현재까지 사용된 메모리 할당 방식은 ‘연속 할당 방식’, ‘불연속 할당 방식’이 있다.

    • 연속 할당 (과거)
      • 각 프로세스가 메모리의 연속적인 공간에 위치하도록 할당하는 방식
      • 예시
        • 고정 분할 방식 : 물리 메모리를 몇 개의 분할로 나누어 놓고, 분할 당 하나의 프로그램을 적재하는 방식
          • 프로그램이 사용하는 메모리 크기 보다 분할이 커야지만 적재 가능
          • 장점
            • 구현이 단순
          • 단점
            • 동시에 메모리에 올라갈 수 있는 프로그램 숫자가 고정 (분할의 개수)
            • 프로세스 메모리 > 분할 ⇒ 외부 단편화 (아무 프로그램도 올라갈 수 없는 작은 분할)
            • 프로세스 메모리 < 분할 ⇒ 내부 단편화 (특정 프로그램에 배정되었지만 사용 안하는 공간)
        • 가변 분할 방식 : 프로그램 실행 순서대로 메모리에 연속적으로 올리는 방식
          • 가장 적절한 홀을 찾기 위해 : first-fit, best-fit, worst-fit 방식을 사용한다
          • 장점
            • 고정 분할 방식처럼 분할 갯수를 미리 정해놓은 것이 아니라, 분할의 크기와 갯수가 동적으로 변할 수 있다.
          • 단점
            • 프로세스 메모리 > 분할 → 외부 단편화
              • 프로그램이 종료되어서 메모리에서 내려갔을 때, 다른 프로그램들이 올라갈만큼의 공간이 안되면 결국 사용하지 못하게 됨
    • 불연속 할당 (현재)
      • 하나의 프로세스의 가상 메모리가 여러 부분으로 쪼개져서 메모리에 분산되어 위치하도록 할당하는 방식
      • 범용 컴퓨터에서는 페이징 방식을 사용
      • 예시
        • 페이징 : 가상 메모리와 물리적 메모리를 모두 동일한 크기로 분할하여서, 한 프로세스의 page들이 물리메모리에 비연속적으로 올라가게 한 방식
        • 세그먼테이션 : 프로세스의 가상메모리를 의미 단위로 분할해서, 세그먼트들이 물리메모리에 비연속적으로 올라가게 한 방식
  1. 외부 단편화(외부 조각)와 내부 단편화(내부 조각)의 차이가 뭔가요?
    • 외부 단편화 : 물리 메모리에 적재시키려는 프로세스의 크기 > 분할 크기
      • 아무 프로세스가 배정되지 않았지만, 크기가 작아서 프로세스가 올라갈 수 없는 작은 분할
      • 예시
        • 연속 할당 - 고정 분할, 가변 분할
        • 불연속 할당 - 세그먼테이션
          • 세그먼트의 길이가 제각각이므로, 메모리에서 프로세스가 내려갔을 때 다른 프로세스가 올라갈 수 없을 수 있다.
    • 내부 단편화 : 물리 메모리에 적재시키려는 프로세스의 크기 < 분할 크기
      • 프로세스에 배정되었지만 사용되지 않는 공간
      • 예시
        • 불연속 할당 - 페이징
          • 프로세스의 논리적 메모리 공간이 매번 Page의 배수단위로 구성될 수 없기 때문에, 마지막 페이지의 일부는 사용되지 않는 공간이 있을 수 있다.
  1. 메모리 배치 기법중 하나인 colaescing(통합)에 대해 설명해주세요.

    외부 단편화 문제를 해결하는 방법

    • 사용되지 않는 인접한 구멍들을 통합하는 방식
    • 장점
      • 외부 단편화 문제 해결
      • 오버 헤드가 비교적 적다
  1. 메모리 배치 기법중 하나인 compaction(압축)에 대해 설명해주세요.

    외부 단편화 문제를 해결하는 방법

    • 사용되지 않는 모든 구멍들을 통합하고, 사용 중인 물리 메모리 영역을 한쪽으로 몰아 넣는 방식
    • 장점
      • 외부 단편화 문제 해결
    • 단점
      • 매우 비용이 많이 든다.
  1. 메모리 배치 기법중 하나인 버디 시스템에 대해 설명해주세요.

    고정 분할 방식과, 가변 분할 방식의 단편화 문제를 보완하기 위한 방법

    • 사용할 수 있는 가장 큰 가용 메모리 영역부터 시작해서 영역을 절반씩 쪼개나간다.
    • 조건에 맞는 (프로세스 메모리 크기보다 큰) 영역을 찾으면 프로세스를 할당
    • 나눈 영역들 중 인접한 영역을 합칠 수 있으면 합치는..
  1. 메모리 배치 기법중 하나인 페이징에 대해 설명해주세요.

    가상 메모리와 물리적 메모리를 모두 동일한 크기로 분할하여서, 한 프로세스의 page들이 물리메모리에 비연속적으로 올라가게 한 방식

    • 특징
      • 각 프로세스마다 page들이 물리 메모리의 어느 위치에 올라가 있는지를 관리하기 위한 page table을 둔다.
        • page 번호, frame 번호, bit 정보
        • page table도 메모리에 올라가 있기 때문에 메모리를 2번 접근해야 하는 문제가 있다.
        • 이를 보완하기 위해서 TLB라는 캐시에 page table을 올려 놓고 사용한다.
        • 각 엔트리마다 여러 비트로 부가적인 정보를 표시 (valid / invalid, protection)
      • 외부 단편화가 발생하지 않는다.
        • 논리 공간, 물리 공간을 모두 동일한 크기도 쪼개서 깨워넣기 때문에, 빈 프레임이 있다면 어떤 페이지든 올라갈 수 있다.
      • 내부 단편화는 발생할 수 있다.
        • 마지막 페이지에 자투리 공간이 남을 수 있음
    • 장점
      • 외부 단편화 발생 안함
    • 단점
      • page table을 먼저 참조해야 하기 때문에 캐시에 없으면 메모리를 2번 참조해야 하는 문제
  1. 메모리 배치 기법중 하나인 세그멘테이션에 대해 설명해주세요.

    가상 메모리 공간을 의미 단위의 세그먼트로 잘라서, 각 세그먼트를 물리 메모리에 비연속적으로 올리는 방식

    • 특징
      • 일반적으로 code, data, stack 부분을 하나씩 세그먼트로 정의하여 메모리에 올린다.
        • 크게는 프로그램 전체 단위, 작게는 함수 단위로 정의할 수도 있음
      • 각 프로세스마다 segment 들이 물리 메모리에 어느 위치에 올라가 있는지 관리를 위한 segment table을 둔다.
        • segment 주소, 물리적 메모리에서 segment가 올라간 주소, segment 길이
        • 주소변환 시 해당 프로세스의 segment의 길이를 벗어난 영역이면 trap을 발생시켜 메모리 접근을 막는다.
    • 장점
      • 의미 단위로 쪼개 메모리에 올리기 때문에, 보안이나 공유 작업에 용이하다.
        • 세그먼트 별로 protection bit를 설정해서 보호할 수 있음
          • 예를 들면 code 섹션은 read only로, stack 섹션은 read-write 모두 가능하게..
        • 페이지 테이블은 의미 단위가 아니라서 추가적인 제약이 필요하다.
    • 단점
      • 세그먼트 길이가 제각각이므로 프로그램이 메모리에서 내려가면 외부 단편화가 생길 수 있는 문제가 있다.
  1. 가상 메모리에 대해 설명해주세요.

    프로그램이 컴파일되면 생성되는 각 프로세스의 독립적 메모리 주소 공간

    • 각 프로세스마다 0번지부터 시작
    • CPU가 보는 주소
  1. 가상 주소와 물리 주소(실주소)에 대해 설명해주세요.
    • 가상 주소
      • 프로세스마다 독립적으로 가지는 공간 (=각 프로세스마다 0번지부터 시작하는 공간)
      • 프로그램이 컴파일되면 생성되는 주소
      • CPU가 보는 주소
    • 물리 주소
      • 프로세스가 실행되면 실제 메모리에 올라가는 위치
      • 컴퓨터가 부팅되면 낮은 주소 영역(0번지 부터)에 커널이 상주하고, 나머지 주소영역을 프로세스가 나눠서 사용
  1. 가상 주소를 물리 주소(실주소)로 어떻게 변환할까요?

    범용 컴퓨터의 운영체제는 페이징 기법을 사용해서 메모리 주소를 관리

    • demand paging → 프로그램이 실행될 때 모든 가상 주소를 물리 주소에 올려놓는 방식이 아니라, 실제 필요한 page만 메모리에 올리면서 실행하는 방식을 취한다.
    • 이 때 기계어를 실행하는 주체인 CPU는 가상 주소만을 알고 있는데, MMU라는 주소변환 담당 하드웨어에 물리 주소로 변환을 요청하여 반환된 값을 통해 물리 메모리에 접근한다.
  1. Swapping이란 무엇인가요?

    메모리에 올라와 있는 프로세스를 일시적으로 디스크 swap area로 쫓아내는 것

    • 용어의 범위
      • 전통적인 의미, 프로그램을 메모리에서 통째로 쫓아내는 것
      • 현대, 페이지 단위로 쫓아내는 것에 사용하기도 함
  1. Swapping의 과정을 설명해 주세요.

    중기 스케줄러(Swapper)가 멀티프로그래밍 디그리(메모리에 적재된 프로세스 수)를 조절하기 위해 스왑핑을 하는 과정

    1. 스와퍼가 스케줄링 우선순위가 낮은 프로세스를 선택
    2. 할당된 메모리 주소 공간을 통째로 빼앗아 디스크 스왑 영역으로 swap out
    3. 여유가 생긴 메모리 공간에 필요한 프로세스를 swap in
  1. Swapping의 장단점을 설명해 주세요.
    • 장점
      • 메모리에 동시에 올라와 있는 프로그램의 수를 조절함으로써, 각각의 프로세스들에 할당된 메모리 양이 너무 적어지는 문제를 방지한다. (스레싱)
      • 각 프로세스들에 할당된 메모리가 너무 적어지면 page fault가 너무 빈번히 발생하여, IO작업을 하느라 CPU 이용률이 극히 떨어지게 됨
    • 단점
      • 디스크로 데이터를 이전하는 것이 큰 오버헤드가 될 수 있다.
        • 이전 시간이 제일 많이 듦
  1. 페이지 교체(Page Replacement)에 대해서 설명해주세요.

    메모리 관리를 페이징 기법으로 하는 시스템에서 발생

    • page를 메모리에 올리려는데 빈 프레임이 없는 경우
    • 올라가 있는 page를 쫓아내고 올라갈 수 있도록 교체하는 것
  1. 페이지 부재(Page Fault)를 최소화하려면 어떻게 해야 하나요?

    미래에 많이 참조될 것 같은 page를 남겨두고, 많이 사용되지 않을 것으로 예상되는 page를 쫓아내야 한다.

    • 이것을 위한 알고리즘들
      • FIFO, LRU, LFU
      • Clock
  1. 페이지 교체 알고리즘 FIFO에 대해 설명 해주세요.

    메모리에 가장 먼저 올라온 페이지를 쫓아내는 알고리즘

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

    가장 오래 전에 참조된 페이지를 쫓아내는 알고리즘

    • 먼저 올라왔어도 최근에 참조가 되었으면 쫓아내지 않는다.
  1. 페이지 교체 알고리즘 LFU에 대해 설명 해주세요.

    참조 횟수가 가장 적은 페이지를 쫓아내는 알고리즘

  1. 페이지 교체 알고리즘 클럭 알고리즘에 대해 설명해주세요.
    • 앞서 살펴본 LRU, LFU는 실제로 사용할 수 없다.
      • 페이지 교체를 담당하는 주체는 ‘운영체제’는 어떤 페이지들이 참조되었는지를 알 수 없다.
      • 가상 주소를 물리 주소로 변환하는 것은 MMU라는 하드웨어가 담당하고, page fault의 경우에 디스크에서 메모리로 올려 놓는 IO작업만 운영체제가 담당하기 때문
      • 따라서 이를 근사시킨 알고리즘인 Clock 알고리즘을 사용
    • 실제 페이지 참조 정보는 알 수 없지만, reference bit로 최근에 참조되었는지 정보를 토대로 교체 페이지를 선정하는 방식
      • 페이지가 참조되면 (주소변환이 되면) MMU가 reference bit를 1로 만든다.
      • 운영체제는 순차적으로 각 페이지의 reference bit를 검사
        • 1이면 0으로 바꾸고 다음 칸으로 이동
        • 0이면 쫓아내고 그 자리에 새로운 페이지를 집어넣음
      • 다시 한바퀴 돌고 돌아왔을 때
        • 1이면 그 동안 적어도 1번은 사용되었다는 것
        • 0이면 그 동안 한번도 사용되지 않았다는 것을 의미
  1. 쓰레싱에 대해 설명해주세요.

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

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

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

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

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

    • page-fault 비율의 상한선과 하한선을 두고
    • 각 프로세스의 페이지 폴트 비율이 이를 넘어가면 페이지를 주거나 빼앗아서 적정선에 올 수 있도록 조정하는 방식
참고

회고

  1. 좋았던 점
    운영체제를 독학으로 공부할 때는 의지가 부족해서 항상 후반에 메모리 관리 부분은 포기했었는데,
    이 스터디 덕분에 여차저차 공부를 마칠 수 있었다..
    5주 동안 퇴근 이후 시간을 투자한 보람이 있다 ㅎㅎㅎ

  2. 아쉬운 점
    갈수록 공부하는데 집중력이 떨어져서 힘들었다.. ㅠ
    공부 권태기인가..
    스터디가 끝나면 1-2주는 리프레쉬하는 시간을 가져야겠다!

0개의 댓글