2008년 4월 16일 수요일

컴퓨터 구조



1. 입출력시스템

가. 입출력 시스템의 구성 요소

Interface

API(application과 device driver사이)

H/W interface(device driver와 device controller사이)

Device Driver(OS와 Device Controller사이)가 존재

Device Controller: 상태/명령/자료 레지스터를 가지고 있고 buffering수행

Device Driver: API를 통해 접근가능하며 세부사항(controller등)을 숨긴다.

나. 입출력 시스템의 구성

최상위 계층에는 응용프로그램(application)이 있고, 운영체제 커널에는 device driver들이 있다. application은 API를 이용하여 device driver에 접근할 수 있고, device driver는 h/w interface를 통해서 controller에 연결되고, controller는 입출력 장치에 연결된다. 각 device는 controller를 사용하여 data Bus와 address에 연결된다.



2. 인터럽트시스템

1) busy waiting의 CPU낭비를 줄이기 위한 개념

2) controller가 입출력이 끝나면 interrupt를 발생시켜 CPU에게 완료를 알려주고, buffer에 있는 다음 일을 제공한다.


가. 인터럽트 처리루틴

1) 인터럽트가 발생하면 현재 진행 중인 프로세스는 즉시 중단되고 인터럽트를 처리를 하기 위해서 현재의 PC 및 사용하던 register들을 저장한다.

2) 인터럽트 Mask를 설정한다. 상위 우선순위를 가지는 interrupt는 켜고, 하위는 끈다. 인터럽트 Mask를 설정할 때는 interrupt disable상태에서 수행하고, 설정이 끝나면 interrupt enable 상태로 돌려놓는다.

3) interrupt handler로 넘어가 interrupt를 처리한다. (interrupt vector table사용)

4) interrupt 처리가 끝나면 이전에 보존된 register의 내용을 복구하거나 누적된 다른 interrupt를 처리한다. 보존된 register의 내용을 복구할 때도 interrupt disable상태에서 수행한다.


나. Linux의 interrupt

fast interrupt: interrupt handling이 간단하고 쉽다.

        ex. keyboard

slow interrupt: interrupt handling이 길다

        ex. RTC(clock interrupt)

→ 두 부분으로 나누어 처리한다(interrupt 처리는 길지 않아야 하고 최대한 빨리 끝내야 한다).



3. 장치경영(Driver management)

가. 접근방식에 의한 분류

1) 격리형 입출력 방식(isolated I/O): 특수한 입출력 명령어 사용

2) 메모리 사상형 방식(memory-mapped I/O): controller의 register를 특정 메모리에 저장. 메모리에 읽고 쓰는 연산만으로 I/O instruction을 사용할 수 있다. 사용이 용이하고 명령어 개수를 줄일 수 있어 많이 사용한다.

나. 제어방식에 의한 분류

1) Polling: busy waiting방식

2) Interrupt: 입출력이 진행되는 동안 cpu가 다른 일을 수행할 수 있으며 입출력의 효율을 높여주고 전체적으로 시스템 자원의 활용도가 높아진다.

다. 자료전달방식에 의한 분류

DMA와 non-DMA가 있다



4. I/O 프로세스의 처리

동기입출력(synchronous I/O): 다음 명령어 수행에 관련이 있는 I/O는 하고 가야하기 때문에 입출력 완료시까지 대기한다.

비동기입출력(asynchronous I/O): 입출력 완료시까지 기다리지 않고 즉시 return하여 다른일을 수행한다. cpu와 I/O device를 동시에 사용할 수 있다.

I/O Controller의 일

1) I/O가 끝나면 process를 block상태에서 ready상태로 바꿔주고 ready Q에 넣어줌.

2) 하나의 I/O가 끝나면 I/O Queue에서 대기하고 있던 다음 request를 실행하게 한다.



5. 하드웨어에 의한 보호

가. Dual Mode

1) CPU의 등급을 User Mode/Kernel Mode 두 가지로 사용한다.

2) 어떤 instruction은 Kernel Mode에서만 돌아가며 이것을 특권명령어라 한다. (ex. I/O명령어, 메모리 protection설정, fault-cpu stop)

3) 자원보호와 커널보호를 위해 dual mode를 사용한다.

4) 단점: Kernel/User Mode일 때 instruction과 memory영역이 다르다. → overhead발생

5) 임베디드 시스템의 경우 dual mode를 사용하지 않는다. (빠르긴 하지만 디버깅이 힘들다)

6) User Mode에서 Kernel Mode로 전환될 때: system call, interrupt, fault/exception 시

나. Time Slice

1) CPU 독점 방지.

2) clock interrupt가 발생할 때마다 시간을 계산하여 cpu를 나누어 쓴다.

다. 이 외에 메모리보호, I/O보호 등이 있다.

보호mode는 user mode에서만 동작하며 kernel mode에서는 어느 부분도 접근할 수 있다.

ex. segmentation fault 등



6. 기억장치의 계층

Register - Cache - Memory - 자기Disk - 광Disk - 자기Tape

1) 속도, 가격, 용량에 의한 계층

2) 성능개선을 위하여 Cache나 Buffering사용

3) Cache 사용 시, replacement알고리즘 필요

4) 일관성의 문제 발생


출처: 운영체제개념 발췌

댓글 없음:

댓글 쓰기