운영 체제 5 - 입력 및 출력 시스템

이 블로그 시리즈는 심천 대학 운영 체제 과정의 핵심 내용과 "컴퓨터 운영 체제" 참고 문헌을 분류하는 데 중점을 둡니다. 사신).


 

개요

이 블로그는 주로 운영 체제 6장에서 입력 및 출력 시스템 관련 지식을 소개합니다.

목차

1. I/O(입출력) 시스템

1. 개요

2. I/O 장치 및 장치 컨트롤러

3.I/O 통도

4. I/O 제어 방식

2. 버퍼 관리

3. 장비 할당

4. 사용자 수준의 I/O 소프트웨어 - 스풀링 시스템

5. 디스크 스토리지 관리

1. 개요

1.1 구조 및 데이터

1.2 디스크 액세스 시간

2. 디스크 스케줄링 알고리즘

2.1 선착순(FCFS)

2.2 최단 탐색 시간 우선(SSTF)

2.3 스캔 스케줄링 알고리즘(SCAN)

2.4 순환 스캔 스케줄링 알고리즘(CSCAN)

2.5 디스크 스케줄링 알고리즘의 예

3. 추가 지식


1. I/O(입출력) 시스템

입/출력 시스템(입/출력) 시스템 관리의 주요 대상은 I/O 장치 및 해당 장치 컨트롤러이며 주요 기능은 사용자의 I/O 요청을 완료하고 I/O 속도를 높이고 개선하는 것 입니다. 장치의 활용 .

1. 개요

I/O 소프트웨어는 광범위한 측면을 포함합니다.하위로는 하드웨어와 밀접하게 관련되어 있으며 위로는 파일 시스템, 가상 메모리 시스템 및 사용자와 직접 상호 작용합니다.오늘날 주류 솔루션은 계층적 I/O 시스템으로, 하위 계층을 사용합니다. 입력을 완료하기 위한 레벨 서비스 기능을 내보내고 상위 계층에 서비스를 제공하는 하위 기능 .

그 중 I/O 시스템의 각 모듈을 계층적으로 보면 다음과 같다.

2. I/O 장치 및 장치 컨트롤러

I/O 장치는 일반적으로 I/O 동작을 수행하는 기계 부품과 제어 I/O를 수행하는 전자 부품으로 구성됩니다. 전자는 I/O 장치이고 후자는 장치 컨트롤러 또는 어댑터입니다 . 마이크로컴퓨터 및 미니컴퓨터의 컨트롤러는 종종 인쇄 회로 카드 형태로 만들어지므로 컴퓨터의 확장 슬롯에 삽입할 수 있는 제어 카드, 인터페이스 카드 또는 네트워크 카드라고도 합니다. 일부 대형 및 중형 컴퓨터 시스템에서는 I/O 채널 또는 I/O 프로세서도 구성됩니다.

다음과 같은 많은 I/O 장치 분류가 있습니다.

  • 사용 특성에 따른 분류 : ①저장장치(외장메모리 : 대용량, 저속) ②I/O장치(입/출력/대화형 장치, 키보드 마우스 스캐너/디스플레이)
  • 전송속도에 따른 분류 : ① 저속기기 ② 중속기기 ③ 고속기기 

일반적으로 장치는 CPU와 직접 통신하지 않고 장치 컨트롤러를 통해 통신합니다.

장치 컨트롤러의 주요 기능은 하나 이상의 I/O 장치를 제어하고 I/O 장치와 컴퓨터(CPU) 간의 데이터 교환을 용이하게 하는 것 입니다 . 장치 컨트롤러는 다음으로 구성됩니다.

3.I/O 통도

CPU와 I/O 장치 사이에 장치 컨트롤러가 추가되더라도 I/O에 대한 CPU의 개입을 크게 줄일 수 있지만 호스트가 많은 주변 장치로 구성되면 여전히 CPU에 대한 부담이 큽니다. 이러한 이유로 CPU와 디바이스 컨트롤러 사이에 I/O 채널 (I/O Channel) 이 추가된다. 주요 목적은 독립적인 I/O 작업을 설정하는 것입니다.

