[Computer Science]/[운영체제(OS)]

[운영체제(OS)] 12-2) 응용 입출력 인터페이스, 입출력 성능

극꼼 2023. 4. 5. 23:07
반응형


<응용 입출력 인터페이스>

응용 입출력 인터페이스의 특성에는 다음과 같은 것들이 있습니다.

  • 문자 스트림과 블록 : 문자 스트림 장치는 바이트를 하나씩 전송하고, 블록은 블록 단위로 전송합니다.
  • 순차 접근과 임의 접근 : 순차 접근은 순차적으로, 임의 접근은 임의의 위치에 있는 자료를 입출력하는 것입니다.
  • 동기식과 비동기식 : 다른 이벤트와 조율하여 일정 응답시간을 보이는 것이 동기식, 조율하지 않고 불규칙한 응답시간을 보이는 것이 비동기식입니다.
  • 공유와 전용 : 공유는 여러 프로세스나 스레드가 동시에 사용할 수 있고, 전용은 혼자서만 사용해야 합니다.
  • 동작 속도 : 장치의 속도는 초당 몇 바이트 ~ 기가바이트까지 다양합니다.
  • 읽기/쓰기, 읽기 전용, 한 번만 쓰기

응용 입출력 인터페이스의 종류를 알아보겠습니다.

1) 블록 장치와 문자 장치 

  • 블록 장치 : 블록 지향 장치를 사용하기 위해 필요한 모든 요소를 제공합니다.
    • 비가공 입출력(raw I/O) : 운영체제나 DB가 블록 장치를 마치 선형 배열인 것처럼 사용하는 것.
    • 직접 입출력(direct I/O) : 운영체제가 버퍼링과 잠금을 하지 않는 모드로 파일에 대한 입출력을 하는 것.
  • 문자 장치 : 키보드는 문자 스트림 인터페이스를 통해 접근되는 대표적인 장치입니다. 문자 장치 인터페이스의 시스템콜은 응용 프로그램에 한 글자씩 보내거나 받아오는 명령을 제공합니다.

2) 네트워크 장치 

  • 소켓(socket) : 소켓 인터페이스에서 시스템콜은 응용프로그램이 소켓을 생성하고, 로컬 소켓을 원격지 주소와 연결해주고, 원격지의 응용 프로그램이 소켓을 통해 접속 완료했는지 알아보고, 연결되었으면 패킷(packet)을 주고받도록 해줍니다.

3) 클록(clocks)과 타이머 : 현재 시간과 지난 시간을 제공하고, 특정 시간이 되면 X 오퍼레이션을 실행시키는 기능을 제공합니다.

  • 인터벌 타이머 : 지나간 시간을 재고 특정 오퍼레이션을 실행시킴.

4) 봉쇄형과 비봉쇄형 입출력 : 시스템콜 인터페이스는 봉쇄형과 비봉쇄형(비동기식) 방법 중 선택해야 합니다.

  • 봉쇄형 : 응용 프로그램이 봉쇄형 시스템콜을 하면 호출 스레드는 봉쇄 상태(운영체제가 이 스레드를 실행 큐에서 대기 큐로 옮김)에 들어가게 되고, 입출력이 끝나면 다시 실행 큐로 돌아옵니다.
  • 비봉쇄형 : 자료를 표시하거나 연산을 하면서도 키보드와 마우스 입력 등이 가능하게 해줍니다. 

5) 벡터형 입출력 : 하나의 시스템 콜을 호출해서 복수의 위치에 여러 입출력 연산을 수행하는 것입니다. 문맥 교환과 시스템 콜 오버헤드를 줄일 수 있습니다.


<입출력 성능>

입출력의 효율을 위한 원칙에는 다음과 같은 것들이 있습니다.

1) 문맥 교환의 빈도를 줄입니다.

2) 메모리에서 장치와 응용 프로그램 사이에 데이터가 복사되는 횟수를 줄입니다.

3) 인터럽트 빈도를 줄입니다(한 번의 입출력에 많은 데이터를 전송하거나, busy waiting을 최소화할 수 있다면 지능적인 컨트롤러를 사용하거나, 폴링 사용)

4) DMA, 채널 등을 사용해서 CPU의 입출력 부담을 줄이고, 많이 중첩되도록 합니다.

5) 원시 처리 연산을 하드웨어로 구현하여 장치 컨트롤러 내의 작업이 CPU와 버스의 작업과 병렬로 진행되도록 합니다.

6) CPU, 메모리, 버스, 입출력 등에 대한 부하가 균일하게 되어야 합니다.

 

 

반응형