운영체제_입출력 관리와 디스크 스케줄링_입출력 버퍼링

미뇽·2024년 6월 8일
0

운영체제(강의)

목록 보기
32/43
post-thumbnail

입출력 버퍼링

문제를 위한 가정

  • 사용자 프로세스가 디스크로부터 데이터 블록을 한 번에 하나씩 읽어들이고 싶음
  • 데이터 블록 길이 512바이트
  • 데이터 블록은 사용자 프로세스 주소 공간의 가상 위치 1000~1511에 존재하는 영역으로 읽혀짐
    -> 가장 간단한 방법: Read_Block[1000,disk]

해당 접근의 문제점

  • 입출력은 느리게 수행되는데 입출력 종료까지 멈춰야 함
  • 운영체제가 스와핑 결정에 방해됨
    - 1000~1511 가상위치 블록을 유지해야 함
    - 교착 상태 가능성
    - 오버헤드와 비효율 -> 버퍼링으로 해결

입출력 장치의 유형

  • 블록형(Block-oriented) 장치
    - 정보를 고정 크기를 가지는 블록 형태로 저장
    - USB, 디스크 등
  • 스트림형(stream-oriented) 장치
    - 데이터를 별도의 블록 구조 없이 바이트 스트림으로 저장
    - 마우스, 키보드 등

단일 버퍼

사용자 프로세스가 입출력 명령을 내리면 운영체제는 주기억장치의 시스템이 사용하는 영역에 있는 버퍼 하나를 할당

  • 시스템 버퍼로 입력 데이터 전송
  • 전송이 완료되면 프로세스는 그 블록을 사용자 공간으로 이동시키고 즉시 다음 블록 요청
  • 사용자 프로세스는 그 다음 블록을 읽어오는 동안 이미 읽혀진 데이터 블록을 처리
  • 시스템 버퍼링이 없는 경우에 비해 입출력 속도 향상
  • 하지만 운영 시스템의 논리를 복잡하게 만듦(운영체제 + 스와핑 논리)
  • 스트림형 입출력의 경우
    - 라인형 단일 버퍼링 기법
    - 바이트형 단일 버퍼링 기법

이중 버퍼

버퍼를 두 개를 두어 프로세스가 데이터를 버퍼로 전송하거나 전송받는 동안 운영체제는 또 다른 버퍼를 비우거나 채움

  • 단일 버퍼링보다 성능 향상
  • 스트림형 입력의 경우
    - 라인형 입출력 -> 프로세스가 이중 버퍼 연산보다 앞서서 수행되지 않는다면 입력이나 출력이 완료될 때까지 보류될 필요가 없음
    - 바이트형 -> 별 차이 없음

환형 버퍼

  • 입출력 장치와 프로세스 간의 데이터 흐름을 평탄하게 조절
  • 두 개 이상의 버퍼
  • 각 버퍼는 환형 버퍼 할당의 단위
profile
문이과 통합형 인재(人災)

0개의 댓글