I/O 채널은 I/O 명령을 실행할 수 있는 특수 프로세서이며 채널(I/O) 프로그램을 실행하여 I/O 작업을 제어합니다 .

1. 명령어 유형이 단일이며 주로 I/O 작업과 관련된 명령어로 제한됩니다.

2. 자체 메모리가 없으면 채널 프로그램이 호스트 메모리에 배치됩니다.

따라서 I/O 채널에 "병목 현상" 문제가 발생합니다. 채널의 높은 가격은 적은 수로 이어져 I/O 작업을 제한하고 시스템 처리량을 줄입니다 . 아래 그림과 같이 디바이스 4를 시작하려면 채널 1과 컨트롤러 2를 시작해야 합니다. 이미 다른 디바이스가 점유하고 있으면 시작하지 못합니다. 

주요 솔루션은 다음과 같은 다중 채널 I/O 시스템 입니다 .

"병목 현상" 문제를 해결할 뿐만 아니라 시스템의 안정성도 향상시킵니다.

4. I/O 제어 방식

I/O 장치 제어 방법의 경우 개발 프로세스는 주로 폴링 프로그램에서 인터럽트, DMA 컨트롤러, 채널에 이르기까지 다양 합니다 . 개발의 핵심 목적은 더 많은 데이터 처리 작업을 완료할 수 있도록 호스트의 I/O 제어 개입을 줄이는 것 입니다 .

  • 폴링 프로그래밍 가능 I/O 모드: 입력 및 출력 시 사용 중 상태 비트가 1로 설정되고 테스트가 연속 주기로 완료되므로 CPU가 많이 낭비됩니다.
  • 인터럽트를 사용하는 프로그래밍 가능한 I/O 모드: CPU와 I/O 장치는 병렬로 작동하며 CPU는 데이터를 입력한 후 매번 인터럽트하는 데 약간의 시간을 소비합니다.
  • 직접 메모리 액세스 모드: 인터럽트 I/O 모드는 바이트(바이트) 단위로 개입하므로 블록 장치에 매우 비효율적입니다. 따라서 DMA 컨트롤러를 도입하였으며 구성은 다음과 같다.

  • I/O 채널 제어 방법: 데이터 블록에 대한 읽기 및 쓰기 개입을 데이터 블록 그룹에 대한 읽기 및 쓰기 개입으로 줄입니다.  

I/O 채널 제어 방법의 핵심 구현은 채널 프로그램을 통해 I/O 장치 제어를 완료하는 것입니다.채널 프로그램은 일반적으로 다음 정보를 포함합니다.

(1) 동작: 읽기, 쓰기 (2) P: 채널 종료 비트: P=1은 이 명령이 채널 프로그램의 마지막 명령임을 의미합니다. (3) R: 기록 종료 비트: R=1은 이것이 채널 프로그램에 대한 마지막 명령임을 의미합니다. 특정 레코드 처리 하나의 명령 (4) 개수: 이 명령으로 읽고 쓸 바이트 수를 나타냅니다. (5) 메모리 주소: 문자가 메모리로 전송되는 첫 번째 주소를 나타냅니다.

위의 예에는 3개의 레코드가 포함되어 있으며, 1-3개의 명령어는 1개의 레코드, 4는 1개, 5-6은 1개입니다(R 참조).

2. 버퍼 관리

최신 운영 체제에서 거의 모든 I/O 장치는 CPU와 데이터를 교환할 때 버퍼를 사용합니다. 일반적으로 하드웨어 레지스터 또는 메모리(더 일반적으로)로 구성된 저장 영역입니다. 

버퍼링 도입의 주된 이유는 다음과 같습니다.

  • CPU와 I/O 장치 간의 속도 불일치 완화: 생산자는 소비자가 준비될 때까지 기다리지 않고 데이터를 버퍼로 출력할 수 있습니다.
  • CPU의 인터럽트 빈도를 줄이고 CPU 인터럽트 응답 시간에 대한 제한을 완화합니다.다음 예에서 (a) 100us마다 인터럽트 및 응답, (b) 인터럽트 빈도를 1/8로 줄일 수 있고 ( c) 응답 시간을 1/8로 줄일 수 있습니다.

  • CPU와 I/O 장치 간의 병렬 처리 증가

