공부한 기록/운영체제

운영체제(9) - 입출력 시스템과 디스크 관리

YongE 2022. 12. 7. 18:43

입출력 모듈

입출력 모듈은 프로세스, 레지스터 등의 내부 저장장치와 물리적 입출력 장치 사이에서 이진 정보를 전송하는 방법을 제공한다. 입출력 모듈이 프로세서를 대신해서 입출력 업무를 수행하면 입출력 채널 또는 입출력 프로세서가 된다. 단순히 입출력 방법만 담당하면 입출력 제어기 또는 장치 제어기가 된다. 

기능

  • 입출력 장치 제어
  • 프로세서와의 통신 : 명령해독, 데이터 교환, 상태 보고, 주소 인식 등을 수행.
  • 데이터 버퍼링 : 버퍼링을 통해 속도 조절.
  • 오류검출

입출력 방법

프로세서의 역할에 따라서 입출력 방법이 달라진다. 

  • 프로세서 제어 입출력 (프로세스가 전부 관여)
  • DMA 입출력
  • 입출력 채널

프로그램 제어 입출력

프로세서의 내부에 각종 레지스터가 있다는 것을 알고 있다. 프로세스 내부의 입출력 주소 및 데이터 레지스터에 입출력 모듈을 연결한 형태다. 

프로세서 제어 입출력 구성

프로세서 제어 입출력 방법을 폴링 polling 방법이라고도 한다. 프로세서는 자신보다 느린 입출력장치의 상태를 주기적으로 점검하려고 상태비트를 확인한다. 데이터를 전송할 때마다 폴링 순환이 수행되는 것이다.

다만, 폴링의 횟수는 성능에 영향을 미친다. 빈번한 순환은 시간 낭비로 인해 오버헤드가 발생하고, 적은 순환은 입출력장치의 유휴시간을 만든다.

그러나, 작업완료된 입출력 장치 결과를 메모리에 저장하고 인터럽트를 발생시켜 프로세서에 알려주는 인터럽트 기반 입출력 방법으로 '폴링'을 해결할 수 있다. 이는 프로세서가 직접 입출력장치를 확인하는 대신에 입출력 장치가 직접 신호를 주는 방법이다.

 

DMA direct memory access 입출력 방법

프로세서의 도움 없이 메모리를 직접 제어해서 데이터를 전송하는 형태. 직접 메모리 액세스라고도 한다.

디스크의 데이터 전송과 미디어 같은 대용량 데이터 전송에 적합하다.

DMA제어기가 버스를 사용하고 있을 때 프로세스는 버스를 사용할 수 없다. 이런 현상을 사이클 스틸링이라고 한다.

 

입출력 채널을 이용한 입출력

메인 메모리와 입출력장치 사이의 입출력 데이터를 전송하는 제어 장치. 프로세서 개입이 최소화된 상태에서 입출력 장치를 제어하므로 입출력 프로세서라고도 한다.

 

채널의 종류

실렉터 채널 : 어떤 장치의 입출력을 종료할 때까지 다른 장치를 실행하지 않도록 하는 것. 하나씩만 처리.

멀티플렉서 채널 : 데이터를 바이트 단위로 시분할하여 여러 장치의 출력을 처리.

블록 멀티플렉서 패널 : 실렉터와 멀티플렉서의 결합. 여러 대의 고속 입출력장치를 블록 단위로 처리하여 동일한 채널에서 여러 장치 활성화 가능.

 

커널 입출력 서브 시스템

커널에서 제공하는 입출력관련 서비스가 있다.

  • 입출력 스케줄링 : 입출력 요구들의 실행 순서를 결정한다.
  • 버퍼링 : 입출력장치와 응용프로그램 사이에 전송되는 데이터를 버퍼에 임시로 저장. 전송속도 문제를 해결.
  • 캐싱 : 명령어와 데이터를 일시 저장하여 프로세서와 메모리 간의 액세스 속도 차이를 줄임.
  • 스풀링 : 출력 데이터를 디스크 파일에 저장. 다른 프로그램의 출력과 섞이지 않도록 함.
  • 오류처리 : 중요한 요소가 영구적인 고장을 일으킨 게 아니라면 일시적 고장을 효과적으로 해결.
  • 자료관리 : 입출력 상태 정보를 유지. 버퍼링, 캐싱, 스풀링의 관리도 포함.

 

