반응형
컴퓨터 시스템(Computer System) 구성
- 공통 버스에 의해 연결된 여러 개의 장치 제어기 + 하나 이상의 CPU로 구성
- CPU와 장치 제어기 : 메모리 사이클을 얻기 위해 서로 경쟁하면서 병행 수행
- 각 장치 제어기
: 특정 장치(ex)디스크 드라이브, 오디오 장치, 비디오 디스플레이 등)를 관리
: 자신만의‘ 로컬버퍼’(LocalBuffer)를 가지고 있음 (필요한 내용들을 저장하는 용도) - 메모리제어기 : 공유 메모리에 대한 질서 있는 접근을 보장하기 위해서 제공
- 제어기는 인터럽트를 시스템 버스를 통해 실행 -> 인터럽트 구동식 컴퓨터(Interrupt Driven Computer)
Common Functions of Interrupts
- 인터럽트(Interrupt) : 적절한 서비스 루틴(ISR)으로 제어를 전달
- 인터럽트가 요청되면, 인터럽트서비스 루틴(ISR)의 주소를 제공하기 위해 인터럽트 벡터를 사용
- 인터럽트 벡터 : ISR에 대한 주소 배열을 가짐
-> 인터럽트 벡터가 인터럽트 요청과 함께 주어진 고유의 장치 번호로 색인됨 - 트랩(Trap) or 예외(Exception)
: 오류(0으로 나누기 또는 유효하지 않은 메모리 접근)
:사용자 프로그램의 운영체제 서비스 요청에 의해서 유발되는 SW에 의해 생성
- 운영체제: 인터럽트구동(InterruptDriven)
Interrupt Handling
CPU : 메모리 내에 있는 사용자 프로그램 실행중
- 인터럽트 요청을 받음
- 현재 수행 중인 명령 완료
- 현재 수행 중인 프로그램 일시 중단
- 수행 중인 프로그램의 상태(프로그램이 사용한 모든 레지스터, PC 등) 안전한 장소에 저장
- 인터럽트 처리 루틴을 수행 ( 인터럽트 원인을 찾아냄 -> 해당 table에서 인터럽트 서비스 루틴(ISR) (인터럽트 핸들러)수행)
- 인터럽트 원인을 판별하는 방법
- 폴링(Polling) : 1개씩 물어보는 방법
- 인터럽트 벡터(Vectored Interrupt) 방식 : ISR의 수행을 통해 조치를 취함
- 인터럽트 원인을 판별하는 방법
- 다시 인터럽트 처리 기능을 이용하여 미리 보존한 프로그램의 상태를 복구
- 인터럽트 당한 프로그램을 중단된 곳에서부터 다시 계속 실행할 수 있도록 조치
입출력을 처리하는 구조(I/O Structure)
1. 동기식(Synchronous) 입출력
: I/O가 시작된 후, 제어는 I/O 완료에 의해서만 사용자 프로그램으로 반환
- 다음 인터럽트가 발생할 때까지 CPU를 쉬게 하는 특수한 ‘대기’(Wait) 명령 존재(Busy-wait)
-> 그러한 명령이 없는 경우, 대기 루프(Wait Loop)로 대신함 - 항상 수행중인 입·출력 요청이 최대 1개 -> 여러 장치에 의한 동시 I/O 불가능 -> 인터럽트를 걸고 있는 장치가 명확함
- 병행 I/O과 연산의 중복이 불가능
2. 비동기식(Asynchronous) 입출력
: I/O가 시작된 후, 제어는 I/O 완료를 기다리는 것 없이 바로 사용자 프로그램으로 반환
- 사용자 프로그램이 원할 경우, I/O 종료를 기다리도록 하는 시스템 호출 필요(Block 명령어)
-> OS : 어떤 장치가 어떤 인터럽트를 보냈는지 기록하기 위해 장치 상태 테이블(장치 타입, 장치 주소와 상태)사용 - I/O 장치 : 서비스가 필요할 때 인터럽트를 발생
- OS
: 각 장치를 위해 대기 큐를 유지
: 장치 상태를 결정하기 위해 I/O 장치 테이블로 색인하고, 테이블 항이 인터럽트 발생을 반영하도록 변경
만약, 이 장치를 위해 큐에서 기다리고 있는 추가적인 요청이 있을 경우 : 다음 요청을 처리 - CPU : 인터럽트가 끝날 때까지 계속 기다리지 X, 인터럽트 신호가 왔다는 것만 인지하고 자기가 하던 일을 곧바로 계속할 수 O.
정리
동기식 입출력 : 누가 인터럽트를 걸었는지 명확하게 알 수 있는 I/O방식
비동기식 입출력 : 인터럽트를 처리하기 위해서 기다리는 게 아니라 곧바로 제어권이 CPU에 오는 것. -> 곧바로 자기가 하던 일을 할 수 있음. -> 누군가 또 인터럽트를 걸 수 O (여러 개의 인터럽트 가능)
Direct Memory Access(DMA) Structure
컴퓨터를 구성하는 구성요소들 중 가장 속도가 느린 장치 : I/O장치 -> 입출력의 속도를 높이고자 하는 시스템 도입 : DMA
- 고속의 I/O 장치를 위해 사용
- DMA 제어기 : I/O 장치를 도와주기 위해 버퍼, 포인터, 카운터 설정
- 장치 제어기 : 전체 data 블록을 CPU 간섭 없이 직접 Memory와 Buffer 저장 장치 사이에 블록 단위로 전송
- 저속의 장치처럼 Byte(혹은 워드)당 하나의 인터럽트를 발생 X, 블록 마다 하나의 인터럽트를 발생
- 일반적으로 메모리는 한 순간에 1개의 워드만을 전송할 수 있기 때문에 DMA 제어기는 CPU로부터 메모리 사이클을 훔치게 됨
- DMA 전송이 진행되는 동안 CPU 실행을 느리게 만들 수 O. (CPU의 시간을 훔침 -> CPU : 사용자 프로그램 사용 X)
-> 사이클 스틸링(Cycle Stealing)
- DMA 전송이 진행되는 동안 CPU 실행을 느리게 만들 수 O. (CPU의 시간을 훔침 -> CPU : 사용자 프로그램 사용 X)
저장장치(Storage Structure)
주기억장치(Main Memory)
- CPU가 직접 접근할 수 있는 유일한 대용량 저장 장치
- DRAM이라 불리는 반도체 기술로 구현 (임의 접근, 휘발성)
보조 기억장치(Secondary Storage)
- 메인 메모리의 확장
- 대량의 data를 영구 보존 가능(비휘발성)
하드 디스크(Hard Disks)
- 각 디스크의 플래터(Platter) : CD처럼 생긴 원형의 평판 모양, 플래터 양쪽 표면 : 자기 물질로 덮여 있음
- 플래터 표면은 원형인 트랙 (Tracks)들로 논리적으로 나뉨
- 이것은 다시‘섹터’(Sectors)들로 다시 나뉨
- 하나의 암. 위치에 있는 트랙 집합 : 하나의‘실린더’(Cylinders)를 형성
- 디스크 제어기는 저장 장치에 내장되어, 장치와 컴퓨터 간의 논리적인 상호 동작을 결정하며, 보통 내장된 캐시를 가지고 있음
SSD(Solid-stateDisks)
- 하드 디스크 보다 더 빠름
- 더욱 대중적으로 사용될 것
Storage Hierarchy(저장소의 계층구조)
저장 장치 시스템은 계층적으로 구성됨
- 속도(Speed)
- 비용(Cost)
- 휘발성(Volatility)
장치 드라이버(DeviceDriver)
: 장치 컨트롤러와 커널 간의 일정한 인터페이스를 제공
<계층 구조>
Performance of Various Levels of Storage
: 컴퓨터 시스템에서 저장장치 시스템의 넓은 다양성은 속도와 가격에 따라서 하나의 계층으로 구성될 수 있음
• 상위 수준은 가격이 비싸지만 빠름
• 하위 수준은 갈수록 비트당 비용은 감소하며, 접근 시간은 증가
캐싱(Caching)
- 최근에 사용된 Data를 유지하도록 보다 빠른 저장 장치에 복사하는 것
- 중요한 기법으로 컴퓨터에서 여러 단계에서 실행 (H/W, OS, S/W)
- 느린 저장 장치로부터 좀 더 빠른 저장장치로 임시적으로 복사되는 정보
- 정보가 거기에 있는지, 없는지를 결정하기 위해서 좀더 빠른 저장장치(캐시)를 검사함
- 만약 존재 O : 캐시로부터 곧바로 정보가 사용됨(빠름)
- 만약 존재 X : 캐시로 Data를 복사하고 캐시로부터 Data를 사용
- 캐시 관리 : 설계의 중요한 문제
- 캐시 크기와 교체 정책을 잘 선택하면, 모든 접근의 80 ~ 99%를 캐시에서 얻을 수 있어 높은 성능을 얻게 됨
Migration of Integer A from Disk to Register
- 캐시일관성 문제 (멀티태스킹 환경에서) (= data 일관성 문제)
: 복사본이 동시에 여러 저장장치에 존재할 수 있음
-> A값이 갱신될 경우, A가 존재하는 모든 저장장치에 즉각적으로 반영되어야 함 - 분산 시스템 환경에서는 더욱 복잡함 (이유 : 여러 개의 데이터 복사본들이 존재 )
- 수정사항 반영 방법
- Write-through cache 방법 : 데이터가 변경이 되면 즉시 바꿔줌
- Write-back cache 방법
반응형