본문 바로가기

Basic/운영체제

CHAPTER 02 컴퓨터의 구조와 성능 향상

반응형

CHAPTER 02 컴퓨터의 구조와 성능 향상


컴퓨터의기본 구성

CPU와 메모리

컴퓨터 성능 향상 기술

병렬 처리

 

운영체제를 이해하려면 컴퓨터 시스템의 구조와 하드웨어의 특성을 알아야 한다

운영체제와 관련된 하드웨어의 특성과 동작 원리를 살펴본다


1. 컴퓨터의 기본 구성


1) 하드웨어의구성

컴퓨터는 중앙처리장치, 메인메모리,입력장치,출력장치, 저장장치로 구성된다

컴퓨터로 하는 작업은 대부분 중앙처리장치와 메인 메모리의 협업으로 이루어지기 때문에 중앙처리장치와 메인 메모리는 필수 장치로 분류된다. 

메인메모리는 전력이 끊기면 데이터를 잃어버리기 때문에 데이터를 영구히 보관하려면 하드 디스크나 USB 메모리를 사용해야 한다.

그래서 메인메모리를 제1저장장치, 하드디스크나 USB 메모리 같은 메모리를 제2저장장치또는 보조저장장치라고 부른다.


1-1) CPU 와 메모리

CPU는 명령어를 해석하여 실행하는 장치로, 인간으로 치면 두뇌에 해당한다. 메모리는 작업 에 필요한 프로그램과 데이터를 저장하는 장소로,바이트 단위로 분할되어 있으며 분할 공간 마다 주소로 구분한다


1-2) 입출력장치


입력장치는 외부의 데이터를 컴퓨터에 입력하는 장치로 키보드,마우스,스캐너, 터 치스크린등을 사용하고 있다. 


출력장치는 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력하는 장치로 프린터,모 니터,스피커 등이 있다. 


 1-3) 저장장치


메모리는 전자의 이동으로 데이터를 처리하지만 하드디스크는 구동 장치가 있는 기계이므로 속도가 느리다. 이러한 저장장치는 메모리보다 느리지만 저렴하고 용량이 크며,전원 온• 오프와 상관없이 데이터를 영구적으로 저장한다. 


저장장치는 자성을 이용하는 장치,레이저를 이용하는 장치, 메모리를 이용하는 장치로 구분 할 수 있다. 자성을 이용하는 장치는 하드디스크, 카세트 테이프, 플로피디스크

레이저를 이 용하는 장치는 CD,DVD등


메모리를 이 용하느 장치는 USB드라이버, SD카드,SSD등이다.


1-4) 메인보드


컴퓨터의 다양한 부품은 버스로 연결된다. 

교통수단인 버스는 정해진 경로로 다니는데 

컴퓨 터의 버스도 일정한 규칙에 따라 각 장치에 데이터를 전송하는 역할을 한다. 

버스는 각 장치 를 연결하는 선의 집합이자 데이터가 지나다니는 통로이다. 

메인보드는 CPU와 메모리 등 다양한 부품을 연결하는 커다란 판이다. 

메인보드에는 가는 선, 즉 버스가 복잡하게 얽혀 있으며 전력이 공급되면 버스로 연결된 부품이 작동한다. 



2) 폰노이만구조


오늘날의 컴퓨터는 대부분 폰노이만 구조를 따른다. 


폰노이만 구조는 CPU, 메모리,입출력장치,저장장치가 버스로 연결되어 있는 구조를 말한다.


폰노이만 구조가 등장하기 전의 컴퓨터는 전선을 연결하여 회로를 구성하는 하드와이어링 형 태였기 때문에 다른 용도로 사용하려면 전선의 연결을 바꾸어야 했다. 


이러한 문제를 해결하기 위해 미국의 수학자 존 폰노이만은 메모리를 이용하여 프로그래밍이 가능 한 컴퓨터 구조,즉 하드웨어는 그대로 둔 채 작업을 위한 프로그램만 교체하여 메모리에 올 리는 방식을 제안했다. 


폰노이만 구조 덕분에 프로그래밍 기술을 이용하여 컴퓨 터로 다양한 작업을 할 수 있게 되었다. 


폰노이만 구조에서 가장 중요한 특징은, ‘모든 프로그램은 메모리에 올라와야 실행할 수 있다’ 는 것이다. 


