본문 바로가기

OS/운영체제론

[운영체제론] 하드웨어와 소프트웨어 (1) / 2021.09.24

* 참고 자료 : 운영체제론 한빛아카데미

 

1. 하드웨어 장치의 발전

하드웨어 제조업체와 주변 장치가 확대되면서 운영체제는 더욱 복잡해졌다. 대부분의 운영체제는 시스템 프로그래밍을 지원하고 확장성을 높이려고 시스템의 특정 하드웨어 구성에 의존하지 않게 구현된다. 운영체제에서 특정 장치의 제어를 위해 해당 장치 제조사가 제공한 디바이스 드라이버를 사용한다. 또한 많은 하드웨어 구성 요소가 운영체제의 확장성을 지원하는 방식으로 설계되었는데 컴퓨터에 연결할 때 자신이 어떤 장치인지 운영체제에 알리게 되어있는 플러그 앤 플레이가 하나의 예시이다.

 

2. 하드웨어 구성 요소

컴퓨터 하드웨어는 프로세서, 메인 메모리, 입출력 장치 같은 물리적인 장치로 구성된다.

 

1) 메인보드 

메인보드는 시스템의 중심 PCB로, 컴퓨터에서 중추적인 역할을 한다. 여기서 PCB란, 보드 여기저기에 위치한 장치들을 전기적으로 연결해주는 하드웨어 구성 요소이다. 메인보드는 프로세서나 메인 메모리를 포함한 여러 하드웨어 구성 요소를 꽂을 수 있는 슬롯을 내장하고 있다. 또한 대부분의 메인보드는 저수준 기능을 담당하는 컴퓨터 칩을 몇 개 포함한다.

 

2) 프로세서

프로세서는 일련의 기계어 명령어를 실행하는 하드웨어 구성 요소이다. 프로세서 종류에는 중앙 처리 장치 (CPU), 그래픽 보조 프로세서 또는 디지털 신호처리기 등이 있다. 

 

프로세서 구성 요소 :

- 명령어 패치기 : 명령어 레지스터라는 고속의 메모리에 명령어를 로드해 프로세서가 명령어를 빨리 실행할 수 있게 해 준다.

- 명령어 해석기 : 명령어를 해석하고 이에 해당하는 입력 정보를 실행 처리기에 전달한다. 실행 처리기의 주요 부분은 산술 논리 장치이다. 산술 논리 장치(ALU)는 덧셈, 곱셈 같은 기본적인 산술 연산과 대소 비교 같은 논리 연산을 수행한다.

- 캐시 : 캐시는 메인 메모리에 있는 데이터의 복사본을 저장하는 메모리로, 프로세서의 데이터와 명령어에 빠르게 접근  할 수 있게 해서 효율을 높여준다. 가장 빠르고 프로세서에 위치한 L1캐시, L1캐시에 비해 저렴하지만 용량이 크며 메인보드에 위치하는 L2 캐시가 있다.

- 레지스터 : 프로세서에 위치한 고속 메모리이다. 프로세서가 데이터를 조작하려면 해당 데이터가 레지스터에 위치해야 한다. 

 

프로세서 구성 요소

 

3) 클록

컴퓨터 시간은 흔히 사이클(클록 틱)을 통해 측정한다. 사이클은 시스템 클록 생성기가 보낸 전기 신호의 한 진폭을 말한다. (초당 사이클 수, 즉 헤르츠(Hz)로 측정한다. 특히 클록 생성기는 버스가 데이터를 나르는 주기를 결정한다.

 

4) 메모리 계층

비용과 성능의 상충성 때문에 메모리 계층이 생긴다. 가장 빠르고 비싼 메모리는 최상위 계층에 있고, 대개 용량이 적다. 최하위에 있는 것은 가장 저렴하고 속도가 느린 메모리로, 대체로 큰 용량을 갖출 수 있다. 레지스터, 캐시, 메인 메모리는 대체로 휘발성 매체로, 전원을 끄면 데이터가 사라진다. 

 

