
1. 컴퓨터의 기본 구성
1. 하드웨어의 구성
- 필수 장치: 중앙처리 장치, 메인 메모리(보조저장장치: 하드디스크, USB)
- 주변 장치: 입력장치, 출력장치, 저장장치
CPU와 메모리
- CPU: 명령어를 해석하여 실행하는 장치
- 메모리: 프로그램과 데이터를 저장하는 장소, 바이트 단위로 분할되고, 주소로 구분한다.
입출력장치
- 입력장치: 입력하는 장치로, 키보드, 마우스, 스캐너 등
- 출력장치: 출력하는 장치로, 프린터, 모니터, 스피커 등
- 저장장치
- 메모리: 전자의 이동으로 데이터를 처리하기 떄문에 속도가 빠르다, USB드라이브, SD카드, CF카드, SSD
- 하드디스크, CD: 속도는 느리지만 가격이 저렴하다.
- 자성: 카세트테이프, 플로피디스크, 하드디스크
- 레이저: CD, DVD, 블루레이디스크
- 메인보드: 부품을 연결하고 전원을 공급해 주는 커다란 판
- 버스: 메인보드에서 각 장치를 연결하여 데이터가 지나다니는 통로
2. 폰노이만 구조
- CPU와 메모리, 입출력장치, 저장장치가 버스로 연결된 구조
- 다른 용도로 사용하려면 프로그램만 교체하여 메모리에 올리는 방식
- 모든 프로그램은 메모리에 올라와야 실행할 수 있다.

3. 요리사 모형
- 운영체제의 작업은 크게 프로세스관리, 메모리 관리, 저장장치 관리로 나뉜다.
- 메모리 크기가 클 수록 빠르다.
4. 기초 용어 정리
- 크기 단위

- 클록과 헤르츠
- 컴퓨터에서 CPU가 작업을 하거나 하드디스크에서 데이터를 메모리로 옮기는 작업도 일정한 박자에 맞추어 진행한다.
- 클록: 컴퓨터에서 일정한 박자를 만들어 내는 것,
- 펄스, 클록틱: 클록에 의해 일정 간격으로 만들어 지는 틱
- 헤르츠(Hz): CPU의 성능을 나타낼 수 있는 단위
- 1초 동안 몇 번의 작업이 이루어져서 몇 번의 펄스(클록 틱)가 발생하였는가
- 1초에 펄스가 1번 나타나면 1헤르츠
- 1000번 나타나면 1킬로헤르츠
- 시스템버스와 CPU버스
- 시스템버스(FSB, 전면버스): 메모리와 주변장치를 연결하는 버스이며 메인보드의 동작 속도를 의미한다.
- CPU버스 (BSB, 후면버스): CPU내부에 있는 장치를 연결하는 버스, 훨씬 빠름 (최고 속도, 5GHz)
- 프로그래밍과 언어
- 컴퓨터가 이해할 수 있는 언어는 기계어뿐이다.
- 기계어를 사람들이 이해할 수 있는 문자 형태로 바꾼 것이 어셈블리어
- 저급언어: 기계어, 어셈블리어 (기계어 -> 문자)\
- 고급언어: 그 외 대부분
- 컴파일(소스코드->기계어): C, C++, Java
- 인터프리터: 한줄씩: Python, JavaScript
- 필수 자료구조
- 큐: First In First Out
- 스택: First In Last Out (순서가 뒤바뀐다.)
- 배열: 형태가 같은 자료를 나열하여 메모리에 연속으로 저장하는 것 (삽입과 삭제가 문제)
- 연결 리스트: 포인터로 연결된다. 데이터를 중간에 삽입하는 것도 간단, 메모리를 할당 받아 기존 리스트에 연결.
2. CPU와 메모리
1. CPU의 구성과 동작
1.1 CPU의 기본 구성: 산술논리 연산장치, 제어장치, 레지스터
- 산술논리 연산장치(ALU): 산술 연산과 논리 연산
- 제어장치: CPU에서 작업을 지시하는 부분
- 레지스터: 작업에 필요한 데이터를 CPU 내부에 보관하는 곳 (데이터 저장, 임시 보관)
1.2 CPU의 명령어 처리 과정



