반응형
불연속할당 (noncountiguous allocation)
하나의 프로세스가 메모리의 여러 영역에 분산되어 올라갈 수 있음
Paging기법
- 주소변환을 위해 Page table이 필요, PMT ( Page Mapping Table)
- 논리적 주소를 여러공간(Page)로 쪼갠 것
- page table은 Main memory에 상주
- Page - table base reigster (PTBR)이 page table을 가리킴
- 모든 메모리 접근 연산에는 2번의 memory access 필요 -> 이런 메모리의 접근을 줄이고자 나온게 TLB
- 장점 : 논리 메모리는 물리 메모리에 저장될 때 연속되어 저장될 필요가 없고, 물리 메모리의 남는 프레임에 적절히 배치되기 때문에 외부 단편화가 생기지 않는다.
- 단점 : 내부 단편화 문제가 발생할 수 있다. 페이지 단위를 작게하면 해결할 수 있지만, 페이지 매핑 과정이 복잡해져 오히려 비효율적이다.
TLB ( Translation Look-askide Buffer)
- 주소변환을 위한 캐싱 메모리
- pagetable 정보의 일부만 함유
- TLB는 context switch 때 flush
- TLB를 통해 메모리 접근 시간을 줄일 수 있음
공간 낭비를 최소화 하기 위해
Two - Level Page Table 사용
Multilevel Paging and Performance
- Page table 마다, 각 entry마다 아래의 bit을 둔다
- Protection bit , Page에 대한 접근 권한 ( read / write / read - only)
- Valid - invalid bit
- invalid한 페이지를 할당하지 않으므로 메모리를 절약할 수 있다
- 작은 단위로 Page Table을 분할함으로써 메모리 관리가 용이하다.
Inverted Page Table
- Page frame 하나당 page table에 하나의 entry를 둔 것 (system - wide)
- 메모리에 하나의 고정 크기 페이지 테이블만 두는 방
- 각 page table entry는 각각의 물리적 메모리의 page frame이 담고있는 내용 표시 (process - id , process의 logical address)
- 단점 : 테이블 전체를 탐색해야 함
- 조치 : associative register 사용 ( expensive)
- page table의 공간을 줄이기 위해 사용
Segmentation 기법
- 프로그램을 의미 단위인 여러개의 segment로 구성
- 일반적으로는 code, data, stack 부분이 하나씩의 세그먼트로 정의됨
- 작게는 프로그램을 구성하는 함수 하나하나를 세그먼트로 정의
- 크게는 프로그램 전체를 하나의 세그먼트로 정의 가능
- 페이지는 돼지를 도축할때 같은 크기로 자른다면, Segmentation은 부위별로 자른다고 생각하면 편하다
- Logical address는 다음의 두 가지로 구성 <segment - number , offset > . 여기서 offset은 세그먼트 안에서의 위치를 나타낸다.
- 세그먼트 테이블은 각자 base ( 세그먼트의 물리적 주소에서 시작점), limit ( 세그먼트의 길이)가 존재한다.
- 만약 Logical address가 (2,100) 이라면....
- 세그먼트 테이블 2번으로 가서.... 4300+100 = 4400 < 4700 ( base + limit)
- 만약 Logical address가 (1,500)이라면...
- 세그먼트 테이블 1번으로 가서.... 6300 + 500 = 6800 > 6700 (base + limit)
- => 인터럽트로 인해 프로세스 강제 종료 (범위를 벗어남)
Segmentation 기법의 장점과 단점
- 장점 : 의미 단위로 쪼개기 때문에 공유 ( sharing )과 보안 ( protection ) 에 있어 paging보다 훨씬 효과적이다
- 단점 : segment의 길이가 동일하지 않으므로 가변분할 방식에서와 동일한 문제점들이 발생 ex) 외부단편화
Segment - table base register ( STBR )
- 물리적 메모리에서의 segment table의 위치
Segment - table length register ( STLR )
- 프로그램이 사용하는 Segment의 수
주소변환은 하드웨어적으로 이루어짐
반응형
'CS > 운영체제' 카테고리의 다른 글
운영체제 (15) - 다양한 Caching 환경 (0) | 2023.10.25 |
---|---|
운영체제(14) - 가상 메모리 (Virtual Memory) (0) | 2023.10.24 |
운영체제(12) - 프로세스의 메모리 할당 (연속 할당 방식) (1) | 2023.10.09 |
운영체제(11) - Memory, 주소, 논리적 주소 물리적 주소, 주소 바인딩 (1) | 2023.10.09 |
운영체제 (10) - Deadlock (데드락) (1) | 2023.10.08 |