티스토리 뷰
1. 컴퓨터의 기본 구성
1) 하드웨어의 구성
✨ 컴퓨터: 중앙처리장치(CPU), 메인 메모리, 입력장치, 출력장치, 저장장치
- CPU는 명령어를 해석하여 실행하는 장치(두뇌)
- 메모리는 작업에 필요한 프로그램과 데이터를 저장하는 장소
- 입력장치는 외부의 데이터를 컴퓨터에 입력하는 장치 > 키보드, 마우스, 스캐너 등
- 출력장치는 컴퓨터에서 처리한 결과를 사용자가 원하는 형태로 출력 > 프린터, 모니터 등
- 저장장치를 사용하는 이유는 저렴하고 전원의 온·오프와 상관없이 데이터를 반영구적으로 저장하기 때문
- 메인보드는 다양한 부품을 연결하고 전원을 공급해 주는 커다란 판, 데이터가 지나다니는 통로는 버스
2) 폰노이만 구조
- CPU, 메모리, 입출력장치, 저장장치가 버스로 연결된 구조
- 하드웨어는 그대로 둔 채 작업을 위한 프로그램만 교체해 메모리에 올리는 방식
- 모든 프로그램은 메모리에 올라와야 실행 가능
3) 기초 용어 정리
- 클록과 헤르츠
- 시스템 버스: 메모리와 주변장치를 연결하는 버스, 메인보드의 동작 속도를 의미(FSB)
- CPU 버스: CPU 내부의 다양한 장치들을 연결한느 버스, 시스템 버스보다 빠르다(BSB)
- 컴파일: 컴퓨터는 기계어만 인식하기 때문에 고급언어를 사용해 만든 소스코드를 기계어로 번역하는 작업
2. CPU와 메모리
1) CPU의 구성과 동작
- 산술논리 연산장치: CPU에서 데이터를 연산하는 장치
- 제어장치: CPU에서 작업을 지시하는 부분
- 레지스터: 작업에 필요한 데이터를 CPU 내부에 보관하는 곳
✨ 레지스터의 종류
> 데이터 레지스터(DR): 메모리에서 가져온 데이터를 임시로 보관할 때 사용한다. 일반 레지스터라고도 부름
> 주소 레지스터(AR): 데이터 또는 명령어가 저장된 메모리의 주소는 주소 레지스터에 저장된다.
> 그 외에도 특별한 용도로 사용되는 특수 레지스터들이 있다. 프로그램 카운터, 명령어 레지스터, 메모리 주소 레지스터, 메모리 버퍼 레지스터인데 사용자가 임의로 변경할 수 없어 불가시 레지스터라고 부른다.
✨ 버스의 종류
- CPU와 메모리, 주변장치 간에 데이터를 주고받을 때 시스템 버스를 사용
> 제어 버스, 주소 버스, 데이터 버스
- 버스의 대역폭은 CPU가 한 번에 처리할 수 있는 데이터의 크기와 같다.
- 32bit CPU는 한꺼번에 처리할 수 있는 데이터의 크기가 32bit라는 의미
2) 메모리의 종류와 부팅
- 메모리는 읽거나 쓸 수 있는 램(RAM)과 읽기만 가능한 롬(ROM)으로 구분된다.
- 램은 전력이 끊기면 데이터가 사라지는 휘발성 메모리와 끊겨도 데이터 보관이 가능한 비휘발성 메모리로 나뉜다.
✨ 램의 종류
> 휘발성 메모리: DRAM, SRAM, SDRAM
> 비휘발성 메모리: FRAM, PRAM, 플래시 메모리
- 일괄작업 시스템에서의 메모리 보호: 메모리가 운영체제 영역과 사용자 영역으로 구분되어 영역을 침범하지 못한다.
- 현대의 운영체제는 시분할 기법을 사용해 사용자 영역이 여러 개의 작업 공간으로 나뉘어 있다. 메모리를 보호하기 위해 CPU는 현재 진행 중인 작업의 메모리 시작 주소를 경계 레지스터에 저장한 후 작업한다.
- 부팅: 컴퓨터를 켰을 때 운영체제를 메모리에 올려 실행하는 과정
- 부트스트랩 코드: 하드디스크에 저장된 운영체제를 메모리로 가져와 실행하는 역할을 하는 프로그램
3. 컴퓨터 성능 향상 기술
✨ CPU와 메모리, 주변장치의 작업 속도가 다른데 이러한 장치간 속도 차이를 개선하는 방법을 알아본다.
1) 버퍼: 두 장치 사이의 속도 차이를 완화하는 역할을 한다. 일정량의 데이터를 모아 한꺼번에 전송해 적은 작업량으로 많은 양의 데이터를 옮길 수 있게 한다.
- 스풀: CPU와 입출력장치가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼
- 캐시: 메모리와 CPU 간의 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해 두는 임시 장소, CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓음
2) 저장장치의 계층 구조
- 속도가 빠르고 값이 비싼 저장장치를 CPU 가까운 쪽에 두고, 싸고 용량이 큰 저장장치를 반대쪽에 배치해 적당한 가격으로 빠른 속도와 용량은 얻는 방법
3) 인터럽트
- 작업의 능률을 높이기 위해 보조를 두는 개념
- CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영함으로써 시스템의 효율을 높인다. 입출력 관리자 또는 장치 관리자가 보조 역할을 한다.
- 입출력 관리자가 CPU에 보내는 완료 신호를 인터럽트라고 한다.
- 어떤 장치의 작업이 끝났는지를 CPU에게 알려주기 위해 '인터럽트 번호'를 사용한다. 여러개의 인터럽트를 하나의 배열로 만든 것을 '인터럽트 벡터'라고 한다.
4) 직접 메모리 접근
- 인터럽트 방식에 의해 CPU가 요청한 데이터를 메모리에 가져다 놓아야 하는데 문제가 발생
- 입출력 관리자는 CPU가 아니기에 메모리에 접근 권한이 없음
- CPU의 허락 없이 메모리에 접근할 수 있는 권한이 필요한데 이를 직접 메모리 접근(DMA)라고 한다.
5) 메모리 맵 입출력
- 직접 메모리 접근으로 데이터가 섞이면 관리가 어려워 진다.
- 메모리의 일정 공간을 입출력에 할당하는 기법을 메모리 맵 입출력( memory mapped I/O) 이라고 한다.
6) 사이클 훔치기
- CPU와 직접 메모리 접근이 동시에 메모리에 접근하려 한다면?
- 속도가 빠른 CPU가 일출력장치에게 메모리 사용 권한을 양보한다.
- CPU 입장에서는 메모리 접근이 사이클을 훔친 것이 되어 이를 사이클 훔치기(cycle stealing)라고 부른다.
4. 멀티 프로세싱
1) 멀티코어 시스템
- 멀티 프로세서 시스템: 컴퓨터의 성능을 높이기 위해 프로세서를 여러 개 설치해 사용, 많은 작업을 동시에 실행시킬 수 있다.
- 멀티코어 시스템: 기존 시스템을 유지한 채 멀티 프로세싱을 할 수 있게 하는 시스템
2) CPU 멀티스레드
- 하나의 코어에 여러 개의 스레드를 이용하는 방식
- 여러 개의 스레드를 동시에 처리하는 방법을 CPU 멀티스레드라고 부른다.
'Study > OS' 카테고리의 다른 글
기말고사 정리2 (1) | 2023.06.09 |
---|---|
기말고사 정리1 (2) | 2023.06.08 |
Chapter 04 CPU 스케줄링 (0) | 2023.04.16 |
Chapter 03 프로세스와 스레드 (0) | 2023.04.13 |
Chapter 01 운영체제의 개요 (0) | 2023.04.08 |