컴퓨터 하드웨어
- 프로세서: CPU, GPU
- 메모리: 주 기억장치, 보조 기억장치
- 주변장치: 키보드, 마우스, 모니터, 프린터
1. 프로세서 (Processor)
- 컴퓨터의 두뇌 (중앙처리장치)
- 연산수행, 컴퓨터의 모든 장치의 동작을 제어한다.
레지스터
- 프로세서 내부에 있는 메모리
- 프로세서가 사용할 데이터 저장
- 컴퓨터에서 가장 빠른 메모리
레지스터의 종류
- 용도에 따른 분류: 전용 레지스터, 범용 레지스터
- 사용자가 정보 변경 가능 여부에 따른 분류: 사용자가 가시 레지스터, 사용자 불가시 레지스터
- 저장하는 정보의 종류에 따른 분류: 데이터 레지스터, 주소 레지스터, 상태 레지스터
프로세서의 동작
- 프로세서에게 처리할 작업 할당 및 관리
- 프로세스 생성 및 관리
- (3단원에서 자세히 학습)
- 프로그램의 프로세서 사용 제어
- 프로그램의 프로세서 사용 시간 관리
- 복수 프로그램간 사용 시간 조율 등
- (4, 5단원에서 자세히 학습)
2. 메모리
데이터를 저장하는 장치(기억장치)
- 프로그램, 사용자 데이터 등
메모리의 종류
1. 주기억장치
- 프로세서가 수행할 프로그램과 데이터 저장
- DRAM을 주로 사용 (용량이 크고, 가격이 저렴함)
- 디스크 입출력 병목현상 해소함.
캐시를 왜 사용하는가?
아래의 사진처럼 시대를 거치면서 CPU의 속도는 비약적으로 발전하였지만 디스크의 속도는 그렇지 못하다.
이 둘의 간극을 해소하기 위해서는 DISK를 사용하지 않고, CPU의 저장용량을 늘려서 사용하는 방법을 생각 할 수 있다.
하지만 그렇게 할 수 없다.
CPU는 매우 빠르지만 저장공간을 늘리기는 지금 기술력으로 매우 어렵고 비용도 비싸진다.
다른 방법으로는 데이터를 저장하는 공간과 CPU를 따로 분리하여 CPU가 원하는데이터를 일일히 불러오면 된다.
그러나 아래의 그래프처럼 둘의 속도차를 해소하기 위해 "캐시" 라는 것을 사용하게 된다.
캐시
- 프로세서 내부에 있는 메모리 이다.
- 속도가 빠른대신 가격이 비싸다는 단점이 있다.
- 메인 메모리의 입출력 병목현상을 해소한다.
캐시의 동작
- 일반적으로 하드웨어적으로 관리된다.
- 캐시 히트: 필요한 데이터 블록이 캐시 존재
- 캐시 미스: 필요한 데이터 블록이 없는 경우
위의 과정을 거쳐서 프로세스는 데이터를 활용하고 싶을때 캐시가 있는지 없는지 확인한다.
캐시는 128KB라는 작은 공간을 사용한다. 이 작은 공간으로 효율성이 있을까 라는 의문이 든다.
캐시는 다음과 같은 특성을 가지고 있다.
지역성(Locality)
- 공간적 지역성 (Spatial locality)
- 참조한 주소와 인접한 주소를 참조하는 특성
- 어떤주소를 참조하면 다음번에 주소 근처를 참조할 가능성이 높다
- 시간적 지역성 (Temporal locality)
- 한번 참조한 주소를 곧 다시 참조하는 특성
지역성은 캐시 적중률과 밀접한 관계를 가지고 있음.
위의 캐시 특성으로 인해 효과적임을 알 수 있다.
효율적인 코드 작성으로 더 빠른 동작의 예시를 아래의 코드에서 보여준다.
캐시의 지역성 특성을 코드를 통해 비교한다면 다음과 같이 나타낼 수 있다.
for(i=0; i<=n;i++){
for(j=0; j<m; j++){
x = x + (a[i][j]) //A
x = x + (a[j][i]) //B
}
}
위의 그림처럼 Block Size가 16인 캐시 공간이 있다.
B문장을 실행하였을 때 a[0][0]을 실행할 것이고 캐시의 지역성 특성때문에 인접한 주소를 같이 참조한다.
(즉, 한번 호출할때 a[0][0~15] 의 데이터(16개의캐시공간)를 가지고 온다.)
그 다음 for문이 실행되어 a[1][0]을 실행한다.
이 때 캐시에는 a[1][0]의 데이터가 없기 때문에 주 메모리에서 다시 불러오게 된다.
이후 for문이 실행되어 a[2][0]의 데이터를 불러오려고 하면 캐시에 해당 데이터가 없다.
따라서 주 메모리에서 불러오게 된다.
계속 B구문을 반복하면 비 효율적인 것을 알 수 있다.
반면에, A코드를 실행하면 a[0][0]을 호출하게되면 캐시에 해당 데이터가 없기 때문에 주 메모리에서 불러와 캐시에 저장한다.
그 다음 for문이 실행되어 a[0][1]의 데이터를 불러오게 되며 캐시에 a[0][1]의 데이터가 저장되어 있어 주 메모리에서 호출하지 않아도 된다.
그 다음 for문이 실행되어도 a[0][2]데이터가 캐시에 저장되어 있기 때문에 주 메모리에서 불러올 필요가 없다.
캐시의 특성을 알고 있으면 프로그램을 더 효율적으로 짤 수 있음을 알 수 있다.
2. 보조기억장치
- HDD, SSD, USB, CD, (Micro)SDcard
- 프로그램과 데이터를 저장한다.
- 프로세서가 직접 접근할 수 없음 (주변장치)
- 접근시 주기억 장치를 거치게 됨
- 용량이 크고, 가격이 저렴하다.
- 프로그램(데이터) > 주기억장치보다 큰 경우에는 가상메모리 기술을 이용함.
메모리와 운영체제
메모리 할당 및 관리
- 프로그램의 요청에 따른 메모리 할당 및 회수
- (8단원에서 자세히 학습)
- 논리주소를 물리주소로 변환함
- (9, 10단원에서 자세히 학습)
시스템버스(System Bus)
하드웨어들이 데이터 및 신호를 주고 받는 물리적인 통로
- 데이터 버스: 프로세서와 메인 메모리, 주변장치 사이에서 데이터를 전송함. 데이터 버스를 구성하는 배선 수는 프로세서가 한 번에 전송할 수 있는 비트 수를 결정하는데 이를 워드라고 함.
- 주소 버스: 프로세서가 시스템의 구성 요소를 식별하는 주소 정보를 전송한다. 주소 버스를 구성하는 배선 수는 프로세서와 접속할 수 있는 메인 메모리의 최대 용량을 결정한다.
- 제어 버스: 프로세서가 시스템의 구성 요소를 제어하는데 사용함. 제어 신호로 연산장치의 연산 종류와 메인 메모리의 읽거나 쓰기 동작을 결정함.
1 | PC->MAR | PC에 저장된 주소를 프로세서 내부 버스를 이용하여 MAR에 전달함 |
2 | MAR->MBR | MAR에 저장된 주소에 해당하는 메모리 위치에서 명령어를 인출 후 이 명령어를 MBR에 저장함. 이때 제어장치는 메모리에 저장된 내용을 읽도록 제어신호 발생 |
2 | PC+1->PC | 다음 명령어를 인출하기 위해 PC를 증가시킴 |
3 | MBR->IR | MBR에 저장된 내용을 IR에 전달함 |
(PC: 프로그램 카운터, MAR: 메모리 주소 레지스터, MBR: 메모리 버퍼 레지스터, IR: 명령어 레지스터)
3. 주변장치
- 입력장치: 키보드, 마우스
- 출력장치: 디스플레이, 프린터
- 저장장치: USB, CD
- 장치드라이버 관리: 주변 장치 사용을 위한 인터페이스를 제공한다.
- 인터럽트 처리: 주변 장치의 요청을 처리함
- 파일 및 디스크 관리
본 포스트는 KOREATECH의 HPC LAB. Duksu Kim 교수님 OS강의를 기반으로 정리한 내용입니다.
상업적 의도가 아닌 공부한 것을 정리해 놓은 목적으로 게시한 포스트입니다.
아래의 출처에서 자세한 내용을 수강하실 수 있습니다.
https://www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN
'CS > OS' 카테고리의 다른 글
[OS] 4. 운영체제 스레드 관리 (Thread) (0) | 2022.03.11 |
---|---|
[OS] 3-2. 프로세스 관리(Interrupt, Context Switching) (0) | 2022.03.09 |
[OS] 3-1. 프로세스 관리 (프로세스 정의, 종류, 상태) (0) | 2022.03.08 |
[OS] 2. OS개요, 운영체제 역할, 구조 (0) | 2022.03.07 |
[OS] 0. 운영체제 목차 및 키워드 정리 (0) | 2022.03.06 |