예를 들어 워드프로세서로 보고서를 작성했다고 가정해보자. 워드프로세서 프로그램과 보고서 파일은 저장장치인 하드디스크에 저장되지만 프로그램과 데이터가 저장장치 에서 바로 실행되지는 않는다. 저장장치에 있는 프로그램을 실행하려면 프로그램이 메모리에 올라와야하며, 운영체제도 프로그램이기 때문에 메모리에 올라와야 실행이 가능하다. 즉 메모리가 핵심적인 작업 공간이다.

저장 장치는 보조적인 공간이다.


3) 하드웨어 사양 관련 용어


3-1) 클록


클록은 CPU의 속도와 관련된 단위이다. 

CPU는 작업을 할 때 일정한 박자가 있는데, 이 박자를 만들어내는 것이 클록이다. 

클록이 일정 간격으로 틱(tick)을 만들면 거기에 맞추어 CPU 안의 모든 구성 부품이 작업을 한다. 

틱은 펄스(pulse) 또는 클록틱(clock tick)이라고도 부른다.

버스에는 여러 개의 부품이 연결되어 있는데

메인보드의 클록이 틱을 보낼 때마다 데이터 를 보내거나 받는다. 


3-2) 헤르츠


헤르츠(Hz)는 클록틱이 발생하는 속도를 나타내는 단위이다. 

1초에 클록틱이 몇 번 발생 하는지를 나타내는데

1초에 클록틱이 한 번이면 1Hz

1,000번이면 1kHz(1,000Hz) 이다. 

CPU가 3.4GHz라면 1초에 클록틱이 약 34억번 발생하여 1초에 34억 번의 연산(작업)을 할 수 있 음을 의미한다. 

버스도 클록틱에 맞추어 데이터를 전송하기 때문에 메인보드의 성능도 클록으로 표시한다. 

예르들어 1,333MHz(약 1.3GHz)의 클톡을 사용하는데 메인보드는

초당 1.3억 번의 데이터 이동이 가능하다는 의미이다. 


3-3) 시스템 버스와 cpu 내부 버스

시스템 버스system bus는 메모리와 주변장치를 연결하는 버스로 

FSB Front-Side Bus ,

즉 전면 버스라고 한다. 1,333MHZ의 시스템 버스를 가진 메인보드에는 같은 속도를 가진 부품이 연결되고 메모리도 1,333MHz의 속도로 작동한다.

이 메인보드에 800MHz와 같이 낮은 속도의 메모리를 사용하면 메인보드가 800MHz로 작동하여 컴퓨터의 성능이 저하된다. 


CPU 내부 버스는 CPU 내부에 있는 장치를 연결하는 버스로 BSB Back Side Bus , 즉 후면 버스라고 한다. CPU 내부 버스의 속도는 CPU의 클톡과 같아서 시스템 버스보다 훨씬 빠르다


CPU는 CPU 내부 버스의 속도로 작동하고 메모리는 시스템 버스의 속도로 작동하기 때문에 두 버스의 속도 차이로 인해 작업이 지연되는 문제가 있다.




2. cpu와 메모리


1) CPU 의 구성과 동작

1-1)CPU 의 기본구성


CPU는 명령어를 해석하여 실행하는 장치.

CPU는 산술논리 연산장치,

제어장치,

레지스터로 구성되며,

이것들의 협업으로 작업을 처리한다. 


산술논리 연산장치

CPU에서 데이터를 연산하는 장치가 산술논리 연 산장치


Arithmetic: and Logic Unit. ALU이다. 


산술논리 연산장치는 데이터의 덧셈,뻘셈,곱셈,나 눗셈 같은 산술 연산과 AND, OR 같은 논리 연산을 수행한다.


제어장치 

 CPU에서 작업을 지시하는 부분을 제어장치control unit라고 한다. 


레지스터

CPU 내에 데이터를 임시로 보관하는 곳을 레지스터 register라고 한다. 

CPU가 연산을 하려면 필요한 데이터를 CPU로 가져와 임시로 보관해야 하는데,이때 사용 되는 장소가 레지스터이다


1-2) CPU의 명령어 처리 과정(CPU의 산술논리 연산장치,제어장치,레지스터의 협업)


CPU는 필요한 데이터를 메모리에서 가져와 레지스터에 저장하고 

산술논리 연산장치를 이용 하여 연산을 한 후,