1.3 레지스터의 종류
- CPU는 필요한 데이터를 메모리에서 가져와 레지스터에 저장하고 산술논리 연산장치를 이용하여 연산한 후, 그 결과를 다시 레지스터에 저장했다가 메모리로 옮긴다.
- 주소 레지스터, 사용자 가시 레지스터
- 데이터 레지스터: 메모리에서 가져온 데이터를 임시로 보관
- 주소 레지스터: 데이터 또는 명령어가 저장된 메모리의 주소는 주소 레지스터에 저장된다.
- 특수 레지스터, 사용자 불가시 레지스터
- 프로그램 카운터(PC): 다음에 실행할 명령러의 주소를 기억하고 있다가 제어장치에 알려준다.
- 명령러 레지스터(IR): 현재 실행중인 명령어 저장, 제저장치는 명령어 레지스터에 있는 명령을 해석한 후 외부 장치에 적절한 제어 신로를 보낸다.
- 메모리 주소 레지스터(MAR): 메모리에서 데이터를 가져오거나 반대로 메모리로 데이터를 보낼 때 주소를 지정하는데 사용된다.
- 메모리 버퍼 레지스터(MBR): 메모리로 옮겨갈 데이터를 임시로 저장한다. 항상 메모리 주고 레지스터와 함꼐 동작한다.
- 프로그램 상대 레지스터: 조건의 결과에 따라 다른 코드가 실행된다. (플래그 레지스터, 상대 레지스터, 컨디션 레지스터) 결과를 임시로 저장했다가 제어장치에 알려주어 몇번 행으로 이동할지 결정한다.


.1.4 버스의 종류
- 제어버스: 다음에 어떤 작업을 할지 지시하는 제어 신호 (읽기 신호, 쓰기 신호, 양방향)
- 주소버스: 어느 위치에서 작업을 할 것인지를 알려주는 위치 정보가 오고 간다. (단뱡향)
- 데이터 버스: 데이터가 실려 목적지 까지 이동한다. (양방향)


1.5 CPU 비트의 의미
- 버스의 대역폭: CPUrk 한번에 전달할 수 있는 데이터의 최대 크기
- 레지스터가 32bit면 버스의 대역폭도 32 bit이다.
- 버스의 대역폭 = 레지스터의 크기 = 메모리에 한 번에 저장 할 수 있는 데이터의 크기
- 워드: CPU가 한번에 처리할 수 있는 데이터의 최대 크기
2. 메모리의 종류와 부팅
- 모든 프로그램은 메모리에 올라와야 실행될 수 있다. 메모리 소자 하나의 크기는 1bit
- 메모리 주소는 바이트 단위로 지정된다.
2.1 메모리의 종류
- RAM: 읽거나 쓸 수 있다.
- ROM: 읽기만 가능함

- 휘발성 메모리: 전력이 끊겨도 데이터를 보관하기 위해 메모리 내부가 복잡하고 속도가 느리겨 가격이 싸다.
- DRAM(동적 램): 일정 시간마다 다시 재생키겨야 한다, 메인메모리
- SRAM(정적 램): 공급되는 동안에는 데이터를 보관할 수 있어 재생할 필요가 없다, 캐시같은 고속 메모리
- SDRAM: 클록 틱(펄스)이 발샐할 때마다 데이터를 저장하는 동기 DRAM이다.
- 비휘발성 메모리: 전력이 끊겨도 내용이 남아 있는다.
- 플래시 메모리: 디지털카메라, MP3플레이어, USB 드라이버: 전력이 없어도 데이터를 보관하는 저장장치
- FRAM
- PRAM
- ROM: 데이터를 보관할 수 있다, 데이터를 한 번 저장하면 바꿀 수 없다, 바이오스(BIOS)를 롬에 저장
- 마스크 롬: 데이터를 지우거나 쓸 수 없다.
- PROM: 전용 기계를 이용하여 데이터를 한 번만 저장 할 수 있다.
- EROM: 플래시 메모리 처럼 사용하다.
2.2 메모리 보호
- 일괄 작업 시스템 (일괄 처리 시스템): 메모리가 운영체제 영역과 사용자 영역으로 구분된다.
- 메모리 보호: 사용자 영역의 작업이 운영체제 영역으로 침범하지 못하도록 맏는다.
- 시분할 기법으로 여러 프로그램을 동시에 실행한다.
- 사용자 프로세스가 CPU를 차지하여 작업이 진행되는 동안에는 운영체제 작업이 잠시 중단된다. -> 하드웨어 도움
- 메모리 보호를 위해 경계레지스터와 한계 레지스터를 사용한다.
- 두 레지스터의 주소 범위를 벗어나는지 하드웨어 측면에서 점검한다.
- 벗어나면, 메모리 오류와 관련된 신호(인터럽트)를 보내고, 모든 작업이 중단되고, 운영체제를 꺠워서 문제를 처리하도록 한다. 그리고 운영체제는 해당 프로그램을 강제 종료한다.
2.3 부팅
- 컴퓨터를 켰을 때 운영체제를 메모리에 올리는 과정

