Presentation is loading. Please wait.

Presentation is loading. Please wait.

제 2장 컴퓨터 구조.

Similar presentations


Presentation on theme: "제 2장 컴퓨터 구조."— Presentation transcript:

1 제 2장 컴퓨터 구조

2 컴퓨터 구조 입출력 시스템 인터럽트 시스템 장치 경영 접근 방식 Buffering 과 Spooling 입출력 프로세스의 처리
하드웨어에 의한 보호 이중 모드 (Dual Mode: Kernel mode & User mode) 입출력, 메모리, CPU 기억 장치 구조

3 Motherboard Video Card (AGP) CPU Memory

4 입출력 시스템 입출력 시스템의 구성

5 I/O 시스템의 구성 인터페이스 API (Application Programmer’s Interface)
응용 프로그램과 kernel에 있는 장치 구동기(driver) 사이 H/W Interface 장치 구동기(driver)와 제어기(controller) 사이 API는 추상화 된 명령 제공 open/close (할당) read/write (입출력) 장치 구동기(Device Driver) 추상화 명령들을 하드웨어 기능으로 번역 HW 인터페이스를 통해서 제어기(Device Controller) 에 전달

6 Device Controller : H/W
상태, 명령 및 자료 레지스터로 구성이 표준화됨 대표적으로, SCSI는 최대 7개의 장치를 제어 입출력은 구동기(driver)와 제어기(controller)의 상호 작용으로 수행 구동기와 제어기 사이의 HW 인터페이스로 작동 입력 요구가 있을 경우 구동기는 먼저 장치의 상태 점검 두 개의 레지스터 busy, done 이 특정 상태의 값을 저장함 Busy 는 입출력 명령이 작동 중인지 여부 표시 Done 은 명령이 완료되었고 자료가 처리됨 입력의 경우 저장 장치에 자료 저장완료 출력의 경우 버퍼에 요청한 자료가 저장됨 H/W buffering 장치 버퍼의 양을 증가시켜 CPU와 입력 연산을 중복 실행

7 Device Driver : S/W 장치 구동기 (Device Driver) 해당 제어기를 조절하여 입출력을 수행
추상화 된 명령을 API를 통해 응용 프로그램에 제공 open/close, read/write 등 장치의 분류에 따라 API는 약간 다름 character device (byte) 와 block device (block) 제공되는 Interface 응용 프로그래머를 위한 API Kernel과 장치 구동기(driver) 사이의 interface *system call 은 저 수준의 명령으로서 사용자가 사용하기 힘 들다. System library는 시스템 프로그램의 집합으로 system call 을 사용하여 보다 상위 수준 또는 사용자가 흔히 사용하는 기능을 구현하여 제공한다. UNIX에서는 이를 programmer interface 와 user interface 로 구별한다.

8 장치 경영 방식 입출력 방식과 제어 방식 입출력을 위해 제어기의 레지스터에 접근할 수 있어야 함
주변장치 접근 방식에 의한 분류 격리형(isolated I/O): 제어기 레지스터 직접 접근 메모리 사상형(memory-mapped I/O): 제어기 레지스터 간접 접근 DMA (Direct Memory Access): 입출력 장치가 메모리에 접근 입출력 완료 점검 (제어) 방법 polling Busy Waiting 방식 입출력 작업이 완료되었는지에 대한 조사를 계속 반복 다른 작업 수행 후 일정 시간 경과 후 제어기 상태를 조사 인터럽트 입출력이 종료되면 driver에게 알리는 방식 입출력 기간동안 CPU가 다른 프로세스에게 할당 가능

9 입출력 완료 점검: (1) Polling 입출력을 CPU가 관리함 입출력 장치의 초기화 입출력 장치의 상태를 확인 YES NO
Polling: CPU가 device의 완료 상태를 수시로 검사함 Busy Waiting 방식 입출력 장치의 초기화 입출력 장치의 상태를 확인 YES NO 처리완료? 다음 입출력 처리

10 자료 저장장치의 접근 속도와 용량 주기억 장치(Main Memory)에 비해 디스크는 속도가 느림

11 입출력 완료 점검: (2) 인터럽트 현재 실행중인 프로그램의 실행을 잠시 멈추고(interrupt)
인터럽트를 발생시킨 디바이스(I/O 장치)의 입출력을 처리