그 결과를 다시 레지스터에 저장했다가 메모리로 옮긴다. 



여기서 D2, D3, sum은 데이터를 저장할 수 있는 메모리 주소의 다른 이름으로, 메모리 주소를 외우기가 어렵기 때문에 주소 대신 적당한 이름을 만들어 붙인 것이다



CPU는 0과 1 의 2진수로 이루어진 기계어machine code만 인식한다. 따라서 위 코드를 실행하 려면 컴파일러를 이용하여 기계어로 바꾸어야 한다. 여기서는 사람이 이해하기 어려운 기계 어 대신 어셈블리어로 작성한 코드를 살펴보자. 어셈블리어는 기계어를 사람이 이해하기 쉬 운 기호와 일대일로 대응시켜 기호화한 언어이다.


위 코드를 어셈블리어로 변환한 것이다.

 D2는 메모리의 100번지,D3 은120번지,sum은 160번지를 가리킨다고 가정하자


 어셈블리어에서 LOAD는 가져오기, ADD는 더하기,MOVE는 옮기기 명령어이며 register 1은 레지스터 1을,mem(100)은 메 모리의 100번지를 의미한다. 


01행: 메모리의 100번지(D2)에 있는 값을 레지스터 2로 가져온다. •

02행: 메모리의 120번지(D3)에 있는 값을 레지스터 3으로 가져온다. 

• 03행: 레지스터 2와 레지스터 3에 저장된 값을 더한 결과를 레지스터 5에 넣는다. 

• 04행: 레지스터 5의 값을 메모리의 160번지(sum)로 옮긴다

모든 데이터가 준비되면 산술논리 연산 장치에서 두 값을 더하여 그 결과값을 레지스터 5에 저장하고



제어장치는 명령어를 해석하여 제어 신호를 보내고 CPU 내의 데이터 흐름을 조절하는 역할 을 한다. 위의 예에서 제어장치는 ‘메모리에서 데이터를 가져와라’,‘덧셈을 실행하라’,‘덧셈한 결과값을 메모리로 옮겨놓아라’라고 신호를 보낸다




1-3) 레지스터의 종류



CPU의 명령어 처리 과정에서 사용되는 레지스터는 데이터 레지스터와 주소 레지스터이다. 


데이터 레지스터와 주소 레지스터는 사용자 프로그램에 의해 변경되기 때문에 

사용자 가시 레지스터 user-visible register라고 부른다

 

• 데이터 레지스터(DR): 데이터 레지스터data register는 메모리에서 가져온 데이터를 임시로 보관 할 때 사용한다. 

CPU에 있는 대부분의 레지스터가 데이터 레지스터이기 때문에 

일반 레지스터 또는 범용 레지스터라고 부른다. 


• 주소 레지스터(AR): 데이터 또는 명령어가 저장된 메모리의 주소는 주소 레지스터address register 에 저장된다. 


- 특수 레지스터


데이터 레지스터와 주소 레지스터 외에 특별한 용도로 사용되는 레지스터도 있는데 

이를 특수 레지스터라고 한다. 

특수 레지스터는 사용자가 임의로 변경할 수 없기 때문에 

사용자 불가 시레지스터user-invisible register라고 부른다. 

특수 레지스터에는 다음과 같은 종류가 있다. 


• 프로그램 카운터(PC): CPU는 다음에 어떤 명령어를 처리해야 할지 알아야 한다. 


 프로그램 카운터는 다음에 실행할 명령어의 주소를 기억하고 있다가 제어장치에 알려준다. 다음에 실행할 명령어의 주소를 가리키기 때문에 프로그램 카운터를 명령어 포인터 instruction pointer라고 도한다.

다음에 실행할 명령어의 위치 정보(코드의 행 번호,메모리 주소)를 저장한다.



 • 명령어 레지스터(IR): 명령어 레지스터 instruction register는 현재 실행 중인 명령어를 저장한다. 

제어장치는 명령어 레지스터에 있는 명령을 해석한 후 외부 장치에 적절한 제어 신호를 보낸다. 


• 메모리 주소 레지스터(MAR): 메모리 관리자가 접근해야 할 메모리의 주소를 저장한다


