[운영체제] 11강 - 장치관리

2026. 4. 25. 23:58·방송통신대학교/⚙️운영체제

✅ 1. 장치의 개념

(1) 컴퓨터 시스템의 구성

  • 기존의 내용들은 모두 CPU, 메모리 장치로써 프로세스 실행에 필수적인 장치들을 다룸.
  • 해당 파트에서 배우는 내용은 프로세스 실행에 필수적인 CPU, 메모리 외에 나머지 장치들에 대한 내용임.

(2) 입출력장치 - 구분

  • 입출력 장치는 크게 전용장치, 공용장치, 가상장치 세 가지 범주로 나뉨.
  • 구분 기준: 장치의 기능적 특징과 장치관리자의 관리 방법에 따라 구분을 함.
  • 전용장치: 한 번에 하나의 프로세스에만 할당이 가능한 장치를 의미한다.
  • 예를들면, 프린터의 경우 여러 프로세스가 하나의 프린터에 프린팅을 하게 된다면, 겹치게 되어 원하는 프린팅의 결과를 얻을 수 없기 때문에 이러한 장치의 기능적 특징으로 인해 프린터는 전용장치로 구분 할 수 있음.
  • 전용장치 단점: 하나의 프로세스에만 할당이 가능하기에 다른 프로세스의 대기시간이 길어질 수 있음.
  • 공용장치: 여러 프로세스에 동시에 할당이 가능한 장치를 의미한다.
  • 예를들면, 디스크와 같이 빠르게 데이터를 삽입 또는 읽기가 가능하기 때문에 동시에 할당이 가능한 공용장치임.
  • 스케줄링 기법 필요: 대신 여러 프로세스가 동시에 사용을 할 수 있기 때문에 어떤 프로세스에게 어떤 순서로 할당을 해줄 것인지에 대한 스케줄링이 필요함. ( 복잡성이 증가 할 가능성이 있음. )
  • 가상장치: 전용장치를 공용장치처럼 보이게 함으로써, 여러 프로세스를 동시에 할당 하는것처럼 보이게 해주는 장치임.
  • 예를들면, 디스크와 같은 공용장치를 가운데에 두고, 프로세스 A, B가 프린터를 한다고 가정하면, 두 개의 프린팅 정보를 디스크에 저장을 해두고, A와 B는 이미 프린터를 했다고 착각하게 만들어 다음 작업을 수행하게 한 뒤, 해당 프린터 요청은 디스크로부터 하나씩 프린터기에 프린팅을 하는 방식임.
  • 가상장치는 스풀링, 플로터 기술을 활용해서 구현함.

✅ 2. 장치의 구성

  • 장치의 구성은 크게 논리적 구성, 물리적 구성으로 나눌 수 있음.
  • 논리적 구성: 운영체제가 장치를 제어하는 원리를 쉽게 설명하기 위해 복잡한 하드웨어의 디테일을 걷어내고 개념적으로 모델링한 것을 의미한다. 쉽게 말해, 장치 드라이버를 통해서 장치제어기에 요청을 보내서 처리가 되는 이러한 단계를 개념적으로 설명하는 것이며, 각각의 역할을 논리적으로 구분한 느낌임.
  • 물리적 구성: 실제 하드웨어적 매커니즘으로, 운영체제가 장치를 제어하기 위해서 내부적으로 어떤식으로 동작하는가에 대한 물리적 설명으로 볼 수 있으며, 물리적 동작에 대해서 각각의 역할을 물리적으로 구분한 것임.

(1) 논리적 구성

  • 장치제어기: 장치 하드웨어 내부에 있으며, 장치를 직접적으로 다루는 전자장치이다.
  • (1) 장치에서 발생하는 각종 데이터를 전자신호로 변환 후 운영체제로 보냄.
  • (2) 운영체제가 요청하는 명령을 받아 장치를 구동시키는 역할
  • (3) 운영체제가 보내는 출력을 장치에 맞게 변환해서 출력을 해줌.
  • 장치 드라이버: 하드웨어 장치는 종류가 다양하기 때문에 장치를 다룰 수 있는 장치 드라이버 소프트웨어를 장치 회사에서 제공함으로써, 운영체제가 해당 드라이버를 통해서 장치를 다룰 수 있도록 해주는 것이 장치 드라이버임.
  • 즉, 장치 드라이버는 소프트웨어이며, 장치들마다 종류가 다르기 때문에 각각 다룰 수 있도록 드라이버를 제공함.
  • 정리: 논리적 구성 -> 논리적으로 장치 드라이버, 장치제어기, 장치로 구성이 될 수 있음.