1. 영구 저장 매체와 휘발성 저장 매체의 차이점은 무엇인가?
답 : 휘발성 매체는 컴퓨터 전원이 나가면 데이터를 잃지만, 영구 저장 매체는 데이터를 유지할 수 있다.

2. 메모리 계층 구조가 피라미드 형태를 이루는 이유는 무엇인가?
답 : 저장 매체가 더 저렴하면, 사용자가 더 많은 용량을 구매할 수 있으므로 저장 공간이 늘어나게 되어 아래가 넓은 피라미드 형태를 이루게 된다.

 

5) 메인 메모리

메인 메모리는 RAM 메모리로 구성되어있다. 이 때문에 프로세스가 어떤 순서로든 데이터에 접근할 수 있다. RAM은 두 가지 종류가 있다. 동적 램(DRAM)은 재생 회로에서 일정 주기마다 데이터를 읽어야 한다. 이렇게 하지 않으면 데이터를 손실하기 때문이다. 정적 램(SRAM)은 동적 램과는 달리 저장하는 데이터를 유지하려고 다시 읽을 필요가 없기 때문에 재생 회로가 불필요하다.

 

6) 2차 저장소

컴퓨터에서 데이터 파일이나 응용 프로그램 소프트웨어 등 대용량 데이터를 영구적으로 보관하려면, 전원이 나간 후에도 데이터를 영구 저장할 수 있는 2차 저장소를 사용한다. 대부분 2차 저장소로 하드 디스크를 사용하는데 이는 RAM보다 저렴한 비용으로 더 많은 양을 저장할 수 있지만, 메인 메모리에 접근하는 것보다 속도가 현저히 느리다. 하드 디스크에 저장된 데이터에 접근하려면 읽기/쓰기 헤드가 물리적으로 움직여야 하고 데이터가 헤드까지 돌아가는 회전 지연시간과 헤드를 통해 데이터가 통과하는 전송 시간이 필요하다. 데이터 백업이나 이동 가능한 2차 저장 장치도 있는데 예로는 CD, DVD, 플로피 디스크, 플래시 메모리 카드, 테이프 등이 있다.

 

7) 버스

버스는 하드웨어 장치 간에 정보를 나르는 트레이스의 집합 혹은 전기적 연결이다. 버스는 데이터 버스와 주소 버스로 구성되어 있다. 

 

버스 종류 :

- 포트 : 포트는 정확이 두 장치를 연결하는 버스이다.

- 입출력 채널 : 입출력 채널은 서너 개 장치에서 입출력 기능을 수행할 때 공유하는 버스이다.

- 프론트 사이드 버스(FSB) : 프로세서를 메인 메모리에 연결

- PCI 버스 : PCI 버스는 사운드 카드나 네트워크 카드 등의 주변 장치를 시스템의 나머지 부분에 연결한다.

 

8) 프로그램 I/O

대부분의 입출력 연산은 메인 메모리와 입출력 장치 사이에서 데이터를 전송한다. PIO는 초창기 컴퓨터에서 사용되었다. 프로세서는 입출력 처리가 끝날 때까지 기다려야 하는데 이에 따라 상당한 프로세서 사이클이 낭비되었다. 이러한 낭비를 개선하기 위해 프로세서가 입출력 요청을 한 즉시 다른 소프트웨어 명령어를 실행할 수 있게 해주는 인터럽트 구동방식을 개발하였는데 입출력 장치는 연산을 마치고 인터럽트를 발생시켜 완료 사실을 프로세서에게 알렸다.

 

- 직접 메모리 접근(DMA) : 해당 장치들과 컨트롤러들이 데이터 블록을 메인 메모리에 직접 전송하는 방식으로 이 동안프로세서는 전송의 종료를 기다리지 않고 다른 작업을 실행한다. DMA는 메모리와 입출력 장치 간의 데이터 전송 효율을 향상했다. DMA 채널은 입출력 컨트롤러를 사용해 데이터 전송을 관리하였으며 입출력 연산이 완료되면 인터럽트를 통해 프로세서에 알렸다.

 

