티스토리 뷰

운영체제

[운영체제] 장치관리

tonirr 2021. 5. 5. 16:30
  • 장치의 개념
    • 컴퓨터 시스템의 구성
      • 다양한 장치들
        • CPU, 메모리: 프로세스 실행에 필수
        • 나머지 장치들: 프로세스 실행 시 데이터 입력이나 출력에 사용하는 입출력장치
  • 장치의 구분
    • 입출력장치의 구분
      • 장치의 기능적 특징과 장치 관리자의 관리 방법에 따라 구분
      • 전용장치
        • 한 번에 단지 하나의 프로세스에만 할당
        • 예: 테이프 드라이브, 프린터, 플로터 등
        • 단점: 대기시간이 길어질 수 있음
      • 공용장치
        • 여러 프로세스에 동시에 할당
        • 예: 디스크 같은 직접접근 저장장치
        • 스케줄링 기법 필요
      • 가상장치
        • 전용장치를 가상의 공용장치처럼 보이게 함
        • 디스크 같은 공용장치를 이용
        • 예: 스풀링을 적용한 플로터 등
  • 장치의 구성
    • 논리적 구성
      • 사용자 <-> 응용 프로그램 <-> 운영체제 <-> 하드웨어(장치, 장치제어기)
        • 장치제어기(하드웨어)
          • 장치를 직접적으로 다루는 전자장치
          • 장치에서 발생하는 각종 데이터를 전다적인 신호로 변환하여 운영체제로 보냄
          • 운영체제가 요청하는 명령을 받아 장치를 구동
          • 운영체제가 보내는 출력을 장치에 맞게 변환
        • 장치드라이버(운영체제 - 소프트웨어)
          • 응용프로그램의 입출력 요청을 해당 장치에 맞도록 변환
          • 장치의 종류나 제조사에 따라 장치제어기가 이해하는 명령어나 명령의 종류가 다를 수 있기 때문
          • 보통 장치 제조사에서 해당 장치의 드라이버도 같이 제공
    • 물리적 구성
      • 버스(bus) 
        • 메모리
        • CPU
          • 장치제어기 내의 레지스터를 활용
          • 장치의 상태 확인(읽기), 장치에 명령(쓰기)
          • 통신: 입출력 명령, 메모리 사상 입출력
        • 장치제어기, 장치(여러개)
  • 입출력 처리 유형
    • 입출력 처리
      • 프로세스가 진행하며 입출력이 발생하는 경우
      • 프로그램 방법
        • CPU만을 이용하여 입출력을 처리
        • 폴링 이용
          • CPU가 입출력장치의 상태를 지속적으로 확인하며 원하는 상태가 될 때까지 기다리는 것
        • 예: repeat while State(프린터) != 가용 do Skip; 한줄 인쇄; until 10줄 인쇄 완료;
        • 단점: 비효율적 - CPU의 낭비가 심함 
      • 인터럽트 방법
        • 인터럽트를 이용하여 입출력을 처리
          • 인터럽트(interrupt) 
            • 어떤 장치가 다른 장치의 작업을 잠시 중단시키고 자신의 상태를 알리는 기능
        • 프로세스를 대기상태로 보내고 인터럽트가 발생할 떄까지 CPU는 다른 작업을 하면 됨
        • 처리과정
          • 입출력장치가 가용한 상태가 되었다고 인터럽트 제어기에 신호를 보냄
          • 인터럽트 제어기는 CPU에 인터럽트 신호를 보냄
          • CPU는 현재 실행 중이던 명령만 마친 후 즉시 인터럽트에 응답
          • 인터럽트 제어기는 이벤트 대상에 대한 정보를 CPU에게 보냄
          • CPU는 현재 상태를 보관하고 필요한 입출력 처리를 한 후 원래 프로세스 실행상태로 복귀
      • DMA 방법
        • DMA제어기를 이용하여 입출력을 처리
          • DMA(Direct Memory Access)
            • CPU를 통하지 않고 직접 메모리에 접근
        • 프로세스를 대기상태로 보내고 인터럽트가 발생할 때까지 CPU는 다른 작업을 하면 됨
        • 한 번에 입출력 양이 많은 경우에도 한 번의 인터럽트만 발생(CPU의 효율 증대)
        • 처리과정
          • CPU는 입출력에 필요한 정보를 DMA 제어기에 넘김
          • [반복] DMA 제어기는 소스에서 목적지로 데이터를 보내도록 장치제어기에 요청
          • 원하는 양의 입출력이 끝나면 DMA 제어기는 인터럽트 제어기에 신호를 보냄
          • 인터럽트를 발생시켜 CPU에게 입출력 작업이 모두 끝났음을 알림
        • 문제 및 해결
          • CPU와 DMA 제어기가 동시에 메모리 액세스를 시도하면 충돌 발생
          • 사이클 스틸링(cycle stealing)
            • CPU보다 DMA 제어기에 우선권 부여
            • 즉, CPU로부터 메모리 사이클을 훔쳐 내는 것
  • 입출력 관리
    • 버퍼링
      • CPU의 데이터 처리 속도와 입출력장치의 데이터 전송 속도의 차이로 인한 문제를 버퍼를 통해 해결
      • 버퍼
        • 입출력 데이터 등의 정보를 전송할 떄 일시적 데이터 저장 장소로 사용되는 메모리의 일부
      • 단일 버퍼링
        • 프로세스 <- 버퍼 <- I/O 장치
        • 쓰기와 읽기가 동시에 되지않아 비효율적
      • 이중 버퍼링
        • 프로세스 <- 버퍼1, 버퍼2 <- I/O 장치
        • 서로 다른 버퍼를 사용하여 쓰기와 읽기를 동시에 할 수 있게 함
        • 여전히 속도차이로 대기가 발생할 수도 있음
      • 순환 버퍼링
        • 프로세스 <- 버퍼1, 버퍼2, 버퍼3 <- I/O 장치
    • 스풀링
      • 입출력 프로세스와 저속 입출력장치 사이의 데이터 전송을 자기 디스크와 같은 고속 장치를 통하도록 하는 것(일종의 버퍼링)
      • 입출력 작업이 빨리 끝나게 할 수 있음
      • 전용장치를 가상장치로 변화시켜 줌
        • 프로세스 -> 자기디스크 -> I/O 장치

'운영체제' 카테고리의 다른 글

[운영체제] 페이지 교체  (0) 2021.05.04
[운영체제] 가상메모리  (0) 2021.05.03
[운영체제] 메모리 관리  (0) 2021.05.01
[운영체제] 교착상태  (0) 2021.04.15
[운영체제] 교착상태  (0) 2021.04.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함