CS/컴퓨터운영체제

OS - 0523: Segmentation

goliot 2023. 5. 23. 10:58
반응형

#Segmentatoin

- 기본 아이디어: 프로그래머의 프로그램 관점을 사용하여 프로세스를 메모리에서 별도의 세그먼트로 분할

    > 각 세그먼트는 각각 구분된 목적을 가짐: ex) 코드, 정적 데이터, 힙, 스택

        > 각 함수마다 별도의 코드와 stack segment 가질 수도 있음

        > 세그먼트는 서로 다른 크기일수도

        > 스택과 힙은 충돌하지 않음

    > 전체 프로세스는 메모리에 로드되지만, 프로세스를 구성하는 세그먼트는 연속적으로 메모리에 로드될 필요가 없음

        > 세그먼트 내부의 공간은 연속적임

    > 각 세그먼트에는 보호 비트가 있음

        > Read-Only 세그먼트(코드)

        > Read-Write 세그먼트(데이터, 힙, 스택)

        > 프로세스가 코드와 데이터를 공유하도록 허용

 

#Segment Addresses

- 가상(논리) 주소의 구성:

1. 세그먼트 번호

2. 해당 세그먼트의 시작으로부터의 오프셋

    > 이 둘은 어셈블러에 의해 생성

- 명령어에 저장되는 것:

1. 간단한 방법:

    > 주소의 상위비트는 세그먼트를 지정

    > 주소의 하위비트는 오프셋을 지정

2. 암시적 세그먼트 지정:

    > 실행되는 명령에 의해 세그먼트가 암묵적으로 선택됨(코드 vs 데이터)

    > ex) PDP-11, Intel 386/486

3. 명시적 세그먼트 지정:

    > 명령어 접두사를 통해 특정 세그먼트 사용을 요청 가능

    > ex) Intel 386/486

 

#Implementing Segments

- 세그먼트 테이블은 특정 프로세스의 각 세그먼트를 추적하는 데 사용됨

    > 각 항목은 베이스, 한계를 포함

    > 보호 정보(공유 허용 여부, 읽기 vs 읽/쓰)도 포함

- 추가 하드웨어 지원이 필요:

    > 다중 베이스와 한계 레지스터 또는 세그먼트 테이블 베이스 포인터(메모리의 테이블을 가리킴)

 

#Segmentation Example

 

 

#Managing Segments

- 프로세스가 생성될 때:

    > 프로세스의 모든 세그먼트에 대해 가상 메모리에 공간을 할당

    > (대부분 비어있는) 세그먼트 테이블을 생성하고, 이를 프로세스의 PCB에 저장

 

- Context Switing 발생시:

    > 이전 프로세스의 PCB에 OS의 세그먼트 테이블 저장

    > 새로운 프로세스의 PCB에서 OS의 세그먼트 테이블 로드하고, 처음으로 프로세스가 실행되는 경우 물리 메모리에 공간을 할당

 

- 물리 메모리에 공간이 없는 경우:

    > 메모리를 압축하여(세그먼트 이동, 기준 업데이트) 연속된 공간을 만듦

    > 하나 이상의 세그먼트를 디스크로 스왑

        > 해당 프로세스를 다시 실행하려면, 모든 세그먼트를 메모리로 스왑

 

- 세그먼트를 확장하려면:

    > 세그먼트 위의 공간이 비어있다면 os는 세그먼트의 한계를 업데이트, 그 공간 중 일부를 사용

    > 이 세그먼트를 더 큰 빈 공간으로 이동

    > 이 세그먼트 위의 세그먼트를 디스크로 스왑

    > 이 세그먼트를 디스크로 스왑하고, 더 큰 빈 공간으로 다시 가져옴

 

- 세그먼트의 장점:

    > 세그먼트는 연속적이지 않아도 

    > 세그먼트는 독립적으로 스왑할 수 있음

    > 세그먼트는 공유를 허용

 

- 세그먼트의 단점:

    > 복잡한 메모리 할당(최적 적합 등)

    > 외부 단편화(Fragmentation)

반응형

'CS > 컴퓨터운영체제' 카테고리의 다른 글

OS-0606: File System(L29, 30, 31)  (0) 2023.06.06
OS-0523: Paging  (0) 2023.05.23
OS 0523 - Dynamic Relocation  (0) 2023.05.23
OS(0516) - Memory Management  (1) 2023.05.16
OS(0516) - Deadlock 처리 방법  (0) 2023.05.16