관리 메뉴

사과하는 제라스

5. Computer Architecture 본문

대학 전공 공부/운영체제

5. Computer Architecture

Xerath(제라스) 2022. 10. 11. 09:30

목차

    728x90
    반응형

    단일 Bus 구조

    Bus: CPU, RAM, I/O 장치 간 데이터가 전송되는 통로

    ex) Data Bus, Address Bus

     

    그렇다면... 단일 Bus 구조란...?

    단일 Bus 구조

    - 하나의 시스템 버스에 여러가지 모듈이 연결되어 있는 형태.

    - CPU, Memory, I/O 속도가 비슷했던 초창기에 발생 but 속도 격차가 증가하면서 '병목 현상'이 발생하는 문제가 생기기 시작함.

     

    병목 현상

    : 같은 버스에 연결된 디바이스들 사이의 속도 차이로 발생하는 현상으로, 빠른 디바이스가 처리하는 양 만큼을 느린 디바이스가 처리하지 못하여 전체 시스템 속도가 느린 디바이스의 속도로 제한되는 현상.

    - 주로 CPU> Memory >> I/O로 속도의 격차가 커짐.

    속도: CPU > 메모리 > Disk > Network > I/O 장치(CD, Keyboard, etc.)

    ex) CPU가 초당 5단위의 일을 처리할 수 있는데 메모리는 초당 3단위 밖에 못함. -> 전체 시스템 속도는 3단위가 된다.

     

    이를 해결하기 위해 나온 것이...!!

     

    계층적 버스 구조

    - 세분화된 버스를 채용함. ex) CPU Local Bus, Memory Bus, PCI Bus, etc.

    - 그 중 하나의 예시: 이중 버스

    이중 버스 구조. 이처럼 System Bus, I/O Bus를 따로 두어 빠른 CPU, Memory는 System Bus에 I/O 장치는 I/O 장치는 I/O 버스에 연결하여 병목현상을 해결함.

    -> 이를 통해 병목 현상을 해결함.

     

    여러가지 Bus들을 사용함으로 인해서 HW가 복잡해짐. 이런 복잡한 HW들을 효율적으로 사용할 수 있게 해주는 것이 OS임.

     

    이벤트 처리 기법: Interrupt

    : 비동기적 이벤트(프로그램이 실행 중에 갑자기 어떤 이벤트가 나타나서 처리해줘야 하는 경우)를 처리하기 위한 기법

     

    처리 순서

    1) Interrupt Disable

    2) 현재 실행 상태를 저장

    3) ISR(Interrupt Service Routine)로 점프

    4) 저장한 실행 상태를 복원

    5) Interrupt로 중단된 지점부터 다시 시작

     

    -> 프로그램을 실행하는 도중에 1번째 Interrupt가 도달. 이 Interrupt부터 처리해야 하므로 다른 Interrupt들은 프로세스에 전달되지 않음.(Interrupt Disable) 이 Interrupt를 처리하기 위한 Kernel Code로 점프되어 실행해야 함. ∴현재 실행되고 있는게 멈춰야 하니 현재 실행 상태를 저장함. 이후 Context Switching(User Code-> Kernel Code)이 발생. Kernel Code에선 ISR로 점프하여 Interrupt를 처리하고 다시 User Code로 복귀해야함. ∴저장했던 실행 상태로 다시 복원하고 프로세스는 이때부터 새로운 Interrupt를 받아서 처리 가능.

     

    - Interrupt에는 우선 순위가 있고 HW 장치마다 다르게 설정됨.

    - ISR은 너무 길면 다른 Interrupt들이 처리되지 못하기에 짧아야 함.

    - Time Sharing은 Timer Interrupt의 도움으로 가능하게 된 기술임.

     

    Interrupt 처리 흐름도. Interrupt Handler(=Kernel)

    이벤트 처리 기법: Trap

    : 동기적 이벤트(프로그램이 발생시킨 이벤트 ex) Divide by Zero)를 처리하기 위한 기법

     

    - Trap은 Trap Handler에 의해서 처리됨.(Interrupt는 Interrupt Handler에 의해서 처리되었잖아~)

    - ISR처럼 Trap Service Routine(TSR)이 있음. 하지만 Interrupt와 달이 실행 State를 저장 및 복원하지 않음.

    -> Why?? Trap은 동기적 이벤트임. 즉, Divide by Zero 같은 걸 처리하고 프로그램을 종료해버리기에 굳이 State를 저장 및 복원을 할 필요가 없음. 사실 이때 완전 저장을 안하는 건 아니고 이벤트가 들어왔을 때 이 작업을 끝내고서 돌아갈 Instruction을 저장함으로서 이벤트를 계속 진행할 수 있다.

    Intel x86에서의 Interrupt & Exception

    Interrupt - 비동기적 이벤트, Interrupt Handler에 의해서 처리됨, Interrupt Handler는 프로세스의 상태를 저장 및 복원함.

    1) Hardware Interrupt

    ex) timer Interrupt

    2) Software Interrupt

    ex) signal 같은 것으로 실행 중인 프로세스에 다른 프로세스가 signal을 던지는 것임.

     

    Exception - 동기적 이벤트, Trap Handler에 의해서 처리됨, OS가 프로세스의 상태를 저장 및 복원을 하지 않음.

     

    차이점: Interrupt의 경우엔 Kernel에서 프로세스의 상태를 저장함 ∴ Context Switching하는 시간에 다른 프로세스가 실행될 수 있음.

    반면, Exception은 그러지 못함.

     

    I/O 디바이스 기본 개념

    - CPU는 주로 Memory와 서로 상호작용하면서 연산을 함.

    - Memory엔 Deivce 레지스터가 있는데 이는 4종류가 있음. 이들은 메인 메모리의 일부 영역에 Mapping되어 있어서 CPU에서는 이 Mapping된 영역의 주소를 알면 접근이 가능함.

    1) Control 레지스터 2) Status 레지스터 3) Input 레지스터 4) Output 레지스터

     

    - I/O Controller: High-level의 I/O 요청을 Low-level Machine Specific Instruction(CPU Instruction)으로 해석하는 회로.()

    ->I/O 장치와 직접 상호작용하는 것으로, CPU에서 요청을 한 것을 레지스터를 통해 받고 이를 Bus로 I/O장치에 보내어 요청을 처리함.

     

    I/O 처리 기법: Polling

    : 일정 시간마다 특정 이벤트의 도착 여부를 확인하면서 기다리는 방법.

    - 갑자기 날아드는 Interrupt Handler 등록 방식과 달리 매 순간 이벤트의 발생 여부를 확인함.

    - I/O Controller나 I/O 장치가 빠른 경우에 적합한 Event 처리 기법임.

    - 반면 느린 경우에는 CPU Time을 낭비하게 되어 Not Good!

    - 프로그래밍된 I/O임.

    I/O 처리 기법: Direct Memory Access(DMA)

    : 따로 DMA Controller를 두어 CPU Time을 낭비하지 않고 CPU는 I/O 연산을 이곳에 맡기고 다른 작업을 하고 DMA Controller가 대신하여 I/O 디바이스와 메인 메모리 간의 데이터 전송을 수행해줌.

     

    DMA Controller - Read 흐름도

    DMA VS Polling

    DMA는 HW가 더 필요하기에 비쌈. ∴ CPU 효율성을 극대화시키기 위해서는 둘을 Parallelism하게 사용해야 함.

    ex) 스마트폰의 카메라 Pixel을 읽어 들이려고 할 때 DMA가 필요? Yes, camera, display, Memory 간의 데이터를 전송하고 저장하는 과정에서 DMA를 사용해야 바로 화면에 보이거나 저장하는 것이 가능하다.

     

    I/O 디바이스 접근 기법: I/O Instruction

    CPU는 I/O Controller를 정기적으로 어떻게 사용하는지에 대해 구현되어 있고, 즉 I/O 전용 Instruction들이 구현되어 있음.

    이를 이용하여 I/O Controller에게 명령을 줌.

    즉...!!!!!!!

     

    I/O Controller에게 CPU가 직접 작업을 명령할 때 주는 전기적 신호가 HW적으로 구현되어 있고 프로그래머 입장에서 I/O 디바이스들을 사용하기 위한 I/O Instruction들을 직접적으로 사용해서 I/O 연산을 수행한다.

     

    I/O 디바이스 접근 기법: Memory Mapped I/O

    Device Register들이 물리 Memory 주소공간에 Mapping 되어 사용함.

    레지스터들은 주소공간에 맵핑되어서 I/O가 발생함.

    I/O 전용 Instruction을 사용하는 것이 아니라 일반적인 메모리 접근 Instruction을 사용하여 I/O 작업을 수행함.

    728x90
    반응형

    '대학 전공 공부 > 운영체제' 카테고리의 다른 글

    7. IPC(Inter Process Communication)  (0) 2022.11.17
    6. CPU Scheduling  (1) 2022.11.02
    4. Process  (0) 2022.10.09
    3. OS의 구조2  (0) 2022.10.07
    2. OS의 구조(with OS의 역사 및 발전)  (0) 2022.09.19