1. 단일 버퍼: 

하나의 I/O 요청 하나의 버퍼

실행 주기: Max(C, T) + M

2. 이중 버퍼: 

소비자가 버퍼 데이터를 가져가지 않으면 생산자는 새 데이터를 넣을 수 없으므로 이중 버퍼가 도입됩니다.

작동 주기: 최대(C+M, T)

C+M<T: 호스트가 빠르고 호스트가 대기하며 디스크가 계속해서 입력

3. 장비 할당

전용 장비의 할당을 실현하기 위해 시스템은 해당 데이터 구조인 DCT(Device Control Table)를 구성해야 합니다 .

컨트롤러 제어 테이블, 채널 제어 테이블 및 시스템 장비 테이블 간의 비교는 다음과 같습니다.

단일 채널 시스템의 장치 할당 프로세스는 다음과 같습니다.

4. 사용자 수준의 I/O 소프트웨어 - 스풀링 시스템

사용자 수준 I/O 소프트웨어에서는 커널 외부에서 완전히 실행되는 스풀링 시스템이 필요합니다. 스풀링 시스템(기술)을 통해 하나의 물리적 I/O 장치를 여러 사용자가 공유할 수 있는 여러 개의 논리적 I/O 장치로 가상화할 수 있습니다

SPOOLing 기술의 핵심은 I/O를 담당하는 시스템의 두 프로세스, I/O 주변 장치의 기능 시뮬레이션 및 오프라인 입/출력 실현(거짓)입니다.

시스템 구성은 다음과 같습니다.

1. 입력 및 출력 우물:

디스크에 두 개의 큰 저장 공간이 열렸습니다.

  • 입력 웰은 오프라인 입력을 시뮬레이션하기 위한 디스크로 I/O 장치에서 입력된 데이터를 저장하는 데 사용됩니다.
  • 출력 웰은 사용자 프로세스의 출력 데이터를 저장하는 데 사용되는 오프라인 출력 시뮬레이션용 디스크입니다. 

2. 입력 버퍼 및 출력 버퍼: 

CPU와 디스크 사이의 속도 불일치 사이의 모순을 완화하기 위해 두 개의 버퍼가 메모리에서 열립니다. 

  • 입력 버퍼는 입력 장치에서 보낸 데이터를 입력 웰로 보내기 전에 임시로 저장하는 데 사용됩니다.
  • 출력 버퍼는 출력 장치로 보내기 전에 출력 웰에서 보낸 데이터를 임시로 저장하는 데 사용됩니다.

3. 입력 프로세스 SPi 및 출력 프로세스 SPo: 

  • 입력 프로세스 SPi는 오프라인 입력 중에 주변 제어 시스템을 시뮬레이션하고 입력 버퍼를 통해 입력 장치에서 입력 웰로 사용자가 입력한 데이터를 보냅니다.
  • 출력 프로세스 SPo는 오프라인 출력 중에 주변 제어 시스템을 시뮬레이션하고 사용자가 필요로 하는 출력 데이터를 출력 웰에서 출력 버퍼를 통해 출력 장치로 보냅니다.

시스템 기능은 다음과 같습니다.

  • I/O 속도 증가
  • 독점 장치를 공유 장치로 변환
  • 가상 디바이스 기능 구현 

5. 디스크 스토리지 관리

디스크 저장소는 컴퓨터 시스템에서 가장 중요한 저장 장치로 많은 수의 파일이 저장되며 파일 읽기 및 쓰기에는 디스크에 대한 액세스가 포함됩니다.

1. 개요

1.1 구조 및 데이터

디스크 구조는 다음과 같습니다.

1. 디스크의 구성:

  • 디스크는 여러 개의 플래터로 구성됩니다.
  • 각 디스크는 두 개의 디스크로 나뉩니다.
  • 각 디스크는 여러 트랙(동심원)으로 나뉩니다.
  • 각 트랙은 여러 섹터로 나뉩니다.

