[운영체제] buffering

뚱환·2023년 4월 13일
0
post-thumbnail

Spooling & buffering

  • 오프라인 처리는 두개의 독립적인 기계에서 cpu 처리와 입출력 처리를 동시에 할 수 있음.
  • 하나의 시스템에서 그러한 두개의 일을 동시에 수행하려면, 시스템 구성은 입출력 장치와 cpu 사이에
    유사한 실행 분리 기능을 허용해야 함.
    -또한 적합한 시스템구조가 이러한 버퍼링을 허용하도록 개발되어야함

buffering 이란?

버퍼링은 버퍼 메모리영역에 사용 예정 데이터를 임시로 저장하여 처리속도 차이를 완화하기 위한 기술이다. 장치 사이의 속도 차이 개선 및 전송 크기 차이를 극복하기 위해 사용.

그렇다면 버퍼란? 버퍼는 컴퓨터 안의 프로세스 사이에서 데이터를 이동시킬 때 사용된다. 보통 데이터는 키보드와 같은 입력장치로부터 받거나 프로터와 같은 출력 장치로 내보낼 때 버퍼 안에 저장된다. 버퍼는 하드웨어나 소프트웨어에 추가될 수 있지만 상당수가 소프트웨어에 추가된다. 버퍼는 보통 속도가 계속 바뀔 수 있으므로 데이터 수신, 처리 속도에 차이가 있다.

그렇다면 버퍼링이란 자신의 계산과 함께 한 작업의 입출력을 동시에 수행한 것을 말한다. 자료를 입력한 후 cpu가 그들을 연산하려고 하는 순간, 입력장치는 바로 다음 입력을 시작 이때 cpu와 입력장치는 함께 동작한다.

cpu가 다른 자료 항목을 준비하고 있을때 입력장치는 다음 자료를 읽기 시작, 출력도 마찬가지로 수행할 수 있다. 이러한 경우 cpu는 출력장치가 그들을 받아들이고 있을 동안 버퍼에 자료를 넣게 된다.

cpu와 집출력 장치 둘 중에서 어느 하나가 먼저 종류할 수 있기 때문에 항상 cpu와 입출력 장치와 동시에 수행하지 못한다.

cpu가 먼저 종료하면 입력장치가 종료할 때까지 cpu는 기다려야한다. 즉 다음 레코드를 읽어서 처리하기 위하여 기억장치에 준비되어 있을때까지 처리될 수 없다. 그러나 cpu가 아주 오랫동안 유휴상태에 놓이지 않는다. 최악의 경우에도 버퍼링이 없을 경우보다 더 오랫동안 유휴 상태가 되지는 않는다. 만약 입력장치가 먼저 종료되면 입력장치는 다음레코드를 읽으려고 준비하거나 기달여야한다.

읽기는 했지만 아직 처리되지 않은 레코드를 가지고 있는 버퍼는 몇 개의 레코드를 저장할 수 있는 만큼 상당히 클 수가 있다. 따라서 입력 장치는 cpu 수행 전에 몇 개의 레코드를 읽을 수 있다. 만약 입력장치가 계속해서 cpu보다 아주 빠르면, 버퍼는 궁극적으로 가득 차게 되고 입력장치는 대기 상태로 된다.

  • 버퍼링은 하나의 운영체제의 기능이다. 상주 모니터 또는 구동기는 각 입출력 장치를 위해 시스템 입출력 버퍼를 가지고 있다. 응용 프로그램에 의한 장치 구동기에 대한 서브루틴 호출은 일반적으로 시스템 버퍼로부터 전송 때문이다. 실질적인 입출력 동작은 이미 실행되었거나 입출력 장치가 사용 가능 하자마자 실행 될 수도 있다.

요약하자면

1.cpu는 하나의 입출력 작업이 완료되기를 기다리지 않고 여러 작업을 버퍼에 저장해서 입출력 장치가 버퍼로부터 작업을 처리한다.

2.cpu는 입출력 장치의 속도와 관계 없이 연산을처리한다

profile
https://github.com/lixxce5017/Algoritm_Weekly_Baekjoon

0개의 댓글