[OS] Overlay Structure, Swapping

parkheeddong·2023년 5월 3일
0

Operating System

목록 보기
36/63
post-thumbnail

1. Overlay Structure

주기억장치 공간이 8MB 일 때, 총 10MB이 필요한 어셈블러 코드를 어떻게 실행시킬 수 있을까?!

-> 오버레이 구조 이용한다.

  • 어셈블러는 PASS-1을 실행한 후 종료하여 아웃풋을 내놓으면 PASS-2를 실행하고 끝나면 종료한다.
  • PASS-1과 PASS-2는 Symbol Table과 Common Routine을 모두 사용한다.

✅ 이 경우, 메모리에 Symbol Table과 Common Routine을 두고, 남은 4MB 공간을 잡고 PASS-1을 실행시키고, 그 다음 PASS-2를 실행시키자!
즉 PASS-1과 PASS-2는 공간을 공유하게 한다.(Overlay)
이렇게 공유를 하도록 만들어주는 코드 'Overlay driver'를 1MB 할당한다.

-> 이러한 오버레이를 가능하게 하기 위해 여러 작업이 필요하다!

2. Swapping


✔ P2가 메모리에 들어오려고 하면, 메모리에 이미 있던 프로세스 P1을 Swap-out하고 P2를 Swap-in 시킨다.
✔ Swap-out된 프로세스는 Swap Device(=Swap File System) 에 들어간다.

🔔 Time Quantum vs Swap Time

Time Quantum은 Swap Time보다는 커야 한다. 이보다도 작으면, cpu 활용도에 문제가 생긴다.

🔔 Pending I/O

어떤 프로세스가 Asleep하고 있는데 swap out 되면, 입출력 당시에 데이터들이 읽혀져서 들어오고 있을 수도 있는데 이 때 swap-out된다면 ?!
➡ 해결법 : I/O 데이터는 Application Address로 직접 들어오지 말고 커널 버퍼를 통해 들어오도록 해라.
커널 버퍼가 보관했다가 필요한 데이터만 유저 스페이스로 보내주도록하면, 문제가 발생하지 않는다.

❌ 그러나 만약 커널 버퍼가 없다면 입출력중인 프로세스를 swap-out하면 안 된다 ! ❌

🔔 Swap Device

일반적 Ordinary File System이 아니라, 밀려난 프로세스를 저장하기 위한 특별한 파일 시스템이다.
✔ 일반적 데이터는 데이터를 블록 단위로 여기저기 흩어지고, 해당 블록들의 위치를 커널이 따로 유지한다.(Discontinous Allocation)
✔ Swap Device는 블록 단위로 랜덤하게 흩어지는 것이 아니라, 빠른 속도로 swap할 수 있도록, 연속적인 영역이다.(Continous Allocation)

0개의 댓글