(2) 물리적 구성

  • 물리적 구성: 논리적 구성에서 실제로 물리적으로 어떻게 장치를 제어하는지에 대한 구성으로 보면 됨.
  • CPU의 장치 사용법(CPU 관점): 장치제어기의 레지스터를 활용해 장치의 상태를 확인하거나 장치에 명령을 내림.
  • 쉽게말해, 각각의 장치마다 장치 레지스터가 존재하며, 해당 레지스터의 값을 통해서 상태 및 명령을 내리는 원리임.
  • 예를들면, 레지스터가 0이면 장치는 쉬고 있다고 판단을 할 수 있어, CPU가 명령을 내릴 수 있는 느낌으로 보면 됨.
  • CPU는 아주 빠른 연산장치이고, 하드웨어 장치는 상대적으로 많이 느리기 때문에 1:1로 장치를 제어하고 데이터를 주고 받기에는 매우 비효율적이기 때문에 추가적으로 메모리 사상 입출력 방식을 사용함.
  • 메모리 사상 입출력: 메모리의 특정 영역을 장치제어기의 레지스터와 대응을 시켜두며, 이를 통해 CPU가 메모리를 읽고 쓰는 것으로 장치를 사용 할 수 있음.
  • 내부 동작: 메모리 특정 부분에 장치제어기의 레지스터와 대응된 부분을 CPU가 읽어 상태를 확인한 뒤, CPU가 장치제어기에 요청을 보내게 되고, 이후에 결과값을 CPU가 받는게 아닌 바로 메모리에 저장을 한 뒤, 인터럽트를 통해 CPU에 저장이 완료됨을 알리는 원리로 동작을 함.

✅ 3. 입출력 처리 유형

  • 앞서 본것과 같이 하드웨어 관점에서 물리적, 논리적 관점이 아닌 운영체제 관점에서 입출력 처리에 대한 내용임.
  • 운영체제 관점에서 프로세스가 진행하며 입출력이 발생하는 경우 입출력을 처리하는 방법으로 크게 3가지로 나눌 수 있음.
  • 프로그램 방법, 인터럽트 방법, DMA 방법

(1) 프로그램 방법

  • 프로그램 방법: CPU만 활용해 폴링을 이용하여 입출력을 처리하는 방법임.
  • 폴링(polling): CPU가 해당하는 장치가 쓸 수 있는 상태인지 계속해서 체크하는 행위를 의미함.
  • 정리하면, CPU가 입출력장치의 상태를 지속적으로 확인하며 CPU가 원하는 상태가 될 때까지 기다리는 방식임.
  • CPU 낭비: CPU는 하드웨어 장치보다 상대적으로 매우 빠르기 때문에 CPU가 대기하는 시간이 길어질 수 있어 비효율적임.

