시스템 구조 (#2)

system_structure.png

DMA (Direct Memory Access)

  • CPU 는 Memory와 Device에 직접적으로 접근을 하여 데이터를 전송하거나 받고 처리하면 그 시간에 할일을 못하는 상황이 발생하여 시스템에 악영향을 끼친다.
  • 또한 각 Device가 전송하는 데이터양도 다르고 I/O 를 수행하는 데 interrupt가 자주 걸리기 때문에 CPU가 일을 제대로 할 수가 없어 시스템에 악영향을 끼친다.
  • 위의 문제점을 DMA를 통해서 해결하는데, DMACPU에 개입없이 I/O에 대한 메모리 접근을 DMA가 담당하기 때문에 Interrtupt 빈도가 줄어들어 성능 향상에 도움이 된다.
    • DMA는 작업이 끝날 때 CPU에게 Interrupt로 종료를 알려준다.

저장장치 계층구조

![[dis_hierarchy.png]] dis_hierarchy.png

  • 위 그림은 저장장치 계층구조를 나타내며 위로 갈수록 비용이 비싸고, 속도가 빠르며, 휘발성이다.

프로그램 실행 - 메모리 load

memory_load.png

  • 위 그림은 프로그램이 실행이 되고 메모리에 load되는 과정을 도식화한 것이다.
    1. 최초 File System에서 파일이 실행된다.
    2. 프로그램이 실행 되면 ProcessA 가 생성 되고 프로세스에 독자적인 주소공간 <code, data, stack>이 생성된다.
    1. 위의 과정은 물리 메모리에 바로 상주되는게 아니라 Virtual 메모리에 먼저 상주 된다.
    2. 주소공간의 정보는 아래와 같다.
      1. code: 기계어 코드가 저장됨
      2. data: 전역 변수/ 자료구조가 저장됨
      3. stack: 함수호출 / 리턴 정보가 저장됨
      4. Virtual 메모리와 물리 메모리 주소가 서로 다르기 때문에 주소 변환해주는 하드웨어 장치를 이용해 주소를 변환해준다. (Address Translation)
      5. 물리 메모리에 가상메모리의 주소공간 모두를 올리는게 아니라 당장 필요한 code만 물리메모리에 상주시킨다. (메모리 낭비 방지)
      6. 프로그램이 종료되면 가상메모리는 사라진다.
    3. 물론 사용이 안될 경우 물리 메모리에서도 삭제된다.

kernel_address_space.png

  • 위 그림은 커널 주소공간을 도식화한 것이다.
  • code - 시스템콜, 자원 관리를 위한 코드, - 사용자에게 편리한 서비스를 제공을 위한 코드, 인터럽트 처리 코드.
  • data
    • CPU, memory, Disk 관리를 위한 자료구조가 있음.
    • Process 관리를 위한 PCB(process controller block) 라는 자료구조가 있음
  • stack
    • 각 Process의 커널 스택이 있음. (사용자 프로세스마다 커널스택이 생김)