디스크 액세스와 스케줄링

디스크 액세스 시간

이동 디스크(헤드가 움직이는)일 경우, 디스크 액세스 시간은 탐색 시간+회전 지연 시간+전송 시간이다.

그러나 탐색이 필요없는 고정 헤드 디스크일 경우, 회전 지연+전송이다.

 

디스크 스케줄링

디스크 액세스 요청을 스케줄하여 시스템 자원을 효과적으로 사용할 수 있다. 이번엔 디스크 스케줄링의 종류를 알아보자.

어떤 시간을 최적화하는 데에 비중을 둘 것인가?

어떤 시간을 최적화할 것인가에 따라 스케줄링은 2가지로 분류된다. 집중적으로 봐야 할 것은 탐색시간 최적화다.

탐색 시간 최적화 스케줄링

  • 선입선처리 스케줄링 FCFS : 요청을 도착한 순서대로 처리하는 방법. 구현이 간단하고 공평성을 유지하지만, 탐색시간이 증가하는 단점이 있다.

  • 최소 탐색 시간 우선 스케줄링 SSTF Shortest Seek Time First : 헤드 위치에 가까운 모든 요구를 우선 처리하는 방법. 디스크 탐색 시간을 최소화 할 수 있지만 최소작업의 우선 요구로 기아 상태가 발생할 수 있고, 공정성을 보장할 수 없다.

  • 스캔 스케줄링 Scan : 헤드 위치에서 요청을 처리하면서 끝에 도달하면, 역방향으로 이동하면서 요청한 트랙을 처리하는 방법. 헤드 위치와 이동방향을 알아야 한다. 디스크 끝에서 끝으로 이동하는 원리라 생각하면 된다. 참고로, 이동거리는 순서대로 하되 120에서 140으로 가진 않는다. 따라서 140을 제외하면 총 이동거리는 170이 된다. 

  • 순환 스캔 스케줄링 C_Scan : 스캔 스케줄링처럼 한쪽 방향으로 이동하면서 처리하지만 끝에 다다르면 역방향으로 이동하는 게 아닌 처음부터 요청을 처리한다. 즉, 처음과 마지막 트랙을 원형처럼 여겨서 디스크 처리량을 향상시키는 것이다. 이 스케줄링은 120에서 140으로 넘어가서 0까지 이동한다. 따라서 총 이동거리는 276이다. 또 덧붙여서, 이 스케줄링은 스캔 스케줄링처럼 '헤드의 위치와 이동방향'을 알아야 한다.

  • 룩 스케줄링 : 요청에 따른 방향으로 이동하지만 가는 방향에 더 이상의 요청이 없을 때 이동방향을 바꿔서 처리하는 방법. 가는 방향의 마지막 요청을 끝자리라 여기고 방향을 바꾸면 된다.

보라색 방향선이 룩 스케줄링의 진행방향.

회전 지연 시간 최적화

  • 최소 지연시간 우선 스케줄링 SLTF Shortest latency time first : 모든 요청 중에서 회전 지연 시간이 가장 짧은 요청을 먼저 처리하는 방법이다. 헤드가 트랙 요청들이 대기하고 있는 실린더에 도착하면 더 이상 움직이지 않고 모든 요청을 처리한다. 고정된 헤드는 탐색시간이 없으므로 회전 지연시간만 지연시간이 된다.
  • 최소 위치 결정 시간 우선 스케줄링 SPTF : 탐색 시간과 회전 지연시간의 합이 가장 짧은 요청을 먼저 처리하는 방법이다. 최소 탐색 시간 우선 스케줄링SSTF과 같다. 가장 안쪽과 바깥쪽 실린더의 요청이 무기한 연기될 수 있다. 

 

 

앞서 소개한 디스크 스케줄링에서는 SSTF가 가장 일반적인 알고리즘이다. 스캔이나 순환 스캔은 디스크를 많이 사용하는 시스템에 적당하다.

728x90
반응형