Computer Science 기본 지식/운영체제

[운영체제] 컴퓨터 시스템의 구성

로파이 2021. 1. 11. 14:41

독학사- 운영체제 편을 공부하고 정리한 내용입니다.

 

컴퓨터 하드웨어의 구성

 

운영체제: 하드웨어 자원을 관리하는 소프트웨어

하드웨어: 프로세서, 메모리, 주변장치로 구성되고 이들은 시스템 버스로 연결

 

하드웨어 구성

- 폰 노이만 구조

CPU, 메모리, 입출력 장치, 저장장치가 버스로 연결되어 있는 구조

"모든 프로그램은 메모리에 올라와야 실행할 수 있다"

 

프로세서

 

중앙처리장치 CPU (Central Processing Unit)
연산장치, 레지스터, 제어장치로 구성되고 이들은 내부 버스로 연결

  • 모든 연산은 레지스터에 저장된 데이터에 대해서만 수행
  • 제어장치는 시스템 버스를 통해 주 메모리에서 레지스터로 데이터를 올리거나 내림
  • 또한 연산을 위한 제어 신호를 보냄

- 레지스터 구분

1) 용도: 전용/범용 레지스터

 

2) 정보 종류: 데이터, 주소, 상태 레지스터

 

3) 사용자가 정보를 변경할 수 있는지 (보이는 지): 가시, 불가시 레지스터

 

3-1) 가시 레지스터

- 데이터 레지스터: 함수 연산에 필요한 데이터 저장

- 주소 레지스터: 주소나 유효 주소를 계산하는 데 필요한 주소를 저장

  • 기준 주소 레지스터: 페이지나 세그먼트와 같은 블록 정보에 접근되는 데 사용 (base address)
  • 인덱스 레지스터: 유효 주소를 계산하는데 사용하는 주소 정보
  • 스택 포인터 레지스터 SP: 프로세서 스택을 구현, 함수 반환 주소, 프로세서 상태 정보, 서브루틴의 임시 변수 등을 저장

3-2) 불가시 레지스터

사용자가 변경 불가능한 정보, 프로세서 상태와 제어를 관리

- 프로그램 카운터 PC: 다음 실행할 명령어의 주소를 보관

- 명령어 레지스터 IR: 현재 실행하는 명령어를 보관

- 누산기: 데이터를 일시적으로 저장

- 메모리 주소 레지스터 MAR: 프로세서가 참조하는 데이터 주소를 명시, 메모리에 접근하는 버퍼 레지스터

- 메모리 버퍼 레지스터 MBR(MDR): 프로세서가 메모리에서 읽거나 메모리에 저장할 데이터 자체를 보관하는 버퍼 레지스터

 

메모리

 

메모리의 특징은 빠를 수록 가격이 비싸고 하드 디스크와 같은 외부 기억장치는 느린 대신 많은 데이터를 저장할 수 있다.

레지스터와 캐시 같은 메모리는 CPU와 가까우며 시스템 버스를 통해 연산을 위해 빠르게 데이터를 옮길 수 있지만 가격이 비싸므로 사용자가 필요한 모든 데이터를 저장하기는 힘들다.

현대 컴퓨터의 메모리 구조는 계층적 구조를 가지는 메모리 구조에 따라 필요한 만큼 데이터를 상위 메모리로 적재하여 연산에 필요한 데이터만 접근하도록 한다.

 

메모리 계층 구조

1) 레지스터

프로세서 내부에 있으며 연산에 필요한 데이터를 보관하는 가장 빠른 메모리

 

2) 메인 메모리

프로그램 저장 또는 데이터 저장

프로세스 관련 스택, 힙, 코드, 데이터 영역으로 할당된 메모리와 운영체제가 정의한 시스템 함수 주소, 실행 중에 사용되는 파일 데이터 등을 보관한다.

 

3) 캐시

메인 메모리와 CPU 간 속도 차이를 완화하기 위해 임시로 저장해두는 장소이다. 캐시는 CPU 내부에 있기 때문에 CPU 내부 버스를 사용하고 CPU 내부 버스는 주 메모리에 연결된 시스템 버스보다 빠르다.

 

  • CPU 제어 장치는 메모리에 접근하기 전 캐시에서 먼저 데이터가 있는지 확인하고
  • 만약 있다면 캐시 히트로 데이터를 가져오고
  • 아니라면 캐시 미스로 주 메모리에서 캐시로 데이터를 가져온다.

데이터의 지역성 Locality

캐시 히트를 높이기 위해서 현재 참조된 데이터와 가까운 주소에 있는 데이터들이 참조될 가능성이 높다는 가정을 바탕으로 가까운 주소에 있는 데이터를 캐시에 미리 가져온다.

 

4) 보조 기억장치

주변 장치 중 프로그램과 데이터를 저장하는 하드웨어. ex) 하드 디스크, 플래시 메모리를 사용하는 SSD

 

시스템 버스

하드웨어를 물리적으로 연결하는 통로

외부 입출력 신호, 프로세서 상태 신호, 인터럽트, 제어 신호 등등이 시스템 버스를 통해 전달

구조: 프로세서 <--시스템 버스--> 주 메모리 <--시스템 버스--> (입출력 제어기) <--시스템 버스--> 외부 입출력 장치

 

1) 데이터 버스

  • 데이터를 전송
  • CPU의 메모리 버퍼 레지스터(MBR), 메모리, 주변장치와 양방향 연결

ex)

입출력 버퍼에서 메인 메모리로 데이터를 적재 혹은 그 반대로 (읽기/쓰기)

메인 메모리에서 MBR로 데이터를 적재 혹은 그 반대로 (읽기/쓰기)

 

2) 제어 버스

  • 제어 신호를 전송
  • CPU의 제어장치, 메모리, 주변장치와 양방향 연결 

ex)

메모리에서 레지스터로 데이터 적재 신호

하드디스크로부터 데이터 읽기 신호

콘솔 출력 버퍼로 데이터 쓰기 신호

 

3) 주소 버스

  • 데이터를 읽거나 쓸 때 어느 위치에 작업할 것인지 주소를 알려주기 위해
  • CPU의 메모리 주소 레지스터(MAR), 메모리, 주변장치와 단방향 연결
  • CPU에서 메모리, 주변장치로 나가는 방향만 존재

4) 버스 대역폭 (bandwidth)

버스의 대역폭은 한 번에 전달할 수 있는 데이터 최대 크기

  • = 레지스터 크기
  • = 1 워드
  • = 64 bit / 32 bit (CPU 종류에 따라)

주변장치

  • 입력장치 - 키보드, 마우스, 터치 스크린, 마이크 등
  • 출력장치 - 모니터, 콘솔, 스피커 등
  • 저장 장치 - 하드 디스크, USB 드라이브, CD, DVD 등