12 Interrupt System 사용 이유 1. 급한 작업을 먼저 처리하도록 우선 순위를 조정함
각 장치별로 우선순위를 두어 상위 작업 처리 요청 시 상위 작업을 먼저 처리하도록 함 clock 처리 > 디스크 > 네트워크 장비 > 키보드 2. CPU와 입출력장치 사이의 자료전송 속도 차이를 극복하기 위함 CPU 처리 속도에 비해 입출력장치는 처리 속도가 매우 늦음 한 작업이 외부 입력을 기다릴 때 입력이 들어왔는지 CPU가 계속 검사하는 경우 CPU가 비효율적으로 사용됨  Busy Waiting 운영체제는 이 작업을 대기 상태로 두어 입력이 들어오면 interrupt 처리를 통해 이 작업에 자료를 전달함 한 작업이 대기 상태에 있는 동안 다른 작업에게 CPU를 할당하여 자원을 효율적으로 사용하도록 함 multiprogramming

13 인터럽트 다 수준 우선 순위 인터럽트 시스템 인터럽트의 처리 인터럽트 처리기 (Interrupt Handler)
1) 인터럽트 발생 시 현재 프로세스는 즉시 중단 2) 나중에 재실행을 위해 현재의 모든 상태(context)를 저장 3) interrupt mask를 설정하여 하위 수준의 interrupt 발생 억제 4) Context의 저장 혹은 mask의 설정 도중에 interrupt가 발생되지 않도록 처리함 5) 저장/설정이 끝나면 현재 인터럽트 처리기를 시작 인터럽트 처리기 (Interrupt Handler) 각 인터럽트를 처리하는 프로그램 (driver) 키보드 입력 처리, 마우스 움직임 처리, 디스크 입출력,… Interrupt Vector Table 장치번호 순으로 연속된 장소에 인터럽트 처리기 시작 주소를 저장 테이블 시작 주소에 장치 번호를 더해 간접 분기하여 handler 실행

14 인터럽트 처리 순서 현재 수행중인 프로그램의 실행을 중지함 인터럽트 불가능 상태로 전환
인터럽트 된 프로그램의 레지스터와 PC 등의 Context를 저장 마스크를 설정해 우선순위가 높은 인터럽트는 발생 시키도록 허용 누적된 인터럽트는 인터럽트 스택에 저장하고, 누적된 인터럽트에 의한 stack overflow를 확인 함 인터럽트 가능 상태로 전환 발생한 인터럽트에 따라 Interrupt Vector Table에서 가리키는 인터럽트 처리기(interrupt handler) 시작위치로 jump 하여 처리기가 실행됨

15 인터럽트 (계속) Interrupt Handler 프로그램 종료 시(입출력 완료됨) 다음에 실행할 프로그램을 결정하기 위해
인터럽트가 없으면 우선 순위가 높은 프로그램 혹은 중단된 프로그램을 다시 실행 어떤 프로그램을 실행할 지 OS의 CPU 스케줄러가 결정 인터럽트 불가능 상태로 전환 다음 실행할 프로그램의 Context를 복원 마스크를 다시 적절한 우선순위의 interrupt가 감지되도록 조정 인터럽트 가능 상태로 전환 CPU 스케줄러에 의해 선정된 프로그램을 실행함

16 Buffering Buffering 주변 장치는 CPU에 비해 작동 속도가 매우 느림
H/W 버퍼링(Buffering): 자료 이전 시 속도 차이를 완화하기 위해서 제어기에 자료 레지스터를 추가함 Buffering: 속도가 느린 주변장치를 바쁘게 가동시키는 기법 *buffering 을 하면 read-ahead 또는 write-behind 동작이 가능한데 자료에 대한 접근이 순차적인 경우에 유용하다. 왜냐하면 read-ahead를 하면 다음 자료가 필요한 경우에 자료를 입력 장치로부터 가져 오는 것이 아니고 제어기의 자료 레지스터로부터 가져 오기 때문에 속도가 빠르다. 이러한 버퍼링은 입출력 뿐만 아니라 CPU에 명령 레지스터를 추가하여 한 명령을 수행하는 동안에 다음 명령을 미리 메모리에서 명령 레지스터로 가져 와서 실행 속도를 높이는데 이를 pipe-lining 동작이라고 한다. *Buffering은 디스크 블록의 입출력에도 사용되는데 단순한 read-ahead 또는 write-behind의 논리가 아니고 버퍼를 여러 개 두어서(버퍼의 크기 = 블록의 크기) 입력의 경우 한 블록을 읽으라는 명령이 주어지면 그 블록을 CPU에서 처리하는 동안에 주변의 블록을 미리 다른 버퍼에 입력하여 다음 입력에 대한 준비를 한다. 디스크 입력은 계산과 중복되기 때문에 더 효율적이다. 다음에 입력 명령이 내리면 우선 버퍼에서 찾고 없으면 원하는 블록을 입력하는데 이 경우에는 한 버퍼를 비워야 하기 때문에 버퍼의 대치 알고리듬이 필요하다. 이러한 경우 단순한 버퍼링이 아니고 버퍼 캐시라고 한다. 출력의 경우도 유사하다.

