본문 바로가기

Computer Science/security

[시스템 보안] 입출력 버퍼링과 스풀링 개념

 버퍼링이란?


 입출력 장치는 CPU 보다 아주 느린 속도로 처리된다. 이와같이 입출력 장치와 느린 속도를 보완해 주는 방법으로 버퍼링 이라는 개념이 생겼다.


 버퍼링은 입출력이 일어나는 동안 입출력 장치와 CPU 간의 처리 속도 차이에서 발생하는 CPU의 대기시간을 최소화 하는 작업을 필요하며 CPU의 효율적인 시간 관리를 지향한다.


 주기억 장치의 일부를 버퍼로 정해 놓고 주기억 장치와 CPU 간 또는 주기억 장치와 입출력 장치간의 데이터 이동에 있어서 시간관리의 효율화를 위한 소프트웨어적인 처리를 행하게 된다. 데이터의 단위는 블럭 단위로 Load와 Store가 행해지며, CPU의 경우는 처리의 기본단위인 레코드 단위로 버퍼에 입출력 하게된다.


- 버퍼링 입력의 예

1) CPU가 하나의 레코드를 요구하면 입출력 장치(disk)로부터 블럭(block)단위의 자료를 버퍼에 입력한다.

2) 버퍼가 꽉 차게 되면, 블럭을 해체하여 논리 레코드 단위로 나눈다.

3) CPU의 처리 단위인 한 레코드 씩 처리를 한다.


- 버퍼링 출력의 예

1) 버퍼가 완전히 채워질 때가지 CPU는 버퍼링 출력 작업을 한다.

2) 퍼버가 꽉 찬 상태가 되면 버퍼의 내용을 블럭 단위로 출력한다.

3) 출력이 끝나면 CPU에게 출력 완료임을 알린다.


버퍼링은 하나의 논리적 레코드를 처리하는데 걸리는 시간을 일정하게 하는 효과를 가진다.

1개의 버퍼를 사용하는 경우는 단일 버퍼링이라 하면 2개의 버퍼를 사용하면 이중 버퍼링 그리고 2개 이상의 버퍼라 환형 큐 형식으로 입출력을 수행하는 방식을 다중 버퍼링 또는 환형 버퍼링 이라고 한다.



스풀링이란?


 스풀링은 CPU의 처리속도에 비해 카드 판독기나 라인 프린터 같은 입출력 장치의 처리속도가 훨씬 느리기 때문에 전체적인 처리 속도 차이를 줄여주고 그 수가 제한되어 있는 입출력 장치의 사용으로 인한 입출력 작업의 지연을 방지하기 위하여 고안되었다. 


 컴퓨터와 입출력 장치를 직접 연결하지 않고 비교적 입출력 장치보다 빠른 처리 속도를 갖는 물리적인 저장 장치를 위치시킨 것이다.


 예를들면 카드 판독기로부터 입력된 자료를 우선 중간의 물리적인 저장장치(가지 디스크 등)에 저장한 후 컴퓨터의 지시에 따라 데이터를 읽어내게 한다. 출력의 경우 역시 물리적인 중간 저장장치에 일단 출력 후 느린 프린터 속도에 맞추어 내보내게 하는 방법이다.


 스풀이란 중간장치 영역 전체를 말하는 것으로 용량이 매우 큰 자기디스크를 아주 큰 버퍼처럼 물리적인 중간 저장장치를 사용한다. 스풀링은 한 작업의 입출력과 다른 작업의 계산을 중복 실행할 수 있다는 이점이 있다. 또 다른 이점으로는 입력된 순서대로 처리(FCFS)하여야 하는 카드 판독기나 자기 테이프 같은 순차 접근 장치는 입력순서를 무시하고 다른 순서로 작업을 수케줄링 할 수가 없다. 그러나 디스크는 직접 접근 장치(DASD) 이기 때문에 하나의 작업 풀 구조로 생각하여 시스템의 효율을 엎일 수 있는 방향으로 다음에 수행할 작업을 스케줄링 할 수 있도록 하는 이점을 가질 수 있다.