메모리 주소 레지스터memory address register 는 메모리에서 데이터 를 가져오거나 반대로 메모리로 데이터를 보낼 때 주소를 지정하기 위해 사용한다. 명령어를 처 리하는 과정에서 필요한 메모리 주소를 이 레지스터에 넣으면 메모리 관리자가 이를 인식하여 해당 메모리 위치의 데이터를 가져오거나 해당 메모리 위치에 데이터를 저장한다. 


• 메모리 버퍼 레지스터(MBR): 메모리 버퍼 레지스터memory buffer resister는 메모리에서 가져온 데 이터나 메모리로 옮겨 갈 데이터를 임시로 저장한다. 

메모리 관리자가 메모리에서 가져온 데이터를 임사로 저장한다.


메모리 버퍼 레지스터는 항상 메모리 주소 레지스터와 함께 동작한다. 


프로그램 상 태 레지스터Program Status Register,PSR는 산술논리 연산장치와 연결되어 있으며 연산 결과가 양 수인지,음수인지,0이 아닌지 또는 자리 올림의 유무 등을 저장한다


01 행인 ‘LOAD mem(100), register 2;’의 실행 과정을 통해 특수 레지스 터의 역할을 살펴보자. 


1 프로그램 카운터에는 현재 실행 중인 코드의 행 번호 1이 저장되 고 이 번호는 제어장치에 전송된다. 


명령어 레지스터에는 ‘LOAD mem(100), register 2;’의 LOAD가 탑재된다.


 © 제어장치가 명령어 레지스터에 있는 명령을 해석하여 메모리에 있는 데이터를 가져오라는 제어 신호를 보낸다. 


© 메모리 주소 레지스터에는 100이 저장되고,메 모리 관리자는 메모리의 100번지에 저장된 값을 메모리 버퍼 레지스터로 가져온다.


 © 제어 장치는 메모리 버퍼 레지스터에 저장된 값을 레지스터 2로 옮긴다.


단순하게 설명하기 위해 ‘LOAD mem(100). register 2;’를 메모리에서 가져오는 과정은 생략


1-4) 버스의 종류

버스는 CPU와 메모리, 주변장치 간에 데이터를 주고받을 때 사용한다. 

버스에는 다음 작업을 지시하는 제어 신호,

메모리의 위치 정보를 알려주는 주소,

처리할 데이터가 오고 가며 각각 제어 버스,주소 버스,데이터 버스에 실린다.


- 제어버스

CPU가 메모리와 주변장치에 제어 신호를 보내기 위해 사용한다


제어 버스control bus에서는 다음에 어떤 작업을 할지 지시하는 제어 신호가 오고 간다. 


메모 리에서 데이터를 가져올지, 아니면 처리한 데이터를 옮겨놓을지에 대한 지시 정보가 오고 가는


데, 메모리에서 데이터를 가져올 때는 읽기 신호를 보내고, 처리한 데이터를 메모리 로 옮겨놓을 때는 

쓰기 신호를 보낸다. 주변장치의 경우도 마찬가지로 하드디스크에 저장 명령을 내리거나 사운드카드


에 소리를 내라는 명령을 내릴 때 제어 버스를 통해 전달된다. 


제어 버스는 CPU의 제어장치와 연결되어 있다. 


메모리와 주변장치에서도 작업이 완료되거나 오류가 발생하면 제어 신호를 보내기 때문에 양방향이다.


메모리에서 오류가 발생 하거나 네트워크 카드에 데이터가 모두 도착했다는 신호는 모두 제어 버스를 통해 CPU로 전달된다. 제어 버스의 신호는 CPU, 메모리,주변장치와 양방향으로 오고 간다.


■ 주소 버스


주소 버스 address bus에서는 메모리의 데이터를 읽거나 쓸 때 어느 위치에서 작업할 것인지 를 알려주는 위치 정보(주소)가 오고 간다. 

주변장치의 경우도 마찬가지로 하드디스크의 어느 위치에서 데이터를 읽어올지,

어느 위치에 저장할지에 대한 위치 정보가 주소 버스를 통해 전달된다.

 주소 버스는 cpu의 메모리 주소 레지스터와 연결되어 있으며 단방향이다.

 CPU에 서 메모리나 주변장치로 나가는 주소 정보는 있지만 

주소 버스를 통해 CPU로 전달되는 정보는 없다



■ 데이터버스 

제어 버스가 다음에 어떤 작업을 할지 신호를 보내고 