17 Buffering 저속 입출력 장치의 Buffering 고속 입출력 장치의 Buffering
Write 시스템 호출을 실행 하면 출력 내용은 장치 버퍼에 저장됨 장치 버퍼에서 제어기 레지스터 크기만큼(문자/블록) 자료가 이동 제어기 레지스터가 비면 제어기는 인터럽트를 요청 고속 입출력 장치의 Buffering CPU는 입출력 할 시스템 버퍼의 주소와 크기를 제어기에 알림 제어기는 DMA를 이용해 시스템 버퍼에 접근하여 입출력 수행 버퍼 캐시 (Buffer Cache) 디스크 입출력을 위해 커널의 자료영역에 할당된 기억공간 시스템에서 전체적으로 사용한 디스크 블록들을 저장 저장된 내용을 재사용하여 디스크 입출력을 최소화

18 Spooling Spooling SPOOL: Simultaneous Peripheral Operations On-Line
사용자 프로세스에서 직접 프린터에 대해 Buffering을 하면 느린 프린터 출력이 완료될 때 까지 사용자는 대기해야 함 다른 프로세스는 버퍼의 사용이 불가능하여 오랫동안 대기함 프린터 스플링 인쇄될 내용은 공용인 디스크 내의 스풀 버퍼에 저장 별도의 전담 프로그램 (Spooler)이 스풀 버퍼 내의 출력 내용을 순차적으로 프린터에 전달하여 출력 순서 정보를 가지는 Queue 파일 필요 스풀 버퍼는 항상 사용 가능함으로 대기시간 감소 여러 프로세스에서 입출력과 계산 중복 가능

19 입출력 장치의 구조 I/O 장치 큐 입출력 장치의 속도가 느리므로 입출력을 요구한 프로세스들은 대기 Queue에 저장됨
한 입출력 명령에 대해서 한 I/O task 가 생성되어 multi-tasking 시스템 Queue가 형성됨 각 I/O task는 해당 장치 큐에서 대기 고속장치(디스크 등) Seek time을 최적화 하기 위한 스케줄링을 사용 저속장치(프린터 등) 프로세스 우선순위나 선착순 (FCFS:First Come First Serve) 방식 키보드와 마우스 등 입출력 요구가 없어도 인터럽트 처리기를 통해 버퍼에 저장하여 프로세스가 필요할 때 전달함

20 TCB: Task Control Block
입출력 장치의 구조 Static Chain Dynamic(Active) Chain DISK DISK TCB TCB Keyboard Keyboard TCB 우선순위 PRINTER Mouse Mouse TCB 하드웨어 상에서 고정된 우선순위 현재 요청한 입출력 장치들 TCB: Task Control Block

21 하드웨어에 의한 보호 자원 공유에 따르는 문제 OS가 간단한 모니터에서 다중 프로그래밍으로 발전
시스템 효율성을 높이기 위해 시스템의 많은 자원을 여러 프로세스가 동시에 공유 자원의 공유는 시스템 활용도를 높이지만 문제점도 커짐 공유 환경에서 한 프로세스의 오류가 다른 프로세스에 영향을 줌 운영체제 영역을 침범 입출력 프로그램에서 인터럽트를 잘못 다루는 경우 보호 방법 한 프로세스가 운영체제나 다른 프로세스 영역 침범 불가능하게 함 운영체제만 내릴 수 있는 명령 (Privileged Instruction)을 정하여 일반 프로세스는 실행하지 못하게 함 하드웨어 오류인 불법 명령 또는 주소, Overflow 등이 발생하면 해당 프로세스를 중단시킨 후 Trap을 발생시켜 운영체제로 제어를 넘기도록 함

22 Dual Mode 이중 모드 사용자 모드 (User Mode) 커널 모드 (Kernel Mode)
사용자 프로세스가 자신의 코드 영역의 명령어를 실행하는 경우 커널 모드 (Kernel Mode) System Mode, Supervisor Mode, Monitor Mode 사용자 프로그램이 시스템 호출(call)을 수행하는 경우 Interrupt가 발생한 경우 사용자 오류로 trap이 발생하여 운영체제로 진입한 경우 H/W 상의 어떤 보호도 실행되지 않음 여러 사용자 영역을 접근 해야 하며 오류 없는 운영체제가 실행되기 때문 Kernel User Interrupt/fault set user mode

