공부기록

메모리 분할 - 세그먼테이션 본문

CS/OS

메모리 분할 - 세그먼테이션

코타쿠 2021. 5. 17. 15:01
  • 세그먼 테이션
    • 사용자 프로그램은 세그먼 테이션 기법을 이용하여 나누어 질 수 있고 프로그램과 그에 관련된 데이터들이 여러 세그먼트로 나누어짐
    • 세그먼트의 크기는 각각 다를 수 있다.
    • 세그먼테이션의 논리 주소 = 세그먼테이션 번호 + 오프셋
    • 동적 할당과의 차이는 세그먼테이션은 하나 이상의 파티션을 차지할 수 있고 연속적일 필요가 없다는 점
    • 외부 단편화를 초래할 수 있다. 하지만 프로세스보다 작은 크기로 쪼개지기에 상대적으로 단편화가 적은 편
    • 프로그래머가 세그먼트를 지정할 수 있다.
  • 프로그래머, 컴파일러는 프로그램과 데이터를 다른 세그먼트로 할당
    • 구조적인 프로그래밍을 위해 프로그램, 데이터는 더 세분화 된 여러 세그먼트로 나뉠 수 있다.
  • 세그먼트 기법의 단점
    • 프로그래머가 세그먼트의 최대 크기를 알고 있어야함
    • 논리주소와 물리주소간의 간단한 관계가 없다.
      • 세그먼트 테이블은 시작 주소와 세그먼트 길이를 알아야한다. (base addr, size)
        • 길이를 알아야 유효한 메모리 접근을 할 수 있다.
  • 주소 변환 과정
    • 논리 주소 왼쪽 n 비트를 세그먼트 번호로 추출
    • n을 이 프로세스의 세그먼트 테이블 인덱스로 사용하여 세그먼트의 시작 물리주소를 찾음
    • 오른쪽 m비트로 오프셋을 세그먼트 길이와 비교
      • 만약 오프셋 보다 세그먼트 길이가 길다면 유효하지 못함
    • 접근하고자 하는 물리주소는 세그먼트 시작 물리 주소와 오프셋의 합이다.

'CS > OS' 카테고리의 다른 글

가상 메모리 페이징  (0) 2021.05.17
가상 메모리의 개요  (0) 2021.05.17
메모리 분할 - 페이지  (0) 2021.05.17
메모리 분할 - 동적 분할  (0) 2021.05.17
메모리 분할 - 고정 분할  (0) 2021.05.17