주소 버스가 위치 정보를 전달하면 데 이터가 데이터 버스data bus에 실려 목적지까지 이동한다.

 데이터 버스는 메모리 버퍼 레지 스터와 연결되어 있으며 양방향이다



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

4차선 도로 는 한 번에 4대의 차가 동시에 다닐 수 있듯이 

대역폭의 크기만큼 데이터가 오고 갈 수 있다. 

버스의 대역폭은 CPU가 한 번에 처리할 수 있는 데이터의 크기와 같다. 

흔히 32bit CPU, 64bit CPU라고 하는데 여기서 32bit, 64bit는 CPU가 한 번에 처리할 수 있는 데이터의 최 대 크기이다.

 32bit CPU는 메모리에서 데이터를 읽거나 쓸 때 한 번에 최대 32bit를 처리할 수 있으며,

이 경우 레지스터의 크기도 32bit, 버스의 대역폭도 32bit이다. 

버스의 대역폭,레 지스터의 크기,메모리에 한 번에 저장할 수 있는 데이터의 크기는 항상 같다. 

참고로 CPU가 한 번에 처리할 수 있는 데이터의 최대 크기를 워드word라고 하며,버스의 대역폭과 메모리에 한 번에 저장되는 단위도 워드이다. 32bit CPU에서 1워드는 32bit이다


2.1 메모리의 종류


메모리는 읽거나 쓸 수 있는 램 RAM Random Access Memory 과 읽기만 가능한 ROM Read Only Memmory 로 구분된다. 

램은 무작위로 데이터를 읽어도 저장된 위치와 상관없이 같은 속도로 데이터를 읽을 수 있다는 의미에서 붙은 이름이다

램은 전력이 끊기면 데이터가 사라지는 휘발성 메모리와 전력이 끊겨도 데이터를 보관할 수 있는 비휘발성 메모리로 나뉜다.


- 휘발성메모리

휘발성 메모리volatility memory에는 DRAM Dynamic (동적 램) SRAM static ram 정적램이 있다.

DRAM은 저장된 0과 1의 데이터가 일정 시간이 지나면 사라지므로 일정 시간마다 다시 재생시켜야 한다. 

DRAM의 ‘Dynamic’은 시간이 지나면 데이터가 사라지기 때문에 재생이 필요하다는 의미이다

. SRAM은 전력이 공급되는 동안에는 데이터를 보관할 수 있 어 재생할 필요가 없다. 따라서 속도는 빠르지만 가격이 비싸다

일반적으로 메인메모리에 는 DRAM을 사용하고,캐시 같은 고속 메모리에는 SRAM을 용한다


SDRAM Synchronous Dynamic Random Access Memory은 DRAM이 발전된 형태로 SRAM과는 완 전히 다른 종류의 램이다. SDRAM은 클록틱(펄스)이 발생할 때마다 데이터를 저장하는 동기 DRAM이다


CPU는 3GHz 이상의 매우 빠른 속도로 작동하지만 

SDRAM은 메인보드의 시스템 버스와 같은 속도로 느리게 작동하여 전반적인 작업 속도를 떨어뜨리는 문제가 있다. 

이러한 속도 차이를 완화하기 위해 SDRAM의 대역폭 을 늘려 데이터 입출력 속도를 빠르게 한 것이

 DDR Double Data Rate SDRAM이다. 

기존의 SDRAM이 클록틱 한 번에 1 개의 워드를 저장하는 반면에

 DDR SDRAM은 클록틱 한 번에 2개의 워 드를 저장한다. 

그래서 기존의 SDRAM을 SDR Single Data Rate SDRAM이라고 부른다


 SDRAM이 1 차선 도로라면 DDR SDRAM은 2차선 도로이다.

 데이터 가 지나는 길의 폭(도로 폭)을 대역폭이라고 하는데, 

DDR SDRAM의 대역폭은 SDRAM보다 2배이다. 

DDR2 SDRAM은 DDR SDRAM보다 대역폭이 2배 더 크고 SDRAM보다는 4배(22배) 더 크다.

 대역폭이 크다는 것 은 더 빨리 저장할 수 있다는 의미이다




메인메모리를 비휘발성 메모리로 만들면 전력이 끊겨도 내용이 남기 때문에 편리할 수도 있다. 하지만 비휘발성 메모리는 전력이 끊겨도 데이터를 보관해야 하므로 메모리 내부가 복잡하고 속도가 느리며 가격이 비싸다. 그래서 아직도 메인메모리는 휘발성 메모리를 사 용하고 있다.