23 H/W에 의한 보호 입출력 보호 CPU 보호 일반적으로 한 사용자가 사용 시 배타적 사용권이 보장되어야 함
사용자 입출력은 운영체제가 제공하는 system call을 이용 입출력 완료 등은 interrupt에 의해 진행 입출력 명령은 커널 모드에서만 실행됨 특권 명령 (Privileged Instruction) CPU 보호 사용자 프로그램이 무한 반복(loop)시 CPU 회수할 수 있어야 함 Timer를 사용하여 프로세스의 실행 시간을 제어함 Timer에 값을 설정하는 명령은 privileged instruction임 Timer는 시분할 시스템에서 time slice 구현에도 사용함 Timer를 이용한 Clock Interrupt 운영으로 한 프로그램의 CPU독점을 방지하고 CPU 공유 및 보호

24 H/W에 의한 보호 메모리 보호 Base Register와 Limit Register로 사용자 프로그램 공간 정의
운영체제 내의 인터럽트 테이블 접근 및 수정 불가 다른 사용자 영역에도 접근 불가 자신의 코드 영역에 쓰기 불가 사용자 모드에서 접근 주소 생성시 범위를 확인 정의된 범위를 벗어나면 trap 발생 Unix 계열에서는 Segmentation Fault 오류 발생

25 기억 장치 구조 H/W는 CPU, 메모리 및 주변 장치로 구성됨 기억장치 운영 디스크의 필요성
메모리 용량의 제한과 휘발성 문제로 디스크 필요 기억장치 운영 메모리 운영과 디스크 운영 디스크는 파일이라는 추상화 된 개념으로 접근 주변 장치는 특수한 형태의 파일로 운영체제에서 처리 디스크의 필요성 가격 등의 이유로 메모리에 모든 정보를 저장하기 어려움 메모리는 휘발성(volatile) 저장 장치임

26 메모리 메모리와 레지스터: CPU가 직접 접근할 수 있는 장치 접근할 자료가 메모리에 없으면 디스크 등에서 메모리로 이동
메모리에 대한 접근을 빨리 하기 위해 캐시 메모리 사용 CPU는 메모리 접근 전에 캐시에 메모리의 내용이 있는지 먼저 확인 캐시에 내용이 있으면 이를 이용하고 없으면 메모리에서 내용을 가져와 캐시에 저장 후 CPU가 이용

27 Intel’s Pentium M Processor
1.6 GHz 400MHz FSB L1 Cache 32Kb + 32Kb (Data + Code) L2 Cache :1Mb

28 자기 디스크 원형판의 두 면에 자기물질이 덮여있고 헤더에 의해 정보가 기록 여러 원형 판(disk plate)으로 구성됨
물리적 구조 트랙(track): 원형 판에 있는 자료가 저장되는 하나의 동심원 섹터(sector): 각 트랙을 일정한 크기로 나누어진 공간 실린더(cylinder): 겹쳐진 여러 원형 판에서 같은 트랙의 집합

29 자기 디스크 접근 시간 접근시간을 줄이기 위해 운영체제에서 사용하는 방법 검색 시간 (seek time)
헤드가 원하는 트랙까지 찾아가는 시간 회전 지연 시간 (latency; rotational delay) 판이 회전하여 원하는 섹터가 돌아올 때 까지 시간 전송 시간 (transfer time) 헤드가 자료를 읽거나 쓰는 시간과 제어기가 전송하는 시간 접근시간을 줄이기 위해 운영체제에서 사용하는 방법 Buffering: 파일 입출력 Buffering, 가상메모리 페이지 Caching 버퍼 캐시: 여러 프로세스로부터 디스크에서 읽어온 블록을 저장 디스크 입출력 전에 버퍼 캐시를 검색하여 부재시 디스크 입출력 디스크 스케줄링 FCFS 대신 Seek Time을 줄일 수 있는 순서로 입출력 서비스

30 기억 장치의 계층 기억 장치의 계층 레지스터 캐시 메모리 자기 디스크 광디스크 자기 테이프

31 기억 장치의 계층 속도, 가격, 용량 및 휘발성에 의한 계층 운용 방법 상위 계층일 수록 가격이 높고 접근 속도도 빠름
하위 계층일 수록 가격이 낮고 접근 속도도 느림 운용 방법 비싼 기억장치는 필요한 최소의 양만 사용 비휘발성인 기억장치를 최대한 활용 계층간의 속도 차이 해소를 위해서 캐시(cache) 사용 기억 장치 접근의 국부성을 전제로 함 캐시는 낮은 계층의 장치보다 용량이 작아서 대치 알고리즘이 필요 자료의 복사판이 여러 계층에 존재하여 일관성의 문제 발생 가능


Download ppt "제 2장 컴퓨터 구조."

Similar presentations


Ads by Google