이 글은 반효경 교수님의 운영체제 강의 및 교재를 참고합니다.
📢 들어가며
개발자는 컴퓨터를 잘 알아야 하기에.. 매주 CS 스터디를 진행하고 내용을 기록한다. 1~4주차에는 OS, 5~7주차에는 자료구조, 8주차에는 보안에 대해 공부한다. 이번 주에는 프로세서와 메모리, 시스템 버스에 대해 자세히 알아보도록 하자.
source: https://kblab.tistory.com/315
사진은 대표적 프로세서인 중앙처리장치(CPU)의 간략한 구조도
- 제어장치(Control Unit): 소프트웨어를 읽고 하드웨어의 다른 부분으로 신호 전송
- 연산장치(ALU, Arithmetic Logic Unit): 사칙연산 및 논리연산 처리
- 레지스터: 프로세서가 바로 사용할 수 있는 데이터를 담고 있는 영역
- 버스: 신호 전달
프로세서는 코어, 캐시, JTAG 등으로 구성되어 있고, 코어는 각종 연산을 처리하는 프로세서의 핵심 연산 장치이다. 제어장치, 연산장치, 레지스터를 포함한다.
CPU(Central Processing Unit)
중앙처리장치. 핵심적인 컴퓨터의 역할을 전담하는 프로세서
MPU(Micro Processor Unit)
초소형 연산 처리 장치. 주어진 기계어를 해석하고, 연산을 수행하는 기능만 가지고 있는 프로세서. RAM, ROM, I/O 장치 등을 추가하지 않으면 작동이 불가함.
MCU(Micro Controller Unit)
임베디드 애플리케이션을 위해 디자인 된 프로세서. 일반적으로 PC에 비해 성능이 낮고 형상도 다르며, 한 번 프로그래밍하면 코드를 바꿀 일이 거의 없기 때문에 냉장고, 전자레인지 등의 기기에 사용됨.
컴퓨터 내부에는 다양한 기억 장치가 있다. 어차피 다 저장소인데 왜 종류가 다양할까? 이는 각 기억 장치의 저장 단위 당 가격, 성능, 용량이 다양하기 때문이다. 각 요소 간의 trade off를 잘 조절하여 적은 비용으로도 좋은 성능을 얻을 수도 있다.
메모리 계층 구조
source: https://velog.io/@yu-jin-song/CS-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0
CPU가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억 장치. 레지스터는 CPU와 직접 연결되어 있어 연산 속도가 여타의 기억 장치보다 수십 배에서 수백 배까지 빠르다.
CPU는 자체적으로 데이터를 저장할 방법이 없기 때문에, 메모리로 직접 데이터를 전송할 수는 없다. 그래서 연산을 위해서는 반드시 레지스터를 거쳐야 하고, 이를 처리하기 위해 레지스터는 특정 주소를 가리키거나 값을 읽어올 수 있다.
캐시는 자주 사용하는 데이터나 값을 미리 복사해 놓을 수 있는 임시 장소로, 시스템 효율성을 위해 사용된다. 비교적 저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다. 캐시는 속도가 빠른 장치와 느린 장치 사이에서 속도 차이에 따른 병목 현상을 완화하기 위해서도 사용된다.
다음과 같은 상황에서 캐시가 자주 됨.
메인메모리, 주기억장치, RAM(Random Access Memory)를 혼용하여 사용하나, SRAM은 캐시로 사용되기 때문에 DRAM이라고 표기하는 것이 더욱 정확합니다. CPU가 현재 처리 중인 데이터나 명령만을 일시적으로 저장하는 휘발성 메모리로, 전원이 꺼지면 메인메모리에 저장된 내용들은 모두 사라진다. 따라서 컴퓨터가 꺼진 후에도 데이터를 유지하고 싶다면 데이터를 하드디스크에 저장해야 한다.
게임 등을 처음 실행할 때 "로딩 중..."이라는 메시지를 자주 볼 수 있는데, 이 때 로딩이 뜻하는 것이 바로 하드디스크에서 데이터를 읽어 램으로 전송하는 행위임.
보조기억장치는 물리적인 디스크로 연결된 비휘발성 메모리이다. HDD(Hard Disk Drive), SSD(Solid State Drive), USB, CD, DVD 등이 여기에 속한다. 메인메모리와 비교하여 접근에 걸리는 속도가 느리지만, 컴퓨터의 전원을 껐을 때도 저장된 데이터가 영구적으로 유지된다.
HDD는 물리적인 디스크를 고속으로 회전시켜 데이터를 저장하는 장치이다. 디스크에 물리적으로 저장하기 때문에 충격에 약하고, 소음이 발생한다. 크리가 작고 처리 속도가 향상된 SSD의 등장으로 사용이 줄고 있다.
SSD는 반도체 기반의 정보를 저장하는 장치이다. 물리적으로 데이터를 저장하지 않고 전기적으로 데이터를 저장하기 때문에 HDD에 비해 속도가 빠르고 소음도 발생하지 않는다. 전력 소모가 적고 경량화, 소형화 할 수 있다.
🔻 동작 예시(Dynamic Relocation)
source: 반효경 교수님 운영체제 강의 교재..
++
Logical vs. Physical Address
- Logical address(=virtual address)
- 프로세스마다 독립적으로 가지는 주소 공간
- 각 프로세스마다 0번지부터 시작
- CPU가 보는 주소는 logical address
- Physical address
- 메모리에 실제 올라가는 위치
- HW DRAM의 주소
- 주소 바인딩: 주소를 결정하는 것
- Symbolic Address -> Logical Address -> Physical address
- Compile time binding
- 물리적 메모리 주소(physical address)가 컴파일 시 알려짐
- 시작 위치 변경 시 재컴파일
- 컴파일러는 절대코드(absolute code) 생성
- Load time binding
- Loader의 책임 하에 물리적 메모리 주소 부여(한 번 올라가면 안바뀜)
- 컴파일러가 재배치가능코드(relocatable code)를 생성한 경우 가능
- Run time binding
- 수행이 시작된 이후에도 프로세스의 메모리 상 위치를 옮길 수 있음
- CPU가 주소를 참조할 때마다 binding을 점검(address mapping table)
- 하드웨어적인 지원이 필요(base and limit registers, MMU)
컴퓨터 구성 요소들 간의 데이터 전달을 위한 장치를 뜻한다.
참고
http://itnovice1.blogspot.com/2019/08/blog-post_99.html
https://velog.io/@yu-jin-song/CS-%EB%A9%94%EB%AA%A8%EB%A6%AC-%EA%B3%84%EC%B8%B5-%EA%B5%AC%EC%A1%B0
https://mangkyu.tistory.com/69
https://dheldh77.tistory.com/entry/%EC%BB%B4%ED%93%A8%ED%84%B0%EA%B5%AC%EC%A1%B0-%EC%8B%9C%EC%8A%A4%ED%85%9C-%EB%B2%84%EC%8A%A4System-bus