-비휘발성메모리 

비휘발성 메모리non-volatility memory에는 플래시 메모리flash memory, FRAM, PRAM 등이 있다. 이 중 플래시 메모리는 디지털카메라,MP3 플레이어, USB 드라이버같이 전력이 없어도 데이터를 보관하는 저장장치로 많이 사용된다..


그런데 플래시 메모리의 각 소자는 최대 사용 횟수가 제한되어 보통 소자 하나당 몇 천 번에서 만 번 정도 사용하면 제 기능을 잃는다.

 따라서 SD 카드나 USB 드라이버를 오래 사용하면 성 능이 저하되거나 데이터를 잃어버릴 수 있으니 주의해야 한다. 


이 외에도 많이 사용되는 비휘발성 메모리는 하드디스크를 대신하도록 만든 SSD이다.


 SSD는 가격이 비싸지만 빠른 데이터 접근 속도,저전력,내구성 때문에 

개인용 컴퓨터는 물론 노트북, 스마트폰 등 많은 기기에 사용되고 있다.


 램과 달리 롬은 전력이 끊겨도 데이터를 보관하는 것이 장점이지만 데이터를 한 번 저장하면 바꿀 수 없다. 

예를 들면 흔히 빈 CD는 CD-ROM이라고 하며 데이터를 한 번만 저장할 수 있 다 

이 러한 특성 때문에 바이오스BIOS(Basic Input/Output System)를 롬에 저장한다 

롬의 종류에는 데이터를 지우거나 쓸 수 없는 마스크 롬mask ROM, 

전용 기계를 이용하여 

데 이터를 한 번만 저장할 수 있는 PROM , 

데이터를 여러 번 쓰고 지울 수 있는 EPROM이 있다.

 EPROM은 플래시 메모리처럼 사용할 수 있지만 가 격이 비싸서 잘 사용하지 않는다. 



2.2 메모리 보호 


일괄 작업 시스템(일괄 처리 시스템)에서는 메모리가 운영체제 영역과 사용자 영역으로 구분 된다. 

일괄 작업 시스템에서 메모리 보호는 사용자 영역의 작업이 운영체제 영역으로 침범하 지 못하도록 막는 것이다. 

현대의 운영체제는 시분할 기법을 사용하여 여러 프로그램을 동시 에 실행하므로 

사용자 영역이 여러 개의 작업 공간으로 나뉘어 있다. 

이러한 상황에서 메모리 보호는 매우 중요한 문제이다. 

메모리가 보호되지 않으면 어떤 작업이 다른 작업의 영역을 침범하여 프로그램을 파괴하거나 데이터를 지울 수도 있으며,

최악의 경우 운영체제 영역을 침 범하면 시스템이 멈출 수도 있다. 

이처럼 운영체제 영역이나 다른 프로그램 영역으로 침범하려는 악성 소프트웨어를 바이 러스라고 한다.

운영체제도 소프트웨어 중 하나라는 사실을 잊지 말아야 한다. 

운영체제도 CPU를 사용하는 작업 중 하나이기 때문에 사용자의 작업이 진행되는(사용자 프로세스가 CPU를 차지하는)

 동 안에는 운영체제의 작업이 잠시 중단된다.

 운영체제의 작업이 중단된 상태에서 사용자의 작업으로부터 메모리를 보호하려면 하드웨어의 도움이 필요하다.

 메모리를 보호하기 위해 CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계 레지스터 

bound register에 저장한 후 작업을 한다. 

또한 현재 진행 중인 작업이 차지하고 있는 메모리의 크 기,

즉 마지막 주소까지의 차이를 한계 레지스테 Limit register에 저장한다. 

그리고 사용자의 작업 이 진행되는 동안 이 두 레지스터의 주소 범위를 벗어나는지 하드웨어적으로 점검함으로써 메 모리를 보호한다.


경계 레지스터와 한계 레지스터의 역할을 보여준다.



위 그림에서 B 작업의 메모리 시작 주소 140은 경계 레지스터에,B 작업의 크기 40은 한계 레지스터에 저장된다. 

