본문 바로가기

대학 수업

[운영체제] Caching, Direct Memory Access, Common OS Structure

반응형

Storage Hierarchy

Caching

  • 빠른 속도의 메모리로 최근 접근한 데이터를 저장
  • 효율적인 메모리 관리를 위해 캐시 관리 정책이 필요
  • 캐싱은 다른 수준의 저장 공간에서 가져온 데이터임
    • 하나 이상의 저장 공간에 존재

디스크에서 레지스터로 데이터 A 이동하기

  • 캐시가 갱신되지 않으면 멀티태스킹 환경에서 문제가 생길 수 있음
  • 멀티프로세서 환경은 모든 CPU가 각자의 캐시에 최신 값을 가질 수 있도록 하드웨어 간 캐시 공유 방법이 필요
  • 분산 환경은 더욱더 복잡하다..

Direct Memory Access Structure(DMA Structure)

  • I/O 장치가 빠르게 메모리로 데이터를 보내기 위한 방법
  • 디바이스 컨트롤러는 버퍼 스토리지에서 메인 메모리로 데이터 블록을 보내며 CPU는 개입하지 않음
  • 한 블럭 당 한 번의 인터럽트가 발생

Common OS Structure

Multiprogramming

효율성을 위한 멀티프로그래밍

  • 하나의 유저는 CPU와 I/O 모두 항상 바쁘게 만들 수 없음
  • 멀티프로그래밍은 job(code and data)을 관리하여 CPU가 언제나 작동하도록 관리
  • 전체 job 중 일부가 항상 메모리에 남아있음
  • job은 job scheduling에 의해 선택되고 실행됨
  • I/O 작업 등이 발생하여 CPU가 대기 상태로 바뀌면, OS가 다른 job을 실행

Timesharing (= Multitasking)

Timeshare (multitasking)은 CPU가 job을 굉장히 자주 바꿔 유저가 각각의 job과 상호작용하여 마치 동시에 실행되는 것처럼 느끼게 해줌

  • 각각의 유저는 적어도 하나의 프로그램이 메모리에 올라가 있음 -> 프로세스
  • 여러 개의 job이 동시에 실행 준비가 됨 -> CPU Scheduling
  • 프로세스가 메모리에 다 올라갈 수 없을 정도로 크면 스왑하면서 실행 -> 가상 메모리

OS Operations for Protection

적절히 설계된 OS는 부적절한 프로그램이 다른 프로그램을 잘못된 방법으로 실행하는 것을 예방하여야 합니다.

  • Dual-Mode Operation
  • I/O Protection
  • Memory Protection
  • Timer

Dual-Mode Operation

듀얼 모드 오퍼레이션은 OS와 다른 시스템 구성 요소를 보호합니다. User Mode와 Kernel Mode(supervisor mode / system mode / privileged mode)로 나뉩니다.

  • Mode bit를 통해 상태를 변경합니다.
    • user code / kernel code 실행 여부 판별
    • 몇몇 명령어는 커널 모드에서만 실행할 수 있게 설계되어 있습니다.
    • System call을 실행하여 kernel mode에서 user mode로 돌아옵니다.

I/O Protection

모든 I/O 명령어는 Privileged Instruction입니다. user program이 Instruction Vector Table을 덮어쓰는 것을 방지하는 등의 역할을 합니다.

Memory Protection

OS는 적어도 interrupt vector와 interrupt service routine에 대해서는 메모리 보호 기능을 반드시 제공해야 합니다.

메모리 보호를 위해서 Base register와 Limit register를 설정하고 이 범위를 넘어서는 주소에 접근하지 못하도록 합니다.

  • Base Register: 가장 작은 유효한 물리적 메모리 주소를 담고 있습니다.
  • Limit Register: 범위의 크기를 담고 있습니다.

Timer

타이머는 일정 틱마다 컴퓨터에 인터럽트를 전달합니다. 타이머는 매 클럭 틱마다 감소하며 0이 되는 순간 인터럽트가 발생합니다. 이는 time sharing을 구현하기 위해 사용되며, 타이머 값을 불러오는 건 Privileged Instruction입니다.

타이머는 또한 현재 시간을 측정하는 데에도 사용됩니다. 부팅된 시점의 시간을 저장하고 있으면 매 초당 클럭 사이클 수마다 타이머를 증가하면 시간을 측정할 수 있습니다.

Quiz

다음 중 어떤 명령어가 Privileged한가요?

  1. Set value of timer

  2. Read the clock

  3. Clear memory

  4. Issue a trap instruction

  5. Turn off interrupts

  6. Modify entries in device-status table

  7. Switch from User to Kernel Mode

  8. Access I/O device

정답

  1. K

  2. U

  3. K

  4. U

  5. K

  6. K

  7. U

  8. K

반응형