Kernel I/O (Buffering)

갱두·2021년 12월 4일
0

📚 운영체제

목록 보기
11/14

커널은 입출력과 관련된 많은 서비스를 제공한다.
입/출력 스케줄링, 버퍼링, 캐싱, 스풀링, 장치 예약 및 에러 처리등의 서비스를 제공함

Buffering

Buffer

두 장치간 또는 장치와 응용 프로그램 간에 전송되는 데이터를 저장하는 메인 메모리 영역임

Buffer를 사용하는 이유

1) 수신자와 송신자의 데이터 스트림 속도가 잘 맞지 않는 경우

파일을 네트워크로 읽어들여서 하드디스크에 저장하는데 네트워크가 너무 느릴 때
버퍼가 생성되어서 네트워크가 읽어오는 데이터들을 버퍼에 저장함. 어느 정도 저장이 되었을 때 디스크에 쓰기 시작함

2) 데이터 전송 크기가 맞지 않는 경우

  • 보내는 쪽에서 : 큰 데이터를 작은 네트워크 패킷으로 쪼갠 후에 send buffer 에 저장함
  • 패킷이 네트워크를 통해서 전달
  • 받는 쪽에서 : 넘어오는 패킷들을 reassembly buffer 에 저장해서 오리지널 데이터로 복구함

✅ 스풀링 vs 버퍼링

✔️ 스풀 : 하드디스크 내의 일정한 기억 장소
✔️ 스풀링 : 디스크에 수록된 파일을 미리 입력 장치로부터 읽어들이고, 출력장치가 그것을 받을 수 있을 때까지 일시적으로 저장함으로써, 한 작업의 출력을 프린터를 통해서 인쇄하는 동안에 다른 작업의 입력을 읽어들일 수 있으며, 이 시간 동안 또 다른 작업이 수행 될 수 있다.

공통점

버퍼링과 스풀링 모두 CPU의 처리 속도와 입출력 장치의 속도 차이를 보완하기 위한 방법

차이점

스풀링은 다중 작업 가능, 버퍼링은 단일 작업
스풀링은 디스크의 일부를 스풀공간이라 부르는 매우 큰 버퍼처럼 사용하는 방식으로 CPU와 입출력장치 사이의 속도 차이를 해소하기 위해 사용

profile
👩🏻‍💻🔥

0개의 댓글