컴퓨터 구조 - 05. 컴퓨터 아키텍처와 운영체제
- 📕 Book/한 권으로 읽는 컴퓨터 구조와 프로그래밍
- 2021. 9. 15.
05. 컴퓨터 아키텍처와 운영체제
컴퓨터는 어떻게 프로그램과 메모리를 조직적으로 관리할까?
컴퓨터 아키텍처(Computer Architectur)는 컴퓨터의 여러 구성 요소를 배치하는 방법을 뜻한다.
기본적인 구조 요소들
컴퓨터 구조의 대표적인 두가지는 폰 노이만(von Neumann)구조와 하버드(Harvard)구조 이다. 두 구조의 유일한 차이는 메모리 배열이다. 폰노이만 구조는 데이터 버스와 주소버스가 하나 뿐이라서 동시에 명령어와 데이터를 가져올수 없다. 그래서 약간 더 느리다. 하버드 구조는 동시에 명령어와 데이터를 둘다 가져올수 있어서 좀 더 빠르지만 두 번째 메모리를 처리하기 위한 버스가 더 필요하다.
프로세서 코어
멀티 프로세서(multiprocessor) 시스템은 단일 CPU보다 더 좋은 성능을 얻어내기위한 방법이다. 여러 CPU를 활용할 수 있도록 프로그램을 병렬화(Parallelized)하는 방법을 고안했다.
예전에 CPU라고 부르던 것을 요즘은 프로세서 코어(processore core)라고 부른다.
마이크로프로세서와 마이크로컴퓨터
마이크로프로세서(microprocessor)는 메모리와 I/O가 프로세서 코어와 같은 패키지에 들어 있지 않는 프로세서이다. 마이크로컴퓨터(microcomputer)는 모든 요소를 한 칩 안에 패키징한 것을 의미한다.
프로시저, 서브루틴, 함수
함수(function), 프로시저(procedure), 서브루틴(subroutine)은 코드를 재사용(reuse)하는 주요 수단이다. 함수 호출 흐름은 다음과 같다.
반환 주소 저장 -> 함수 파라미터>>누산기 -> 함수로 분기 -> 함수 반환뒤에 실행 계속
스택
함수는 다른 함수를 호출하거나 자기 자신을 호출하는 경우도 있다. 자기 자신을 호출하는 경우를 재귀(recursion)라고 한다. 스택은 깊이 우선 순회 BFT에서 사용되는 자료구조이다. 스택에 물건을 푸시(push)해 넣고, 팝(pop)해서 제거한다. 더이상 들어갈 공간이 없으면 스택 오버플로(stack overflow)라고 하며, 빈 스택에서 가져오려고 하면 스택 언더플로(stack underflow)라고 한다.
인터럽트
요즘의 프로세서 대부분은 인터럽트(interrupt) 시스템이 들어간다. 인터럽트 시스템은 신호가 들어오면 CPU의 실행을 잠깐 중단시킬 수 있는 핀이나 전기 연결을 포함한다. 인터럽트 시스템이 작동되는 방식은 다음과 같다.
- 주변장치가 인터럽트 요청(interrupt request)을 생성한다.
- 프로세서는 보통 현재 실행 중인 명령어를 끝까지 실행시키고, 그 이후 프로세서는 프로그램을 중단시키고 인터럽트 핸들러(interrupt handler)를 생성
- 인터럽트 핸들러가 필요한 작업을 다 마치고 나면 원래 실행중이던 프로그램이 중단된 위치부터 다시 실행을 계속, 인터럽트 핸들러는 함수다.
인터럽트는 응답시간(response time)과 현재 상태 저장할 방법을 고려해야한다.
상대 주소 지정
여러 프로그램을 동시에 실행하기 위해선 관리자 프로그램이 필요한데 이런 프로그램을 운영체제 또는 운영체제 커널(kernel)이라 한다. OS는 타이머를 사용해 프로그램을 전환시켜줄 타이밍인지 판단한다. 이렇게 실행 시간을 조절하는 스케줄링(scheduling)기법을 시분할(time slicing) 이라고 한다.
상대 주소 지정(relative addressing)은 명령어에 들어있는 주소를 기분으로 하는 상태적인 주소로 해석하는 방식이다.
메모리 관리 장치
메모리 관리 장치 (MMU, memory management unit)는 마이크로 프로세서에 포함되어있으며 MMU가 들어있는 시스템은 가상주소(virtual address)와 물리주소(physical address)를 구분한다. MMU는 가상주소를 물리주소로 변환해준다.
가상 메모리
OS는 MMU를 사용해서 사용자 프로그램에게 가상 메모리(virtual memory)를 제공한다. OS는 현재 필요하지 않은 메모리 페이지를 디스크로 옮긴다. 그리고 OS는 필요한 메모리 공간을 확보하고 요청받은 페이지를 다시 메모리로 불러 들여서 처리한다. 이런 처리방식을 요구 페이징(demand paging)이라고 한다.
시스템 공간과 사용자 공간
CPU에는 컴퓨터가 시스템 모드에 있는지 사용자 모드에 있는지 결정하는 비트가 어떤 레지스터 안에 들어있다. I/O를 처리하는 명령어 중 일부는 특권(privileged)명령어 라서 오직 시스템 모드에서만 실행할 수 있다. 트랩(trap)이나 시스템 콜(system call)이라는 특별한 명령어를 통해 사용자 모드에서 실행중인 프로그램이 시스템 프로그램(OS)에게 요청을 보낼 수 있다.
메모리 계층과 성능
메모리 계층(memory hierarchy)은 간략히 보여주자면
CPU - 레지스터 - L1 - L2 - L3 - 주 메모리 - 대용량 저장장치