- 전원 -> 롬에 저장된 바이오스 실행 -> 하드웨어가 잘 작동하는지 점검 ->이상이 없으면 -> 하드디스트의 마스터 부트 레코드에 저장된 작은 프로그램(부스트랩 코드: 하드디스트에 저장된 운영체제를 메로리)을 메모리로 가져옴.
3. 컴퓨터 성능 향상 기술
- CPU, 메모리, 주변장치의 작업 속도가 다르다
- 메모리와 주변 장치(시스템 버스), CPU 내 레지스터/ 산술논리 연산장치, 제어장치 (CPU내부 버스)
- 속도: CPU내부 버스 > 시스템 버스
1. 버퍼
1.1 개념
- 버퍼: 두 장치 사이의 속도 차이를 완화하는 역할
- 입출력장치도 일정량의 데이터를 모아 한꺼번에 전송하면 적은 작업량으로도 많은 양의 데이터를 옮길 수 있다.
- 동영상 스트리밍: 동영상 데이터의 일정 부분을 버퍼에 넣은 후 실행한다.
1.2 스풀
- 스풀: CPU와 입출력장피가 독립적으로 동작하도록 고안된 소프트웨어적인 버퍼로, 프린터에 사용되는 스풀러다.
- 스풀러: 인쇌할 내용을 순차적으로 출력하는 소프트웨어로 출력 명령을 내린 프로그램과 독립적으로 작동한다.
- 스풀러를 사용하면 인쇄할 내용을 하드디스트의 스풀러 공간에 저장하고 워드 프로세스는 다른 작업을 할 수 있다.
- 버퍼는 다 차면 이동이 시작되는데, 스풀러는 한 인쇄물이 끝날 때까지 끼어들 수 업다.
1.3 캐시
- 캐시: 메모리와 CPU간의 속도 차이를 완화하기 위해 메모리의 데이터를 미리 가져와 저장해 두는 임시 장소
- 필요한 데이터를 모아 한꺼번에 전달하는 버퍼의 일종으로 CPU가 앞으로 사용할 것으로 예상되는 데이터를 미리 가져다 놓는다. (미리 가져오기)
- CPU는 메모리에 접근할 때 먼저 캐시를 방문하여 원한느 데이터가 있는지 찾아본다.
- 원하는 데이터가 있다: 캐시 히트
- 원하는 데이터가 없다: 캐시 미스
- 캐시 적중률 높이기
- 캐시 저장소 늘리기
- 가까운 데이터를 가져오기
- 캐시가 변경되면 메모리 데이터도 변경되야 한다.
- 즉시 쓰기 방식: 변경되면 메모리에 바로 반영, 비번한 데이터 전송으로 성능이 느려진다. 최신값 유지
- 지연 쓰기 방식: 변경되면 내용을 모아서 주기적으로 반영(카피백), 성능 향상, 데이터 사이 불일치
- 프로그램의 명령어 = 명령어 부분 + 데이터 부분
- 캐시:
- 명령어와 데이터 구분: 일반 캐시(L2캐시)
- 구분x: 특수 캐시(L1캐시)
- 명령러 캐시: 명령어 레지스터와 연결
- 데이터 캐시: 데이터 레지스터와 연
2. 저장장피의 계층 구조
최고의 성능을 높이기
- SSD와 같은 빠른 플래시 메모리를 저장장치로 사용
- 메모리를 하드디스트 크기만큼 확장한다.
- 캐시를 크게 늘려 캐시 적중률을 높인다.
- 저장장치 계층 구조(비싼 저장장치를 CPU가까이)
- 사용자가 저렴한 가격으로 하드디스크 용량 처럼 사용하고 작업속도는 빠르게 만들어준다.
- 데이터의 일관성을 유지해야 한다. (지연쓰기와 버퍼를 제거하지 않고 하드웨어 제거시 문)

