(모각소 2024)운영체제-address spaces

LEEHYUNJE·2024년 7월 27일

아주대학교_모각소!

목록 보기
13/23

Fixed pratitions

  • physically contiguous:

  • logically contiguous: 우리가 64bit 단위로 프로세스를 만든다 -> 피지ㅣ컬리 컨디키어스가 보장된다고 하는 것은 아님

  • 지금 설명하는 메모리 관리는 모던하게 사용하는 것은 아님

  • 피지컬 어드레스에서 process 3번이 메모리를 사용하지 않는 움직임을하면 process 7을 피지컬에 할당하여 사용한다.


1. logical address + physical address base는 실제 코드의 physical address이다 -> 이때 base 주소를 저장하고있는 하드웨어장치가 있다 이를 base register라고 한다. -> pcb에 저장됨
2. 그럼 다른 physical의 주소를 읽으려면 어떻게 해야하나?

  • 예를들어 프로세스 2에서 0x5123의 주소를 읽을 수 있나? 없다.

Fixed Partitions
1. 장점

  • 구현이 쉽다.
  • context switch가 쉽다.
  1. 단점
  • partition size: 모든 프로세스의 최대 크기는 partition size이여야한다.
  • 동시에 사용할 수 있는 프로세스의 개수를 multiprogramming degree라고한다.
  • size를 작게 쓰면 multiprogramming degree를 크게 쓰고, size를 크게 쓰 면 그 역으로 진행됨
  • internal Fragmentation

    ex) 가게의 테이블이 4명씩밖에 앉을 수 없다. -> 손님이 4명씩 온다면 최대의 효율이겠지만 6명은 한번에 받을 수 없고, 손님이 1명씩 오면 빈자리가 많아지게 된다.

Variable Partitions

  • process가 사용하는 메모리 크기를 예측할 수 있다면 그 만큼을 할당해 준다.
  • internal fragmentation이 발생하지 않는다.
  • chuck: 메모리 블럭을 의미한다.
  • Base register와 Limit resgister를 사용한다. -> 프로세스의 size가 다 다르기 때문이다.
  • base resgister + logical address (< limit address) -> 추가된 계산
  • 위 같은 연산으로 실제 Physical address를 참조한다.
  • 위 과정은 MMU가 처리한다.
  • Q: limit에서 막히면 어떻게 되나? exception을 울리게 됨 -> exception을 따라 exception handler가 발생하게 됨 -> signal을 통해 process를 통제함.

External fragmentation

  • 프로세스가 종료되고 남은 공간을 사용할 수 없다.
  • 조건 1.allocation과 delocaiton이 반복되는 상황
  • 조건 2.variable size이여야 한다.
  • 조건 3.다음 allocation이 physically contiguous인 상황

allocation strategies

  • 공간을 더 효율적으로 사용해야한다. -> 이것을 정하는 정책을 Allocation strategies 라고한다.
  1. First fit: 그냥 첫번째 공간을 준다.
  2. Best fit: 가장 딱 맞는 크기의 공간을 준다. -> fragment가 제일먼저 발생한다. -> 작은 공간이 계속해서 발생한다.
  3. Worst fit: 가장 큰 홀에서부터 준다.
  • 이게 중요한가? -> 그냥 first fit으로 진행하게 된다면 메모리를 50%를 사용하지 못한다.

Segmentation

  • 프로세스 자체를 나누자. -> physically decontiguous하게 만들자.
    업로드중..

  • section 별로 메모리를 나눠서 둘 수 있도록 한다.
    이때 꼭 나눌 필요는 없다.

  • Segment table: 하드웨어로 저장이 될 수 도 있지만, 메모리에 테이블 형태로 저장되는 방식을 많이 사용한다.

  • seg#: 번호를 통해서 각각의 section을 구별한다.

  • 각 segment 별로 memory를 구성하게 되면 resizing이 가능해진다.

  • Dir: 메모리의 크기를 조정하는 방향을 의미한다.

    • section마다 크기가 늘어가는 방향을 조절하여 빈공간을 준비할 수 있다. 빈공간이 없어도 된다.
    • Q: 빈공간이 없을 때 스텍 공간이 필요하면 어떡하나요? A: 프로세스 섹션의 위치를 더 큰 공간으로 relocation을 해주면된다
    • Q: 스텍 segment 공간을 두개 만들어줄 수 있나?
  • Segmentation violation: Segmentation fault가 나는 이유. Segment의 영역을 벗어나서 사용했다.

  • Prot: 권한(permission)을 의미한다

    • 해당 섹션에 write를 해도 되는지, 실행시켜도 되는지를 RWX로 표현하는 방법

모각소 후기

백엔드를 달리기 전 저번 학기 잘 이해하지 못했던 운영체제 부분을 복습했다. 백엔드를 공부하는 중이지만, 그렇다고 프레임워커가 되면 안되니 이런 기본적인 것들에 충실해 지는 것이 중요하다고 생각한다. 언어는 그저 도구일 뿐, 근본적인 것을 잊지 말도록 하자.

profile
현재진행중

0개의 댓글