2: 디스크 주소 지정: 헤드 - 실린더 - 섹터

  • 헤드 헤드: 첫 번째 디스크의 앞 또는 뒤
  • 실린더 실린더: 어떤 트랙
  • 섹터: 트랙의 파티션 번호 

섹터(Sector) 데이터 구조는 주로 (1) 식별자 필드(ID Field), (2) 데이터 필드(Data Field)를 포함한다.

디스크에는 두 가지 유형이 있습니다.

  • 고정 헤드 디스크에는 트랙당 하나의 읽기/쓰기 헤드가 있으며 모두 견고한 암에 장착되어 있습니다. 자기 헤드 병렬 읽기/쓰기, 빠른 I/O 속도, 대용량 디스크에 사용
  • 헤드 디스크 이동, 각 디스크에는 헤드가 하나만 장착되어 있으며 헤드를 이동하여 탐색할 수 있습니다. I/O 속도가 느리고 구조가 단순하여 중소형 디스크 장치에 널리 사용됨 

1.2 디스크 액세스 시간

읽거나 쓰려면 자기 헤드가 지정된 트랙으로 이동하고 지정된 섹터가 자기 헤드 아래에서 회전할 때까지 기다린 다음 데이터를 읽거나 쓰므로 디스크 액세스 시간을 세 부분으로 나눌 수 있습니다.

1. 탐색 시간 Ts: 헤드가 지정된 트랙으로 이동하는 데 걸리는 시간

마그네틱 암의 시작 시간 s와 헤드가 n 트랙을 이동하는 데 걸리는 시간의 합             

TS=m×n+s

팁: m은 디스크 드라이브의 속도와 관련된 상수입니다. 일반 디스크의 경우 m=0.2, 고속 디스크의 경우 m≤0.1입니다. 자기 암의 시작 시간 s는 약 2ms입니다. . 일반 탐색 시간 5~30ms

2. 회전 지연 시간 Tτ: 섹터가 자기 헤드 아래로 이동하는 데 걸리는 시간

5400rpm 하드 디스크, 즉 5400r/min, 1회전당 11.1ms, 평균 회전 지연 시간 Tτ는 5.55ms

3. 전송 시간 Tt: 디스크에서 데이터를 읽거나 디스크에 씁니다.

b는 매번 읽거나 쓰는 바이트 수와 관련이 있으며 회전 속도는 r은 디스크의 초당 회전 수이고 N은 트랙의 바이트 수입니다. 

섹터 수를 알고 있는 경우 Tt = 1/r*섹터 수 

4. 총 액세스 시간 Ta:

한 번에 읽거나 쓰는 바이트 수가 트랙 절반의 바이트 수와 같을 때 총 시간은 다음과 같습니다.

팁: 전송 시간의 비율이 낮습니다. 

 예

디스크 속도가 7200rpm인 경우 평균 탐색 시간은 8ms이며 각 디스크는

운영 체제--디스크 스케줄링 주제_디스크 속도가 6000rpm이면 트랙당 1000섹터 포함_real_metrix의 블로그-CSDN 블로그

2. 디스크 스케줄링 알고리즘

1. 디스크 I/O 속도를 향상시키는 방법:

디스크 하드웨어 성능 향상 우수한 스케줄링 알고리즘을 사용하여 디스크 고속 버퍼 설정

2. 디스크 스케줄링:

디스크는 여러 프로세스가 액세스할 수 있는 공유 장치이므로 디스크 스케줄링 알고리즘이 필요합니다.

디스크 스케줄링 알고리즘 의 목표는 평균 검색 시간을 줄이는 것입니다.

2.1 선착순(FCFS)

코어: 프로세스가 디스크 액세스를 요청하는 순서에 따라 스케줄링

  • 장점: 간단함, 각 요청을 차례로 처리할 수 있음
  • 단점: 평균 탐색 거리가 큼

2.2 최단 탐색 시간 우선(SSTF)

코어: 액세스 트랙이 현재 트랙에 가장 가깝다는 원칙을 기반으로 함(실제로는 우선 순위 기반 스케줄링)

팁: 현재 트랙은 100입니다. 

  • 장점: 평균 탐색 시간이 짧다
  • 단점: 일부 프로세스에서 "기아"가 발생하고 자기 헤드가 오랫동안 동일한 트랙에 머무를 수 있습니다(자기 팔 고착).