3. 인터럽트
3.1 개념
- 예전: 폴링방식으로 주기적으로 입출력장치의 상태를 검사하여 일정한 조건이 만족되면 데이터 처리 -> 작업 효율이 떨어진다.
- 인터럽트: CPU의 작업과 저장장치의 데이터 이동을 독립적으로 운영한다. 데이터의 입출력이 이루어 지는 동안 CPU가 다른 작업을 할 수 있어서 효율적이다.
3.2 인터럽트 방식의 동작 과정
- CPU가 입출력 관리자에게 입출력 명령을 보낸다.
- 받은 데이터를 메모리에 올려놓고, 데이터를 저장장치로 옮긴다.
- 데이터 전송이 완료 되면 CPU에 완료 신호(인터럽트)를 보낸다.
- CPU는 하던 일을 중단하고 옮겨진 데이터를 처리한다.
- 인터럽트 번호: 어떤 장치에서 작업이 끝났는지 CPU에 알려준다, 완료 신호를 보낼 때 장치의 이름 대신 사용하는 고유 번호로 운영체제 마다 다르다. (윈도우: IRQ)
- CPU입출력 관리자는 여러개의 입출력 작업을 동시에 시킬 수있다. -> 인터럽트 벡터
- 강제 종료 -> 인터럽트 발생-> CPU는 하던 일을 중지하고 데이터 저장 후 종료
4. 직접 메모리 관리
- 입출력 관리자가 데이터 입출력을 맡게 된다.
- CPU는 입출력이 오면, 입출력 관리자에게 입출력 요청을 보내고 CPU는 하던 일을 계속한다.
- 입출력 관리자는 데이터를 메모리에 올려야 한느데, 접근 권한이 없다. 이때 필요한 권한을 직접 메모리 접근이라고 한다. 이 권리는 CPU의 관여 없이 작업을 완료 할 수 있다.

5. 메모리 맵 입출력
- 직접 메모리 접근으로 메모리가 복잡해 진다. -> CPU랑 입출력 데이터가 사용하는 데이터가 섞인다. -> 메모리를 나눠서 사용 (공간분리)
- 메모리 맵 입출력: 메모리의 일정 공간을 입출력에 할당하는 기법
6. 사이클 훔치기
- CPU가 메모리 권한을 양보한다.
- CPU작업 속도보다 입출력장치의 속도가 느리기 때문에

4. 멀티 프로세싱
1. 멀티코어 시스템
- 과거: 단일 프로세서 시스템: 프로세스(CPU) 하나, 한번에 하나의 작업을 처리할 수 있다.
- 성능 높이기
- CPU 클록을 높이기 -> 발열 문제
- 캐시의 크기를 늘리기 -> 비용 문제
- 코어를 여러 개 만들기
- 동시에 실행 가능한 명령어 개수를 늘기
- 멀티 프로세서 시스템: 프로세스를 여러 개 설치하여 사용하는 시스템
- 프로세스마다 레지스터와 캐시를 가진다.
- 모든 프로세스는 시스템 버스를 통해 메인메모리를 공유한다.
- 멀티 코어 시스템: 기본 시스템을 유지한채, 하나의 칩에 CPU의 핵심인 코어 개수만 늘림 (듀얼 코어, 쿼드 코어)
2. CPU 멀티스레드
- 병렬 처리(하이퍼스레드): 하나의 코어에서 2개 이상의 명령어(스레드)를 처리하는 방법
- 코어는 하나지만 2개의 명령어가 동시에 처리되고 코어가 2개 처럼 보인다.
- 스레드: CPU가 처리할 수 있는 작업의 단위
- 현대는 멀티코어와 명령어 병렬 처리 긴으을 한꺼번에 구현했다.
2.1 번외
- 무어의 법칙: CPU속도가 24개월마다 2배 빨라진다.
- 암달의 법칙: CPU속도가 2GHz에서 4GHz로 늘리더라도 컴퓨터의 성능이 2배 빨라지지 않는다.
출처 : 조성호 , 『IT CookBook, 쉽게 배우는 운영체제(2판)』한빛아카데미(2023).
'COMPUTER SCIENCE > OS' 카테고리의 다른 글
| [쉽게 배우는 운영체제 2판] 3장 연습문제 (0) | 2025.04.15 |
|---|---|
| [쉽게 배우는 운영체제 2판] 3. 프로세스와 스레드 (0) | 2025.04.15 |
| [쉽게 배우는 운영체제 2판] 2장 연습문제 (0) | 2025.04.14 |
| [쉽게 배우는 운영체제 2판] 1장 연습문제 (0) | 2025.04.14 |
| [쉽게 배우는 운영체제 2판] 1. 운영 체제의 개요 (0) | 2025.04.11 |