운영체제 정리 (3)
시스템 구조 (#2)
DMA (Direct Memory Access)
CPU
는 Memory와 Device에 직접적으로 접근을 하여 데이터를 전송하거나 받고 처리하면 그 시간에 할일을 못하는 상황이 발생하여 시스템에 악영향을 끼친다.- 또한 각 Device가 전송하는 데이터양도 다르고 I/O 를 수행하는 데 interrupt가 자주 걸리기 때문에 CPU가 일을 제대로 할 수가 없어 시스템에 악영향을 끼친다.
- 위의 문제점을
DMA
를 통해서 해결하는데,DMA
는CPU
에 개입없이 I/O에 대한 메모리 접근을DMA
가 담당하기 때문에 Interrtupt 빈도가 줄어들어 성능 향상에 도움이 된다.DMA
는 작업이 끝날 때 CPU에게 Interrupt로 종료를 알려준다.
저장장치 계층구조
![[dis_hierarchy.png]]
- 위 그림은 저장장치 계층구조를 나타내며 위로 갈수록 비용이 비싸고, 속도가 빠르며, 휘발성이다.
프로그램 실행 - 메모리 load
- 위 그림은 프로그램이 실행이 되고 메모리에 load되는 과정을 도식화한 것이다.
- 최초 File System에서 파일이 실행된다.
- 프로그램이 실행 되면 ProcessA 가 생성 되고 프로세스에 독자적인 주소공간
<code, data, stack>
이 생성된다.
- 위의 과정은 물리 메모리에 바로 상주되는게 아니라 Virtual 메모리에 먼저 상주 된다.
- 주소공간의 정보는 아래와 같다.
- code: 기계어 코드가 저장됨
- data: 전역 변수/ 자료구조가 저장됨
- stack: 함수호출 / 리턴 정보가 저장됨
- Virtual 메모리와 물리 메모리 주소가 서로 다르기 때문에 주소 변환해주는 하드웨어 장치를 이용해 주소를 변환해준다. (
Address Translation
) - 물리 메모리에 가상메모리의 주소공간 모두를 올리는게 아니라 당장 필요한
code
만 물리메모리에 상주시킨다. (메모리 낭비 방지) - 프로그램이 종료되면 가상메모리는 사라진다.
- 물론 사용이 안될 경우 물리 메모리에서도 삭제된다.
- 위 그림은 커널 주소공간을 도식화한 것이다.
- code - 시스템콜, 자원 관리를 위한 코드, - 사용자에게 편리한 서비스를 제공을 위한 코드, 인터럽트 처리 코드.
- data
- CPU, memory, Disk 관리를 위한 자료구조가 있음.
- Process 관리를 위한 PCB
(process controller block)
라는 자료구조가 있음
- stack
- 각 Process의 커널 스택이 있음. (사용자 프로세스마다 커널스택이 생김)