B 작업이 데이터를 읽거나 쓸 때마다 CPU는 해당 작업이 경계 레지스 터와 한계 레지스터의 주소값 안에서 이루어지는지 검사한다.

만약 두 레지스터의 값을 벗어 난다면 메모리 오류와 관련된 인터럽트가 발생한다. 

인터럽트가 발생하면 모든 작업이 중단 되고 CPU는 운영체제를 깨워서 인터럽트를 처리하도록 시킨다.

메모리 영역을 벗어나서 발 생한 인터럽트의 경우 운영체제가 해당 프로그램을 강제 종료시킨다.

 이처럼 모든 메모리 영 역은 하드웨어와 운영체제의 협업에 의해 보호받는다.


2.3 부팅 


응용 프로그램은 운영체제가 메모리에 올려서 실행하는데,

그렇다면 운영체제는 누가 메모리 에 올려서 실행할까? 

운영체제도 CPU에 의해 실행되는 프로그램이기 때문에 당연히 메모리 에 올라와야 한다.

 따라서 컴퓨터를 켰을 때 누군가가 운영체제를 메모리에 올려서 실행해야 한다.

 컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정을 부팅이라고 한다. 



사용자가 컴퓨터의 전원을 켜면 롬에 저장된 바이오스가 실행된다. 


바이오스는 CPU, 메모리, 하드디스크,키보드,마우스와 같은 주요 하드웨어가 제대로 작동하는지 확인한다.


 만약 이상 이 있으면 ‘삐〜’ 소리와 함께 오류 메시지를 출력하고,


이상이 없으면 하드디스크의 마스터 부 트 레코드Master Boot Record. MBR에 저장된 작은 프로그램을 메모리로 가져와 실행한다.


 마스터 부트 레코드는 하드디스크의 첫 번째 섹터를 가리키며,운영체제를 실행하기 위한 코드인 부트스랩이 이곳에 저장되어 있다. 

부트스트랩 코드는 운영체제를 메모리로 가 져와 실행하는 역할을 하는 작은 프로그램이다. 

예를 들어 유닉스용 부트스트랩이 실행되면 유닉스 운영체제가 메모리에 올라오고,

윈도우용 부트스트랩이 실행되면 윈도우 운영체제가 메모리에 올라온다. 

요즘은 USB 드라이버에도 마스터 부트 레코드를 탑재할 수 있다. 

흔히 말 하는 ‘부팅 USB 만들기’나 ‘부팅 DVD 만들기’는 USB 드라이버나 DVD에 마스터 부트 레코 드 영역을 만들고 

필요한 부트스트랩 코드를 마스터 부트 레코트에 설치하는 것을 뜻한다. 

마스터 부트 레코드에 있는 부트스트랩이 메모리에 올라오면 하드디스크에 저장된 운영체제 를 메모리로 불러온다.


 따라서 마스터 부트 레코드가 손상되면 운영체제를 실행할 수 없다. 

이는 컴퓨터 바이러스의 좋은 공격 대상이 된다. 

일부 바이오스는 사용자 옵션 부분에 운영체 제 보호 항목을 만들어 마스터 부트 레코드를 수정할 수 없게 한다. 

만약 새로운 운영체제를 다시 설치한다면 이 운영체제 보호 옵션을 해제해야 한다. 

한 컴퓨터에 운영체제 2개를 설치해보면 부트스트랩을 확인할 수 있다. 


컴퓨터에 윈도우 7과 윈도우 10을 같이 설치하거나 리눅스와 윈도우 운영체제를 같이 설치하는 것이다.

 이 경우 바 이오스가 하드웨어 점검을 마치고 마스터 부트 레코드에서 부트스트랩을 가져와 실행하면, 

어떤 운영체제로 사용할 것인지 물어보는 화면이 나타난다. 

이 화면이 부트스트랩 코드가* 실 행된 화면이다. 하나의 운영체제가 설치된 컴퓨터의 부트스트랩이라면 이러한 과정 없이 바 로 운영체제를 메모리에 올린다.




반응형

'Basic > 운영체제' 카테고리의 다른 글

프로세스 VS 프로그램  (0) 2020.12.25
ssl 인증서 재발급 과정  (0) 2020.11.11
버퍼의 개념  (0) 2020.08.11
운영체제의 구조  (0) 2020.02.02
운영체제의 정의와 역할, 필요성, 목표  (0) 2020.01.30