컴퓨터 시스템은 하드웨어와 소프트웨어로 구성된다. 하드웨어는 데이터를 처리하는 물리적인 물체 기계장치를 의미하며 소프트웨어는 어떠한 작업을 명령하는 프로그램인 소프트웨어로 구성되어 있다. 운영체제는 물리적 기계장치인 하드웨어를 관리하며 명령하는 프로그램 소프트웨어이다. 이러한 소프트웨어를 이해하기 위해 우선 하드웨어를 알아야 소프트웨어를 알 수 있다.
컴퓨터 하드웨어는 기본적으로 프로세서, 메모리, 주변장치로 이루어져 있고 이것들은 시스템 서비스로 연결한다.
프로세서
중앙처리장치라고도 하는 프로세스는 컴퓨터 하드웨어에 장착한 모든 기계장치의 동작을 조종하고 명령을 실행시킨다.
일반적으로 두 용어를 구분하지 않고 사용한다.
프로세서는 연산장치와 제어장치 그리고 레지스터로 구성되고 이것들은 내부 버스로 연결한다.
프로세서의 종류는 매우 많고 다양한데 이는 레지스터 또한 종류와 크기도 다양하다 레지스터를 용도에 따라 구분하는 것처럼 여러 시점으로 구분이 가능한데 용도를 기준으로 보면 전용 레지스터와 범용 레지스터로 구분이 가능하고 사용자가 정보를 바꿀 수 있는지에 따라 사용자 가시 레지스터와 사용자 불가시 레지스터로 구분이 가능하다. 그리고 저장되는 정보의 종류에 따라 각각 데이터 레지스터, 주소 레지스터, 상태 레지스터 등 다양하게 구별이 된다.
사용자 가시 레지스터는 접근이 가능한 데이터와 주소, 일부분의 조건 코드를 가지고 있을 수 있는데 그래서 사용자가 운영체제와 사용자 프로그램을 이용하여 정보를 이용하여 바꿀 수가 있는 레지스터이다. 종류는 두 가지인데 데이터 레지스터와 주소 레지스터이다.
데이터 레지스터는 함수 연산에 필요한 데이터를 가져 저장하여 값, 문자 등을 저장한다. 산술 연산이나 논리 연산에 이용되며, 연산 결과로 플래그 값을 저장하여 지니게 된다.
주소 레지스터는 주소나 유효 주소를 계산하는데 필요한 주소의 일정 부분을 저장한다. 주소 레지스터에 저장한 값을 이용하여 산술 연산을 할 수 있다. 또 주소 레지스터는 3개의 종류가 있는데 기준 주소 레지스터, 인덱스 레지스터, 스택 포인터 레지스터 등이 있다.
다음 사용자 불가시 레지스터를 알아보자
사용자 불가시 레지스터는 프로세서의 상태와 제어를 관리하는데 이용자가 정보를 바꿀 수 없는 레지스터이다
종류는 5가지 각각 프로그램 카운터, 명령어 레지스터, 누산기, 메모리 주소 레지스터, 메모리 버퍼 레지스터 등이 있다
프로그램 카운터는 다음에 실행할 명령어의 출처 주소를 보관하는 레지스터이다. 계수기로 되어 있어 분기 명령어는 목적 주소로 갱신이 가능하고 실행할 명령어를 메모리에서 읽게 되면 명령어의 길이만큼 증가하게 되어 다음 명령을 가리킬 수 있게 된다.
명령어 레지스터는 현재 실행하는 명령어를 지닌 레지스터이다.
누산기는 데이터를 임시로 저장하는 레지스터이다.
메모리 주소 레지스터는 프로세서가 참조하려는 데이터의 주소를 보여주어 메모리에 가는 버퍼 레지스터이다.
메모리 버퍼 레지스터는 프로세서가 메모리에서 읽거나 메모리에 지니게 될 데이터를 보관하는 버퍼 레지스터이다. 메모리 데이터 레지스터라는 다른 명칭도 존재한다.
메모리
메모리는 컴퓨터의 성능과 밀접한 관계인데, 속도가 빠른 메모리는 가격이 비싸 보통은 메모리 계층 구조를 구성하여 비용, 속도, 저장용량, 접근시간 등을 보완 한다. 이용자는 당연히 크고 빠르며 값이 싼 메모리를 요구한다.
속도는 엄청 빠르나 용량이 작은 레지스터부터 속도는 느리지만 용량이 엄청 큰 보조기억장치까지 메모리의 종류는 엄청 다양하다. 메모리 계층 구조는 메인 메모리를 중심으로 파일이나 프로그램 등을 저장하는 속도가 느린 자기테이프, 메인 메모리와 프로세서의 속도 차이를 보조하는 캐시가 있으며 대용량의 자기디스크, 이동이 편리한 광디스크, 프로세서가 사용한 데이터를 지닌 가장 속도가 빠른 레지스터가 있다.
메모리 계층 구조는 1950~1960년대 너무 값이 비싼 메인 메모리의 가격 논란 때문에 제안된 방법이다. 불필요한 프로그램과 데이터는 보조기억장치에 지니게 했다가 실행 및 참조할 때만 메인 메모리로 옮기는 원리를 적용한 방법인데 프로그램을 실행하거나 데이터를 참조하기 위해서는 어쩔 수 없이 모두 메인 메모리에 올려야 한다. 그렇다고 고가인 메인 메모리를 무식하게 크게 할 수는 없어서 이런 원리를 적용하게 된 것이다.
그래서 메모리 계층 구조는 비용,속도,용량이 다른 메모리를 효율적으로 사용함으로써 시스템의 성능을 증가시킨다
캐시
프로세서 밖이나 안에 있으며, 느린 메모리와 처리 속도가 빠른 프로세소의 속도 차이를 보조하는 고속 버퍼이다.
레지스터
프로세서 안에 있는 프로세서가 이용할 데이터를 지니고 있는 가장 빠른 메모리이다
메인 메모리
입출력 장치가 메인 메모리에서 데이터를 받거나 저장하며 프로세서 외부에 있으며, 프로세서에서 즉시 수행할 프로그램과 데이터를 저장하거나 프로세서에서 수행한 결과를 메인 메모리에 지니게 한다.
주 기억장치 또는 1차 기억장치라고도 한다. 저장 밀도가 높고 비용이 값싼 DRAM을 많이 이용한다.
메인 메모리는 다수의 셀로 구성되며, 셀이 k비트이면 셀에 2k값을 지니게 할 수 있는데 이러한 것처럼 각 셀은 비트로 구성된다. 메인 메모리에 데이터를 저장할 때는 셀 한 개나 여러 개에 나누어 지니게 한다. 셀은 주소로 참조하는데 n비트이라면 주소의 범위는 0~2n제곱 -1이다.
이러한 것처럼 컴퓨터에 할당된 주소를 물리적 주소라고 칭한다. 컴파일러가 프로그램을 기계 명령어로 변환할 때 변수와 명령어에 주소를 나누어 주는데 이 주소를 논리적 주소(가상 주소)라고 한다. 프로그래머는 물리적 주소 대신 수식이나 변수를 이용하며 논리적 주소는 별도의 주소 공간에 등장한다. 컴파일로 논리적 주소를 물리적 주소로 바꾸는 과정을 매핑 또는 매모리 맵이라고 한다.
운영체제는 가상 메모리 방법을 사용하여 메인 메모리의 유효 크기를 늘릴 수 있다.
메모리 속도는 메모리 접근시간과 메모리 사이클 시간으로 표현할 수 있다. 메모리 사이클 시간은 두 번의 연속적인 메모리 동작 사이에 필요한 최소 지연되는 시간이다. 보통 사이클 기간이 접근시간 보다 살짝 길며, 메모리의 세부 구현 방식에 따라 다르다. 메모리 접근시간은 명령이 시작된 후 목표 주소를 검색하여 데이터 쓰기가 발동할 때까지 걸린 시간이다.
메인 메모리는 프로세서와 보조기억장치 사이에 있다. 프로세서와 메인 메모리 간에 속도 차이가 나면 메인 메모리의 부담을 줄이기 위해 프로세서 안이나 밖에 캐시를 구현하기도 하며, 디스크 입출력 병목 현상을 해결하는 부분을 맡기도 한다.
시스템 버스
시스템 버스는 하드웨어를 물리적으로 이어지게 하여 서로 정보를 주고받을 수 있게 하는 길이다. 시스템 버스는 기능에 따라 데이터 버스, 주소 버스, 제어 버스로 구분한다. 또한 컴퓨터 안의 다양한 신호를 시스템 버스로 전달한다.
데이터 버스는 프로세서와 메인 메모리, 주변장치 사이에서 정보를 전송한다. 데이터 버스를 구성하는 배선 수는 프로세서가 한 번에 전송이 가능한 비트 수를 결정하는데, 이것을 워드라고 한다.
주소 버스는 프로세서가 시스템의 구성 요소를 구별하는 주소 데이터를 전송이 가능하다. 주소 버스를 구성하는 배선 수는 프로세서와 접속할 수 있는 메인 메모리의 최대 크기를 결정한다.
제어 버스는 제어 신호로 연산장치의 연산 종류와 메인 메모리의 읽기나 쓰기 행동을 정한다. 또 프로세서가 시스템의 구성 요소를 조종하는 데 사용한다.
주변장치
주변장치는 간단히 입출력장치라고도 하나, 대략적으로는 입력장치, 출력장치, 저장장치로 구분하며, 프로세서와 메인 메모리를 뺀 나머지 하드웨어 구성 요소이다.
입력장치: 컴퓨터에서 처리할 정보를 외부로부터 입력하는 장치다.
출력장치: 입력장치와 정반대로 컴퓨터에서 처리한 정보를 밖으로 보내는 장치이다.
저장장치: 데이터를 입력하여 저장하며, 저장한 정보를 보일 수 있게 하는 공간이므로 입출력장치에 포함하기도 한다. 메인 메모리와 다르게 거의 영구적으로 정보를 보관하는 장치이다.
마무리
운영체제는 컴퓨터의 핵심 요소로서, 하드웨어와 소프트웨어 사이의 원활한 상호작용을 가능하게 한다. 하드웨어의 구성 요소인 프로세서, 메모리, 그리고 시스템 버스는 컴퓨터의 성능과 효율성을 결정하는 중요한 부분들이다. 또한, 주변장치들은 컴퓨터가 외부와 소통하는 데 필수적인 역할을 한다. 운영체제는 이러한 모든 구성 요소를 관리하며, 이를 통해 사용자가 효율적으로 컴퓨터를 사용할 수 있도록 돕는다.
'IT 및 프로그래밍' 카테고리의 다른 글
프로세스와 스레드 중 프로세스의 상태 변화에 대해 (0) | 2024.10.21 |
---|---|
프로세스와 스레드 중 프로세스의 개념에 대하여 (0) | 2024.10.21 |
운영체제의 서비스에 대해 (0) | 2024.10.20 |
운영체제의 발전 과정과 유형 중 발전 과정에 대하여 - 2 (0) | 2024.10.20 |
운영체제의 발전 과정과 유형 중 발전 과정에 대하여 - 1 (0) | 2024.10.20 |
운영체제 개념과 발전 목적 (0) | 2024.10.17 |
운영체제 컴퓨터 시스템의 동작 (0) | 2024.10.17 |
파이썬 변수와 연산자에 관하여 (0) | 2024.10.16 |