1. 하드웨어의 구성
컴퓨터는 CPU, 메인메모리, 입력장치, 출력장치, 저장장치로 구성됩니다.
컴퓨터로 하는 작업은 대부분 CPU와 메인메모리의 협업으로 이루어지기 때문에 CPU와 메인메모리는 필수장치로 분류되고 그 외의 부품은 주변장치라고 합니다.
2. 폰노이만 구조
CPU, 메모리, 입출력장치, 저장장치가 버스로 연결되어 있는 폰노이만 구조에서는 모든 프로그램이 메모리에 올라와야 실행이 가능합니다.
3. CPU
CPU는 명령어를 해석하여 실행하는 장치로 산술논리 연산장치, 제어장치, 레지스터로 구성됩니다.
- 산술논리 연산장치 - 요리사가 재료를 삶거나 찌거나 볶듯이 산술논리 연산장치는 데이터의 덧셈, 뺄셈, 곱셈, 나눗셈 같은 산술 연살과 AND, OR 같은 논리 연산을 수행합니다.
- 제어장치 - CPU에서 작업을 지시하는 부분을 말합니다. '메모리에 있는 값을 레지스터로 가져와라', '값을 더해라', '더한 값을 메모리에 이동시켜라' 등의 지시를 합니다.
- 레지스터 - CPU 내에 데이터를 임시로 보관하는 곳을 레지스터 라고 합니다.
레지스터의 종류
1) 사용자 가시 레지스터 - 사용자에 프로그램에 의해 변경되는 레지스터 입니다.
- 데이터 레지스터 : 메모리에서 가져온 데이터를 임시로 보관할 때 사용합니다.
- 주소 레지스터 : 데이터 또는 명령어가 저장된 메모리의 주소가 저장됩니다.
2) 사용자 불가시 레지스터 - 사용자가 임의로 변경할 수 없는 레지스터
- 프로그램 카운터(PC) : CPU가 다음에 실행할 명령어의 주소를 가리킵니다. 명령어 포인터 라고도 합니다.
- 명령어 레지스터(IR) : 현재 실행 중인 명령어를 저장합니다. 제어장치는 명령어 레지스터에 있는 명령을 해석한 후 외부 장 치에 적절한 제어 신호를 보냅니다.
- 메모리 주소 레지스터(MAR) : 메모리에서 데이터를 가져오거나 반대로 메모리로 데이터를 보낼 때 주소를 지정하기 위해서 사용합니다.
- 메모리 버퍼 레지스터(MBR) : 메모리에서 가져온 데이터나 메모리로 옮겨 갈 데이터를 임시로 저장합니다. 항상 메모리 주소 레지스터와 함께 동작합니다.
4. 메모리
메모리는 실행에 필요한 프로그램과 데이터를 저장하는 공간으로, 모든 프로그램은 메모리에 올라와야 실행할 수 있다.
메모리는 읽거나 쓸 수 있는 램과 읽기만 가능한 롬으로 구분된다.
5. 부팅
컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정을 부팅이라고 합니다.
사용자가 컴퓨터의 전원을 켜면 롬에 저장된 바이오스가 실행되어 하드웨어를 점검하고,
이상이 없으면 메모리에 부트스트랩 코드를 올려 실행합니다.
스트스트랩 코드는 하드디스크에 저장된 운영체제를 메모리로 가져와 부팅을 마무리합니다.
6. 컴퓨터의 성능 향상 기술
1. 버퍼
버퍼는 일정량의 데이터를 모아 옮김으로써 두 장치 사이에서 속도의 차이를 완화하는 역할을 합니다.
2. 캐시
캐시는 메모리와 CPU 간의 속도 차이를 완화하기 위해 데이터를 미리 가져와 저장해두는 임시 장소이다. 캐시는 사용할 것으로 예상되는 데이터를 미리 가져다놓음으로써 두 장치의 속도 차이를 완화해줍니다. (캐시 메모리는 가격이 비쌉니다.)
3. 저장장치의 계층 구조
속도가 빠르고 값이 비싼 저장장치를 CPU 가까운 쪽에 두고, 값이 싸고 용량이 큰 장치를 멀리 배치하여 적당한 가격으로 빠른 속도와 큰 용량을 동시에 얻는 방법입니다.
4. 인터럽트
CPU는 입출력 관리자에게 작업 지시를 내리고 다른 일을 하다가 완료 신호를 받으면 하던 일을 중단하고 옮겨진 데이터를 처리합니다. 이때 입출력 관리자가 CPU 에 보내는 완료 신호를 인터럽트라고 합니다.
인터럽트 방식은 CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효율을 높입니다.
7. 병렬처리
병렬처리는 동시에 여러 개의 명령을 처리하여 작업의 능률을 올리는 방식을 말합니다.
CPU에서 명령어가 실행되는 과정은 일반적으로 4단계(명령어 패치, 명령어 해석, 실행, 쓰기)로 나뉘는데, 병렬 처리 기법에서는 CPU의 사용을 극대화하기 위해 이러한 단계를 겹쳐서 실행합니다.
1. 파이프 라인 기법 - CPU의 사용을 극대화 하기 위해서 명령을 겹쳐서 실행하는 방법입니다. 하나의 코어에서 여러 개의 스레드를 사용합니다.
2. 슈퍼스칼라 기법 - 파이프 라인을 처리할 수 있는 코어를 여러 개 구성하여 복수의 명령어가 동시에 실행되도록 하는 방식입니다.
3. 슈퍼파이프라인 기법 - 파이프라인 기법을 강화한것입니다. 파이프라인 기법은 한 클록마다 하나의 명령어를 실행하지만 슈퍼 파이프라인 기법에서는 파이프라인의 각 단계를 세분하여 한 클록 내에 여러 명령어를 처리할 수 있습니다.
4. VLIW 기법 - 앞의 병렬 처리 기법들은 병렬 처리를 지원하는 하드웨어적인 방법이지만,
VLIW 기법은 CPU가 병렬 처리를 지원하지 않을 경우 소프트웨어 적으로 병렬 처리를 하는 방법입니다.
동시에 수행할 수 있는 명령어들을 컴파일러가 추출하고 하나의 명령어로 압축하여 실행합니다.
앞의 병렬 처리 기법들은 명령어 실행 시 병렬 처리가 이루어지지만
VLIW 기법은 컴파일 시 병렬 처리가 이루어집니다.
8. 무어의 법칙과 암달의 법칙
1) 무어의 법칙
인텔의 공동 창업자인 고든 무어(Gordon Moore)는 CPU의 속도가 24개월마다 2배 빨라진다는 무어의 법칙을 주장했습니다. 이 주장은 초기의 CPU 에만 적용되며 지금은 그렇지 않습니다.
2) 암달의 법칙
진 암달(Gene Amdahl)은 컴퓨터 시스템의 일부를 개선할 때 전체 시스템에 미치는 영향과의 관계를 수식으로 나타낸 암달의 법칙을 만들었습니다. 이 법칙에 따르면 주변 장치의 향상없이 CPU의 속도를 2GHz에서 4GHz로 늘리더라도 컴퓨터의 성능이 2배 빨라지지 않습니다.
'CS > 운영체제' 카테고리의 다른 글
6) 교착 상태 (0) | 2020.09.14 |
---|---|
5) 프로세스 동기화 (0) | 2020.09.10 |
4) CPU 스케줄링 (0) | 2020.09.06 |
3) 프로세스와 스레드 (0) | 2020.09.04 |
1) 운영체제의 개요 (0) | 2020.09.01 |
댓글