본문 바로가기

컴퓨터와 보안/OS(운영체제)

william stallings OS(운영체제) Chapter 11 문제풀이

11.1 입출력 실행을 위한 3가지 기술을 나열하고 간단히 정의하시오.

프로그램된 입출력(Programmed I/O): 처리기는 프로세스를 대신하여 입출력 모듈에게 입출력 명령을 보낸다. 이 경우 해당 프로세스는 진행을 멈추고 요청된 입출력 작업이 완료될 때까지 바쁜 대기(busy wait) 상태에 놓인다.

인터럽트 구동 입출력(Interrupt-driven I/O): 처리기는 한 프로세스를 대신하여 입출력 명령을 보낸다. 여기에 두 가지 가능성이 있다. 프로세스의 입출력 명령이 비블록형인 경우, 처리기는 명령을 내린 프로세스의 명령어를 계속 실행한다. 입출력 명령이 블록형인 경우, 처리기는 운영체제의 명령을 실행하는데, 이 명령은 현 프로세스를 블록상태로 전이시키고 다른 프로세스를 스케줄한다.

직접 메모리 접근(DMA: Direct memory access): DMA 모듈은 주기억장치와 입출력 모듈간의 데이터 교환을 제어한다. 처리기는 DMA 모듈에게 데이터 블록의 전송을 요청하고, 전체 블록이 전송된 후에만 인터럽트 당한다.

 

11.2 논리적 입출력과 장치 입출력의 차이점은 무엇인가.

논리적 입출력: 장치를 논리적 자원으로 취급하며, 실제로 장치를 제어하는 세부 사항들은 관심두지 않는다. 논리적 입출력 모듈은 사용자 프로세스를 대신해서 일반적인 입출력 기능들을 관리하는 데, 사용자프로세스가 장치 식별자와 열기, 닫기, 읽기, 쓰기와 같은 간단한 명령들로 장치를 접근할 수 있게 한다.

장치 입출력: 요청된 연산과 데이터는 해당하는 입출력 명령, 그리고 제어기 명령으로 변환된다. 이용률을 높이기 위해 버퍼링 기법이 사용되기도 한다.

 

11.3 블록형 장치와 스트림형 장치의 차이점은 무엇인가? 각 장치의 예를 들어보라.

블록형 장치는 정보를 대개 고정 크기를 가지는 블록 형태로 저장한다. 그리고 전송은 한 번에 하나의 블록단위로 이루어진다. 일반적으로 데이터는 블록 번호로 참조된다. 디스크와 USB 플래시 드라이브가 대표적인 블록형 장치들이다.

스트림형 장치는 데이터를 별도의 블록구조 없이 바이트 스트림으로 전송한다. 단말기, 프린터, 통신 포트, 마우스나 그 밖의 다른 포인팅 장치들, 그리고 보조기억장치가 아닌 장치들 대부분이 스트림형 장치이다.

 

 

11.4 입출력을 위해서 단일 버퍼보다 이중 버퍼를 이용할 때 성능향상이 있다고 기대하는 이유는 무엇인가?

블록형 전송 방식의 경우 단일 버퍼일 때 실행 시간은 MAX[C, T] + M 이 되지만 이중 버퍼일 때 실행시간은 대략 MAX[C,T] 이다. 이 때 ‘M’은 데이터를 시스템 버퍼에서 사용자 메모리로 이동하는데 걸리는 시간인데, 이는 양수이므로 단일 버퍼보다 이중 버퍼를 사용할 때 블록형 전송 방식에서는 성능향상이 있음을 기대할 수 있다.

 

11.5 버퍼의 활용에 대해 기술하시오.

버퍼링은 입출력 요구가 한 순간에 몰리지 않도록 평탄하게 조절하는 기술이다. 하지만 프로세스 평균 요청의 속도가 입출력 장치가 서비스 해줄 수 있는 속도보다 크면, 아무리 많은 버퍼를 사용하더라도 입출력 장치는 프로세스의 보조를 맞출 수 없다. 다중 버퍼를 사용하더라도 결국엔 버퍼가 모두 채워지게 되고, 그렇게 되면 프로세스는 각각의 데이터가 처리될 때까지 기다려야만 한다. 그러나 멀티프로그래밍 환경에서 서비스해야 할 다양한 입출력 활동과 다양한 프로세스 활동이 존재하는 경우, 버퍼링은 운영체제의 효율성과 각 프로세스의 성능을 향상시킬 수 있는 하나의 도구가 된다.

 

11.6 그림 11.7에서 보여준 디스크 스케줄링 정책들에 대해 간단히 정의하시오.

선입선출(FIFO): 큐의 항목을 순차적으로 처리한다.

최단 서비스시간 우선(SSTF): 현재 위치에서 디스크 헤드의 움직임을 최소로 하는 디스크 입출력 요청을 선택한다.

스캔(scan): 헤드는 오직 한 방향으로만 이동하여 이동 방향에 대기하고 있는 모든 요청들을 만족시킨다. 한 방향으로의 이동은 이동 방향의 마지막 트랙에 도달하거나 그 방향으로 남아 있는 요청이 없을 때까지 계속된다. 한 방향으로의 이동이 끝나면 반대방향으로 진행한다.

C-SCAN: 오직 한 방향으로 이동하는 건 스캔과 동일하나 마지막 트랙을 만나면, 디스크의 반대쪽으로 되돌아가서 다시 스캔을 시작한다.

 

11.7 하드웨어 RAID와 소프트웨어 RAID의 차이점을 구현 관점에서 설명하시오.

소프트웨어 기반 RAID에서 Array 관리 기능은 운영 체제와 같이 호스트 환경에서 실행되는 소프트웨어에 의해 구현된다. 하지만 하드웨어 기반 RAID에서 Array관리 기능은 RAID 컨트롤러 내부의 하드웨어 및 펌웨어에 의해 구현된다.

 

11.8 Linux 엘리베이터는 무엇인가? 이 방식과 연관된 문제점을 지적하시오.

엘리베이터 스케줄러는 디스크 읽기와 쓰기 요청을 위해 하나의 큐를 유지하고 큐에서 정렬과 합병 기능을 수행한다. 일반적으로 엘리베이터 스케줄러는 블록 번호를 기준으로 정렬된 요청 리스트를 유지한다. 따라서 디스크 요청이 처리될 대 드라이브는 한 방향으로만 움직이면서 만나게 되는 요청을 수행한다.

엘리베이터 알고리즘에는 두 가지 문제점이 있다. 하나는 현재 헤드의 위치에서 멀리 떨어진 블록에 대한 요청은 큐가 동적으로 갱신되기 때문에 상당 시간동안 지연될 수 있다는 점이다.

또한 크기가 큰 파일을 디스크에 저장하기 위한 작업과 연관된 요청은 상당 시간 동안 읽기 요청을 막을 수 있고 프로세스를 블록시킨다.