컴퓨터 시스템 구조
컴퓨터 시스템은 하나 이상의 CPU와 공유 메모리에 대한 액세스를 제공하는 공통 버스에 연결된 여러 디바이스 컨트롤러로 구성된다.
전원을 키면 초기 프로그램인 부트스트랩 프로그램이 실행된다.
부트스트랩: 컴퓨터 하드웨어 내의 ROM 또는 EEPROM에 저장됨
→ CPU 레지스터부터 디바이스 컨트롤러까지, 시스템의 모든 것을 초기화하고 부트로더를 실행함
→ 부트로더는 운영체제 커널을 찾아 메모리에 로드한다.
커널이 로드/실행되면 시스템과 커널 사용자에게 서비스를 제공할 수 있다.
위의 과정이 끝나면 시스템이 부팅되고, 시스템은 이벤트가 발생하기를 기다리게 된다.
CPU가 인터럽트 신호를 받으면 어떤 루틴을 실행해야 하는지 담겨있는 메모리의 주소를 찾는데, 이 위치는 '인터럽트 벡터(Interrupt Vector)'에 저장되어 있음
인터럽트 벡터: 인터럽트를 처리할 수 있는 '서비스 루틴(Service Routine)'들의 주소를 가지고 있는 공간
서비스 루틴: 인터럽트 핸들러라고도 함
→ 인터럽트를 처리하는 방식이 저장되어 있다.
프로그램의 실행
→ 실행기가 기억장치에서 실행파일을 가져오고, 커널이 이것을 메모리에 할당해 실행시킴
모든 프로그램은 메인 메모리에 로드되어 실행되며, 메인 메모리는 보통 RAM(Random-Access Memory)라고 부름
하지만 RAM은 너무 작고, 휘발성 메모리이다. → 따라서 보조기억장치가 필요
비휘발성 기억장치(보조기억장치): 자기테이프, 광학디스크, 자기디스크, SSD
휘발성 기억장치: 메인 메모리, 캐시, 레지스터
기억장치 단계-위로갈수록 빠르고 비쌈
디바이스 컨트롤러: 자신이 제어하는 주변 장치와 로컬 버퍼 간에 데이터를 이동하는 역할을 함
운영체제에는 각 디바이스 컨트롤러를 제어하기 위한 디바이스 드라이버가 있음
입출력 과정
위와 같은 과정은 작은 양의 데이터에는 괜찮지만 많은 양의 데이터가 이동할때 오버헤드가 크다.
→ 이것을 해결하기 위해 DMA(Direct Memory Access)가 사용된다.
DMA: 주변장치들이 메모리에 직접 접근하여 읽거나 쓸 수 있도록 하는 기능
→ CPU의 개입 없이 I/O장치와 기억장치 사이의 데이터를 전송함
컴퓨터 작동 방식
Single-Processor Systems
→ 하나의 메인 CPU만 탑재
Multiprocessor Systems
→ 2개 이상의 프로세서를 가지고 있음
멀티 프로세서 시스템의 장점
처리량(throughput)의 증가: 프로세서가 늘어나면 더 빠르게 연산 수행 가능
규모의 경제(Economy of Scale): 멀티 프로세서 시스템은 주변장치를 공유할 수 있기 때문에 여러 대의 싱글 프로세서 시스템을 구축하는 것보다 경제적이다.
안정성 증가: 하나의 프로세서가 작동을 멈춰도 느려질 뿐 전체 시스템은 멈추지 않는다.
→ 성능이 나빠지지만 작동은 가능하도록 하는 것을 우아한 성능저하(Graceful degradation)이라고 부른다.
→ 이렇게 성능을 저하함으로써 작업을 계속 유지하는 시스템을 장애 허용 시스템(Fault tolerant)라고 한다.
대칭 멀티프로세싱의 구조
참고자료
- Peter B. Galvin, Abraham Silberschatz, Greg Gagne - operating system concepts 9th edition