DMA가 PIO보다 효율적인 이유는 무엇인가? 
답 : PIO를 사용하는 시스템에서 프로세서는 각각의 메모리 전송이 완료될 때까지 기다려야 한다. DMA는 메인 메모리와 입출력 장치 사아에 데이터를 전송하는 데 필요한 작업을 덜어주어 프로세서가 다른 명령어들을 실행할 수 있게 해 준다.

 

9) 주변 장치 

주변 장치란 컴퓨터가 소프트웨어 명령어를 실행하는 데 필수적이지 않은 하드웨어를 말한다.

 

- 내부 주변 장치 : 네트워크 인터페이스 카드, 모뎀, 사운드 카드, 하드 디스크, 내부 CD-ROM 드라이브 등

- 문자 장치 : 문자 데이터를 전송하는 장치. 예로는 키보드, 마우스

- 컴퓨터에 장치 추가 : 포트와 기타 버스를 통해 추가한다.

                             - 직렬 포트 : USB, IEEE 1394 포트

                             - 병렬 포트 : SCSI

 

3. 하드웨어의 운영체제 지원

1) 프로세서 

대부분의 운영체제는 프로세서를 통해 보호 메커니즘을 구현한다. 프로세서는 프로세스가 할당받지 않은 메모리에 접근하는 일을 막는다.

컴퓨터 시스템은 몇 가지 다른 실행 모드를 갖는다.

실행 모드 :

- 사용자 모드 : 제한된 명령어만 사용 (예, 입출력 장치 명령어 사용 불가)

- 커널 모드 : 특권 명령어 실행과 원하는 작업을 수행하기 위한 자원의 접근 기능

 

프로세서는 운영체제에 프로그램 실행 중 발생하는 오류나 장치의 상태 변화 등 여러 이벤트 발생 시, 프로세서에 인터럽트 신호를 보낸다. (인터럽트 대신 폴링 방식을 사용할 수 있으나 이 방식은 불필요하게 상태 확인을 할 수 있어 비효율적이다.) 예외는 하드웨어 고장이나 로직 오류, 보안 규칙 위반 같은 여러 오류에 대한 반응으로 발생하는 인터럽트이다.

 

2) 부트스트랩핑

컴퓨터 시작 시, 먼저 운영체제를 메모리에 로드해야 한다. 이 과정을 부트스트래핑이라고 하는데, 부트스트래핑을 하지 못하면, 컴퓨터의 어떤 하드웨어에도 접근이 불가능하다.

BIOS는 부트스트래핑을 수행하는데, 시스템 하드웨어를 초기화하며 2차 저장소의 부트 섹터에서 명령어를 읽어 메인 메모리에 로드한다.

 

4. 캐싱과 버퍼링

1) 캐시

캐시는 자주 사용하는 데이터 고속 메모리에 저장되어야 한다. 참조하는 정보가 캐시 메모리에 없는 경우인 캐시 실패의 수를 최소화해야 된다. 캐싱을 통해 성능을 향상시키려면 상당수가 참조하는 정보가 캐시 메모리에 있는다는 뜻의 캐시 적중되어야 한다. 캐시의 예로는 L1과 L2프로세서 캐시가 있다. 이 캐시는 메인 메모리의 일정 부분을 할당해 디스크 같은 2차 저장소의 데이터를 캐시 하는데 활용한다.

 

2) 버퍼

버퍼는 장치들 사이 혹은 서로 다른 속도로 동작하는 프로세스들 사이에서 데이터를 전송할 때 일시적으로 데이터를 보관하는 저장 영역을 말한다. 소프트웨어와 하드웨어 장치들이 데이터를 비동기적으로 전송하게 함으로써 시스템 성능을 향상시킨다.

 

3) 스풀링

스풀링은 한 프로세스와 저속 또는 버퍼가 제한된 입출력 장치 사이에 디스크와 같은 중간 매개체를 두는 기술이다. 예로는 프린터 스풀링이 있다.