(2) 인터럽트 방법

  • 인터럽트 방법: 인터럽트를 이용해 입출력을 처리하는 방법을 의미함.
  • 인터럽트(interrupt): CPU가 프로그램을 실행하고 있을 때, 입출력 및 하드웨어의 사용이 종료가 되는 등의 예외 상황이 발생해 이것을 CPU에게 알려주는 신호를 의미한다.
  • 정리: 인터럽트 방법은 특정 프로세스가 장치를 사용 할 때, 해당 프로세스는 잠시 대기 상태로 들어가게 되며, 장치의 사용이 종료가 되면 장치는 인터럽트 제어기에 신호를 보내게 되고, 인터럽트 제어기는 CPU 에게 인터럽트 신호를 보내게 된다.
  • 이후, CPU는 해당 신호를 받고 다른 프로세스가 해당 장치를 이용하기를 원하면 장치를 사용할 수 있도록 하는 원리임.
  • 장점: 프로세스를 대기상태로 보내고 인터럽트가 발생할 때까지 CPU는 다른 프로세스를 처리할 수 있음.
  • 또한, 앞서본 프로그램 방법은 CPU가 입출력장치를 계속해서 확인하는 폴링 작업을 한것과 다르게 장치 자체가 자신의 상태를 인터럽트로 알려줌으로써 프로그램 방법과 다르게 인터럽트 방법은 CPU의 낭비가 없음.
  • (1) 입출력 장치가 가용한 상태임을 인터럽트 제어기에 신호 발송
  • (2) 인터럽트 제어기는 CPU에 인터럽트 신호 발송
  • (3) CPU는 현재 실행 중이던 명령을 반드시 마치고 이후에 해당 프로세스를 대기 상태로 보내고 즉시 인터럽트에 응답을 하는데, 이때의 응답은 어떤 장치의 인터럽트인지 인터럽트 제어기에 다시 물어보는 것을 의미함.
  • (4) 응답을 받은 인터럽트 제어기는 장치에 대한 구체적인 정보를 CPU에게 전달을 해주게 됨.
  • (5) 구체적인 정보를 통해서 CPU는 현재 상태 보관 후 장치 사용을 원하던 그 다음 프로세스 입출력 처리를 진행함.
  • 인터럽트 방법 단점: 장치 사용에 대한 인터럽트 신호가 매번 위와 같이 일어날 때, 신호가 감당할 수 없을 정도로 쏟아지게 된다면, 정작 실제 사용자 프로그램은 단 한 줄도 실행하지 못하고, 인터럽트만 하는 상황이 발생 할 수 있음.
  • 즉, 하나의 프로세스가 하나의 장치를 짧게 여러번 사용 할 때 장치 사용이 끝날 때마다 CPU가 쉬지 않고 인터럽트를 처리해야 하는 문제가 있음.
  • 이러한 인터럽트의 방법의 문제를 처리하기 위해 DMA 방식이 등장했으며, 해당 DMA 장치를 통해서 CPU의 자유 시간 확보를 해 효율성을 올릴 수 있음.

(3) DMA 방법

  • DMA 방법: DMA 제어기를 이용하여 CPU를 통하지 않고 메모리에 직접 접근하여 데이터를 전송하는 방법을 의미함.
  • (1) CPU는 입출력에 필요한 정보(입출력 데이터에 대한 메모리 위치, 사용할 장치 등의 정보)를 DMA 제어기에 쭉 넘김.
  • (2) DMA 제어기는 소스(데이터가 있는 메모리 위치)에서 목적지(장치 위치)로 데이터를 보내도록 장치제어기에 요청을 하고, 이를 CPU가 지시한 양만큼 반복을 하게 됨.
  • (3) 이후, 장치와 메모리 사이의 데이터 운반을 DMA 제어기가 하고, 모두 끝 났을 때 DMA 제어기는 인터럽트 제어기에 신호를 보내게 됨.
  • (4) 인터럽트 제어기는 CPU에 인터럽트 신호를 보냄.
  • 장점: DMA 에 할당된 양만큼 메모리에 출력을 진행하는 동안에는 CPU는 다른일을 할 수 있음.
  • 사이클 스틸링: DMA 방식에서 CPU와 DMA 제어기가 동시에 메모리 액세스를 시도 할 때, DMA 제어기에 우선권을 주는 방식의 기술로 볼 수 있음.
  • 즉, DMA 방법에서 버스를 사용하는 방식은 사이클 스틸링 외에도 여러개가 있음.

✅ 4. 입출력 관리

  • 입출력 처리 유형: 어떻게 데이터를 주고받는가에 대한 하드웨어적인 방법을 다룬 것임.
  • 입출력 관리: 운영체제가 효율적으로 입출력 작업을 조정하고 최적화하는 고수준의 전략을 다룸.
  • 즉, 입출력 처리 유형의 경우는 실제로 데이터를 주고받는 행위에 가깝고, 입출력 관리는 그 입출력 처리 유형을 어떻게 더 잘할 수 있는지에 대한 시스템 차원의 계획으로 볼 수 있음.
  • 또한, 입출력 장치 자체의 특징(빠르기, 종류 등)과는 별개로, 데이터를 주고받는 과정에 대한 효율을 높이는데 집중을 하며, 방법으로는 대표적으로 버퍼링, 스풀링 방식이 존재함.

