운영체제 - 메모리관리(5)

2020-10-24

OS를 공부하면서 정리를 한 내용들 입니다.

Paging기법에서 Shared Page와 Segmentation에 대해서 정리합니다.


Shared Page

Shared code

이것은 다른말로 Re-entrant Code(=Pure Code)라고도 합니다.

우리 말로는 재진입 가능 코드라고도 합니다.

Shared Code 부분은 2가지 제약조건을 만족해야합니다.

  1. Read-Only로 하여 프로세스 간에 하나의 code만 메모리에 올립니다.

  2. Shared code는 모든 프로세스의 logical address space에서 동일한 위치에 있어야 합니다.

Private code and data

각 프로세스들이 독자적으로 메모리에 올리는 코드와 데이터 입니다.

Private data는 logical address space의 아무 곳에 와도 무방합니다.

Segmentation

페이징 기법은 프로세스의 주소공간을 동일크기의 페이지로 잘라서

물리적인 메모리에 올렸었는데

Segmentation 기법은 동일 크기가 아닌 의미단위

잘라서 물리적인 메모리에 올립니다.

프로그램을 구성하는 의미 단위를 segment로 봅니다.

* 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의됩니다.
* 크게는 프로그램 전체를 하나의 세그먼트로 정의 가능합니다.
* 일반적으로 code, data, stack 부분이 하나씩의 세그먼트로 정의됩니다.

Segmentation Architecture

Logical address

Logical address 는 다음의 두가지로 구성됩니다.

segmentation-number(세그먼트 번호), offset(세그먼트 내에서 얼만큼 떨어져있는가)

Segment table

각각의 테이블들은 base(세그먼트의 물리적주소 시작)와 limit(세그먼트의 길이 또는 갯수)

  • Segment-table base register(STBR)

물리적 메모리에서의 segment table의 위치(물리적주소 시작)

  • Segment-table length register(STLR)

프로그램이 사용하는 segment의 수(세그먼트의 길이 또는 갯수)

정확히는 이 프로세스가 몇개의 세그먼트로 구성되는가 입니다.

여기서 한 가지 체크할 것은 프로세스에서 사용하는 세그먼트의 수가

레지스터에 저장되어 있기 때문에,

논리주소에서 넘어가는 segment 번호가 STLR에 저장된 값을 넘긴다면

이상이 발생하니 이 또한 확인해야 합니다.

Protection

각 세그먼트 별로 protection bit가 있습니다.

각각의 entry에서

  • Valid bit가 0이다? illegal segment

valid 는 해당 주소의 frame에 그 프로세스를 구성하는 유효한 내용이 있음을 뜻(접근허용) Invalid는 해당 주소의 frame에 유효한 애용이 없다는 뜻(접근불허)

  • Read/Write/Execution 권한 bit를 가집니다.

Sharing

  • Shared segment
  • same segment number

segment는 의미 단위이기 때문에 공유(sharing)과 보안(protection)에 있어 페이징보다 훨씬 효과적입니다.

Allocation

  • First fit/ Best fit
  • external fragmentation 발생

segment의 길이가 동일하지 않으므로 가변분할 방식에서와 동일한 문제점들이 발생합니다.

-참고 KOCW 이화여자 대학교 반효경 교수님 : 운영체제 강의