2.3 스캔 스케줄링 알고리즘(SCAN)

코어: 자기 헤드의 이동 방향과 액세스 트랙과 현재 트랙 사이의 최단 거리의 두 가지 원칙에 따라

마그네틱 헤드의 이동 방향은..., 바깥쪽, 안쪽, 바깥쪽, ... 항상 반복됩니다. 자기 헤드의 이동 방향은 안쪽입니다.

팁: 현재 트랙은 100이고 방향은 바깥쪽입니다. 

  • 장점: 프로세스 "기아" 현상이 없으며 평균 액세스 탐색 시간이 더 짧습니다.
  • 단점 : 헤드에 가깝지만 헤드의 움직임과 반대방향인 트랙은 대기시간이 길고, 헤드가 같은 트랙에 오래 머무를 수 있음(마그네틱 암 스티킹) 

2.4 순환 스캔 스케줄링 알고리즘(CSCAN)

코어: 가장 바깥쪽 트랙에 도달한 후 가장 작은 트랙으로 돌아가 SCAN 알고리즘을 시작합니다.

팁: 현재 트랙은 100이고 방향은 바깥쪽입니다.  

  • 장점: 프로세스 "굶주림"이 없고, 평균 액세스 탐색 시간이 짧고, 가장 긴 대기 시간이 SCAN보다 짧습니다(절반).
  • 단점: 헤드가 오랫동안 동일한 트랙에 머무를 수 있음(마그네틱 암 고착)

2.5 디스크 스케줄링 알고리즘의 예

디스크 관리 시스템이 있으며 디스크에 액세스하기 위해 대기 중인 현재 요청 시퀀스가 ​​15, 10, 30, 150, 190, 80, 95, 40, 140이라고 가정하고 트랙은 내부에서 외부로 오름차순으로 번호가 매겨집니다. 20. 현재 헤드는 트랙 90에서 중지되었으며 트랙 93에 대한 액세스는 이전에 방금 완료되었습니다. FCFS, SSTF, SCAN 및 CSCAN 알고리즘을 각각 사용하여 각 알고리즘의 스케줄링 시퀀스 및 평균 탐색 거리를 찾으십시오.

운영 체제 - FCFS, SSTF, SCAN 및 CSCAN 알고리즘을 사용하여 총 검색 길이 및 평균 검색 길이 예제(자세히) 계산 - Programmer Sought

FCFS, SSTF, SCAN, CSCAN_scan 알고리즘 예제 OS 디스크 스케줄링 알고리즘 설명

3. 추가 지식

1. 디스크 캐시:

메모리의 저장 공간을 사용하여 디스크에서 읽은 일련의 디스크 블록에 정보를 임시로 저장합니다.

캐시는 논리적으로 디스크에 속하지만 물리적으로 메모리에 상주하는 디스크 블록 집합입니다.

2. 메모리에 있는 두 가지 형태의 캐시:

메모리에 별도의 저장 공간을 디스크 캐시로 열어 크기가 고정되어 있으며 응용 프로그램 수에 영향을 받지 않습니다.

사용하지 않는 모든 메모리 공간을 요청 페이징 시스템과 디스크 캐시가 공유하는 버퍼 풀로 전환

3. 디스크 속도를 높이는 다른 방법:

미리 읽기: 로컬리티 원칙에 따라 사전 페이징 전략과 같이 인접한 디스크 블록을 메모리로 미리 읽습니다.

지연 쓰기: 수정된 페이지를 즉시 디스크에 쓰지 않고 일정량을 누적하여 한 번에 다시 쓸 수 있어 I/O 작업 횟수가 줄어듭니다.

물리적 블록의 분산 최적화: 동일한 파일의 물리적 블록은 최대한 집중되어야 합니다.

가상 디스크: 메모리 공간 또는 기타 저장 매체를 사용하여 메모리 하드 디스크 및 솔리드 스테이트 디스크와 같은 디스크를 에뮬레이션합니다.

추천

출처blog.csdn.net/weixin_51426083/article/details/131458085