(1) 버퍼링

  • 버퍼링: CPU의 데이터 처리 속도와 I/O 장치의 데이터 전송 속도 차이로 인한 문제를 해결하기 위해 메모리의 일부를 일시적인 데이터 저장 장소인 버퍼로 이용하는 방법을 의미한다.
  • 단일 버퍼링: 버퍼가 하나만 존재하는 경우로써, 저장과 처리를 동시에 할 수 없어 비효율적인 특징이 있음.
  • 이중 버퍼링: 버퍼 하나 자체가 저장과 처리를 동시에 할 수 없지만, 이중 버퍼링의 경우 두 개의 버퍼를 사용하여 하나가 채워지는(저장) 동안 다른 하나를 처리하는 방식임. ( 단일 버퍼링 보다는 효율이 좋음 )
  • 순환 버퍼링: 여러 개의 버퍼를 순환적으로 사용하는 방식 (순환 버퍼링 안에 이중 버퍼링 포함 관계로 보면 됨. 개수만 늘어남)
  • 버퍼링은 메모리를 저장 장치로 이용하는 방식

(2) 스풀링

  • 스풀링: 프로세스와 입출력장치 사이의 데이터 전송을 자기 디스크와 같은 고속장치를 통하도록 하는 방식임.
  • 예를들면, 프린터 100페이지 문서와 같이 많은 양을 인쇄할 때, 해당 스풀링은 하드 디스크와 같은 공간에 문서를 임시 저장한 뒤, 하드 디스크에서 저장된 문서를 프린터 속도에 맞게 천천히 보내주는 역할을 함.
  • 즉, 하드디스크에서 입출력 장치로 명령, 데이터 전송의 역할은 DMA를 활용해서 이뤄지게 되므로, CPU는 입출력 처리를 하지 않고 다른 작업을 할 수 있음.

(3) 정리

  • 버퍼링: 메모리를 프로세스와 입출력 장치 사이의 데이터 전송 저장 장치로 이용하는 방식
  • 스풀링: 자기디스크를 프로세스와 입출력 장치 사이의 데이터 전송 저장 장치로 이용하는 방식
  • 프로그램/인터럽트/DMA 방식이 데이터를 옮기는 '하드웨어적 전송 기술'이라면, 버퍼링과 스풀링은 그 데이터를 효율적으로 관리하기 위한 '소프트웨어적 운영 기법'임

'방송통신대학교 > ⚙️운영체제' 카테고리의 다른 글

[운영체제] 13강 - 분산 운영체제  (0) 2026.06.03
[운영체제] 12강 - 저장장치 및 파일관리  (0) 2026.04.30
[운영체제] 10강 - 페이지 교체 알고리즘  (0) 2026.04.17
[운영체제] 9강 - 가상 메모리  (0) 2026.04.14
[운영체제] 8강 - 메모리 관리  (0) 2026.04.07
'방송통신대학교/⚙️운영체제' 카테고리의 다른 글
  • [운영체제] 13강 - 분산 운영체제
  • [운영체제] 12강 - 저장장치 및 파일관리
  • [운영체제] 10강 - 페이지 교체 알고리즘
  • [운영체제] 9강 - 가상 메모리
junbin2
junbin2
java.lang.NullPointerException
  • junbin2
    bin's Development Diary
    junbin2
  • 전체
    오늘
    어제
    • 전체보기 (233)
      • 방송통신대학교 (87)
        • ⚙️컴퓨터의 이해 (11)
        • 💻컴퓨터과학 개론 (15)
        • 🔢자료구조 (14)
        • 🧬알고리즘 (10)
        • ⚙️운영체제 (14)
        • 🕸️이산수학 (11)
        • 🌍유비쿼터스 컴퓨팅 (11)
        • 🖥️컴퓨터과학과 (1)
      • 공부 (72)
        • 📚백엔드 공부 (6)
        • ☕Java (23)
        • 🌳Spring (13)
        • ⚙️C (12)
        • ⚡Python (15)
        • JavaScript (1)
        • 🛢️Database (0)
        • Algorithm Problem Solving (2)
      • 네트워크 (7)
        • 📜HTTP (7)
      • 스파르타코딩클럽 (64)
      • 정보 (2)
      • 정리가 필요한 글 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    운영체제
    자료구조
    배열
    방송대
    알고리즘
    컴퓨터과학과
    Java
    방통대
    컴퓨터과학 개론
    C언어
    컴퓨터의 이해
    파이썬
    함수
    Python
    방송통신대학교
    자바
    유비쿼터스
    이산수학
    spring
    그래프
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
junbin2
[운영체제] 11강 - 장치관리
상단으로

티스토리툴바