- 프로그램 내장형 컴퓨터 (Stored Program Computer)
- 폰 노이만이 개발
- 데이터뿐만 아니라 프로그램을 메모리에 내장하여 실행

Processing Unit(처리 장치)는 컴퓨터에서
데이터를 처리하는데 사용되며, 산술 논리 연산 장치(ALU)와 프로세서 레지스터로 구성됩니다.
- 산술 논리 연산 장치 (Arithmetic Logic Unit, ALU)
ALU는수학적 연산(덧셈, 뺄셈, 곱셈, 나눗셈 등)과논리적 연산(AND, OR, NOT, XOR 등)을 수행하는 회로입니다.
- 프로세서 레지스터 (Processor Registers)
레지스터는CPU 내부에 위치한 매우 빠른저장 공간으로, 현재 수행 중인 연산에 대한 중간 결과, 주소, 상태 플래그 등을 임시로 저장합니다.
Control Unit(제어 장치)은 CPU의 동작을 제어하고 명령어를 해석하는 역할을 수행합니다. 명령어 레지스터와 프로그램 카운터로 구성됩니다.
- 명령어 레지스터 (Instruction Register, IR)
명령어 레지스터는현재 실행 중인 명령어를 저장하는 레지스터입니다.
- 프로그램 카운터 (Program Counter, PC)
프로그램 카운터는다음에 실행할 명령어의 주소를 저장하는 레지스터입니다.
메모리는 컴퓨터의
데이터와 명령어를 저장하는 공간입니다. 폰 노이만 아키텍처에서는 명령어와 데이터를 동일한 메모리에 저장합니다.
외부 대용량 저장 장치는
컴퓨터의 비휘발성 저장 공간으로, 하드 드라이브, SSD, CD-ROM 등이 포함됩니다. 이러한 저장 장치는 데이터와 프로그램을 영구적으로 저장하며, 필요할 때 메모리로 전송되어 처리됩니다.
입출력 장치는 컴퓨터와 외부 세계 사이의 데이터 전송을 담당합니다. 키보드, 마우스, 모니터, 프린터 등과 같은 주변 장치들이 입출력 장치에 포함됩니다. 이들 장치는
사용자가 컴퓨터와 상호 작용할 수 있게 해주며, 데이터를 입력하거나 결과를 출력하는 데 사용됩니다.
컴퓨터 시스템이 전원이 켜지면
가장 먼저 실행되는 프로그램입니다.
주로 ROM, EPROM에 저장되어 있습니다.
이 과정에서1.하드웨어가 초기화되고,2.BIOS가 실행됩니다.BIOS(Basic Input/Output System)는 하드웨어를 검사하고 시스템 구성 정보를 확인한 후, 부팅 가능한 장치(예: 하드 드라이브, CD-ROM, USB 드라이브 등)에서 부트 로더를 찾습니다.
부트 로더는 커널 이미지를 메모리에 적재하고 커널을 실행하는 작업을 수행합니다. 부트스트랩 과정은 컴퓨터가 동작할 수 있는 최소한의 환경을 구축하는 데 필요한 작업들을 수행합니다.
커널은 운영 체제의 핵심 부분으로,
하드웨어와 소프트웨어 간의 인터페이스역할을 수행합니다. 컴퓨터에서항상 실행되는 하나의 프로그램입니다.커널은 하드웨어 자원(예: 메모리, CPU, 입출력 장치 등)을 관리하고, 프로세스 및 스레드를 스케줄링하며, 시스템 콜을 통해 응용 프로그램이 하드웨어 자원에 접근할 수 있도록 합니다. 커널은 컴퓨터의 안정성과 성능을 보장하는 데 중요한 역할을 수행하며, 운영 체제가 하드웨어를 제어하고 사용자 요청을 처리할 수 있는 기반을 제공합니다.
OS 로드는 커널이 메모리에 적재되고 실행된 후 발생하는 과정으로, 여기서 운영 체제의 나머지 부분이 로드되고 초기화됩니다. 이 과정에서 운영 체제는 필요한 시스템 서비스와 데몬 프로세스를 시작하며, 사용자 인터페이스(예: 그래픽 사용자 인터페이스, 명령줄 인터페이스 등)를 제공합니다. 사용자가 로그인하고, 응용 프로그램을 실행하고, 다양한 작업을 수행할 수 있는 환경이 구축됩니다.
그 이후의 모든 과정은 System Program 이거나, Application Program입니다.
- 시스템 프로그램(System Program):
시스템 프로그램은 컴퓨터 시스템의 운영, 관리, 유지 보수를 위해 설계된 프로그램입니다. 이러한 프로그램은 하드웨어와 직접적으로 소통하며, 운영 체제(OS)와 밀접한 관련이 있습니다. 시스템 프로그램의 주요 역할은 자원 할당, 프로세스 관리, 파일 시스템 관리, 입출력 관리 등이 있습니다. 대표적인 시스템 프로그램으로는 운영 체제, 디바이스 드라이버, 시스템 유틸리티 등이 있습니다.
- 응용 프로그램(Application Program):
응용 프로그램은 사용자가 특정 목적을 위해 사용하는 프로그램입니다. 이러한 프로그램은 일반적으로 사용자와 직접적으로 상호 작용하며, 특정 기능이나 서비스를 제공합니다. 응용 프로그램은 시스템 프로그램 위에서 실행되며, 운영 체제의 기능과 자원을 활용해 작동합니다. 대표적인 응용 프로그램으로는 워드 프로세서, 웹 브라우저, 이미지 에디터, 게임 등이 있습니다.
- 사용자의 편의성 추구
- 자원의 효율적인 관리 (자원 할당자)
- 다양한 입출력 장치의 운영과 통제
- 일괄처리 시스템 (Batch Processing)
- 다중 프로그래밍 (Multi-programming)
- 시분할 시스템 (Time-sharing)
- 실시간 시스템 (Real-time)
- 다중 처리, 클라우드 등등
〰️ 실제로 다양한 발전 과정이 있지만, 수업 시간에 다루지 않은 것은 제외하였습니다.
- 프로그램 작성:
10진수나 8진수로의 기계어로 작성
자기 테이프나 카드 천공기(Card Punch)를 사용하여 카드에 기록
- 프로그램 실행:
Sign-Up Sheet를 통해 컴퓨터 사용 시간을 예약
콘솔이나 스위치를 이용하여 모든 작업을 수행
상대 주소가 아닌 절대 주소를 사용
카드 덱(Card Deck) 형태의 라이브러리를 사용
- 활용도 비효율: Sign-Up Sheet를 통한 사용 시간 예약으로 인해 시스템 사용 시간이 남는 경우가 발생했습니다.
- 준비 시간 과다: 테이프나 천공 카드를 사용하여 프로그램을 적재하는 과정이 많은 시간이 소요되었습니다.
이러한 초기 시스템의 한계와 문제점을 개선하기 위해 운영 체제의 개념이 발전하게 되었습니다. 이후 일괄 처리 시스템, 다중 프로그래밍, 시분할 처리 등 다양한 기술이 도입되어 컴퓨터의 효율성과 사용자 편의성이 크게 향상되었습니다.

- 운영자(Operator)
여러 사용자들의 작업을 수집하고 비슷한 작업들을 묶어일괄(batch)처리
Batch 작업은 오프라인 카드리더나 테이프에 저장되었고, 처리 결과는 오프라인 테이프를 통해 프린터로 출력됨
- 상주모니터(Resident Monitor)
일괄처리 시스템은작업 전환 응용 프로그램(상주모니터)을 메모리에 상주시킴
적재기, 작업순서 제어기, 제어카드 처리기를 상주시켜작업 전환을 자동화시킴cf )
위성 컴퓨터 : 작업을 준비하고, 작업에 필요한 입력 데이터를 정렬하며, 작업 지시를 작성하는 저가 컴퓨터
주 컴퓨터 : 일괄 처리 시스템의 핵심 컴퓨터로서, 실제 작업 처리를 담당하는 성능 좋은 컴퓨터
- 장점
1. 하나의 작업이 CPU를 독점하므로작업 당 처리 속도가 가장 빠름
사용자 인터랙션이 필요하지 않은응용 프로그램 수행에 적합 (수치계산,대용량 데이터 처리 등)
- 단점
1. 작업 적재 후 일정기간(반환시간) 경과 후에만 결과 확인이 가능하기 때문에,대화형 응용 프로그램에 부적합

- 한 시점에
여러 프로그램을 사용자 영역에 탑재
시스템에 들어오는 모든 작업은 작업 pool 에 적재됨
운영체제의 정책에 따라 pool 내의 작업을 선택하여 메모리에 탑재- 메모리에 탑재된 작업 중
하나를 선택하여 실행- 실행 중
입출력발생
(키보드입력을 기다리거나 출력이 끝나기를 기다리는 상태에 도달)- 한 프로그램이 입출력을 하는 동안
다른 프로그램에 CPU를 할당하여 실행

일괄 처리 시스템:
프로그램 종료 시점에서 지연이 발생하면 다음 작업이 실행되기 전에 CPU가 더 오랫동안 대기해야 합니다. 이로 인해 전체 시스템 처리 속도가 느려집니다.다중 프로그래밍 시스템:
프로그램 종료 시점에서 지연이 발생하더라도 다중 프로그래밍 시스템에서는 다른 프로그램들이 계속 실행되므로 전체 시스템 처리 속도에 큰 영향을 주지 않습니다.
- 대부분 프로그램의 실행 시간 중 CPU 사용 시간은 극히 일부분이고
대부분이 입출력 시간이다.
- N개의 프로그램의 실행 시간을 각각 t1, t2, ... tn 이라 할 때 실행시간 :
일괄처리 시스템 :t1 +t2 +...+tn
다중 프로그래밍 : 대략max(t1, t2, ..., tn)
- 장점:
1. 한 프로세스의 입출력 시에 다른 프로세스를 처리할 수 있게 되므로,CPU가 항상 일을 할 수 있음
2. 디스크를 이용한 buffering 과 spooling으로입출력과 CPU 수행의 중복 정도를 높일 수 있게 됨
- 한계점:
1. 작업 간 전환 및 할당 우선순위 설정이 불가
2. 여러 작업이 메모리 상에 존재
- Buffering
전송 중인 데이터를 메모리에 임시로 저장
데이터의 입출력 속도와 처리 속도 간의 차이를 보정
(예를 들어, CPU가 데이터를 빠르게 생성하는 경우, 버퍼를 사용하여 느린 입출력 장치가 처리할 수 있는 속도로 데이터를 전송할 수 있습니다. 이로 인해 전체 시스템 성능이 향상됩니다.)
- Spooling (Simultaneous Paripheral Operation On-Line)
버퍼링의 일종 (Buffering와 job queueing의 조합)
특정 디바이스를 위한 전용 프로그램인 spooler를 사용하여 작업(job)을 대기열 형태로 관리하고 디바이스 속도에 맞춰 데이터를 제공
주로 작업이 실행되는 동안 생성되는 출력 데이터를 디스크와 같은 저장 매체에 저장해 두었다가, 입출력 장치가 사용 가능할 때 해당 데이터를 전송합니다.

- 일괄처리 시스템은 사용자와 시스템의 대화 불가능
- 다중 프로그래밍은 사용자와 빈번한 대화성 증진에 한계 존재
(여러 사용자가 사용 불가능)
- 여러 사용자가 운영체제나 프로그램에 직접 명령을 주고 즉시 응답을 받을 수 있음
- 타임 슬라이스 (time slice): 빠른 응답시간을 주기 위하여 보다 작은 단위로 CPU 시간을 나누어 할당
- 가상메모리: 실제 메모리보다 더 큰 프로그램의 수행도 가능
프로세서의 동작이나 자료의 흐름에 대한 엄격한 시간 제한적 연산 (deadline)이 필요한 경우 사용
◦ 예) 센서로부터 입력 받아 기계장치를 제어해야하는 경우: 공장 생산 라인, 과학실험 제어, 산업제어, 항공기/미사일 제어, 로봇, 동영상 처리 등
- Hard real-time
데드라인 위반사건 발생시재앙적 사건이 발생 (예: 무기 제어, 원자력 발전소)
데드라인 준수에 대한보장성과예측성이 필수
가상메모리 등 고급 기능이나 모든부가적 자원 관리를 최소화하고하드웨어와 밀착된 S/W 개발
- Soft real-time
데드라인은 존재하지만위반에도 크게 심각하지 않은 경우(예: 비디오 스트리밍)
실시간 작업과 일반 작업 간의우선순위 제어로 해결하는 경향
1. I/O 장치와 CPU는 동시에 실행됩니다.
I/O 장치와 CPU는 동시에 실행되며, CPU는 여러 개의 I/O 작업을 동시에 처리할 수 있2. 각 I/O 장치마다 제어기(device controller)가 있습니다.
각 I/O 장치는 제어기를 가지고 있음.
제어기는 해당 장치와 통신하면서 I/O 작업을 수행함3. 제어기는 자체 버퍼(buffer) 메모리를 가지고 있습니다.
제어기는 자체 버퍼 메모리를 가지고 있으며, 이를 통해 I/O 작업을 수행
제어기는 장치와 통신하여 데이터를 전송하고, 받아들임
이때, 제어기는 자체 버퍼 메모리를 사용하여 데이터를 일시적으로 저장4. CPU는 주기억장치와 제어기 버퍼 간에 데이터 이동을 실행합니다.
CPU는 I/O 작업을 수행하기 위해, 주기억장치와 제어기 버퍼 간에 데이터 이동을 실행
이때, CPU는 버퍼 메모리에 있는 데이터를 읽고 쓰는 작업을 수행5. I/O는 장치와 제어기 버퍼간에 발생합니다.
I/O 작업은 장치와 제어기 버퍼 간에 발생
제어기는 장치와 통신하여 데이터를 전송하고, 받아들임
이때, 제어기는 자체 버퍼 메모리를 사용하여 데이터를 일시적으로 저장6. 장치제어기가 I/O 작업을 마치면 Interrupt 신호를 통해 CPU에게 알려줍니다.
장치제어기는 I/O 작업이 완료되면 Interrupt 신호를 CPU에게 보냄
CPU는 이 신호를 받아서 해당 작업이 완료되었음을 인식하고, 다음 작업을 수행
1. 소프트웨어 인터럽트 (trap 또는 exception)
프로그램 내부에서 예외 상황이 발생했을 때 발생
(실행 도중 오류 날 때 or 특정한 명령어를 수행할 때)
trap, exception은 예외처리나 디버깅을 위해 존재함2. 타이머 인터럽트 (Timer)
타이머 인터럽트는정해진 시간이 지나면 발생
주로, 멀티태스킹을 구현하기 위해 사용3. I/O 인터럽트
I/O 장치가 CPU에게데이터 전송이 완료되었음을 알리기 위해 발생
I/O 작업 중 CPU의 다른 작업을 수행할 수 있도록 해줌4. 하드웨어 실패 인터럽트
하드웨어 장치에서 오류가 발생했을 때 발생
예: 메모리 오류, 디스크 오류
- ISR
인터럽트가 발생하면 실행되는 코드
인터럽트 처리를 위해 미리 작성된 코드이며,운영체제의 일부
CPU가 인터럽트를 감지하면 해당 ISR을 실행
인터럽트 종류 별 각자의 ISR 있음
- ISR 처리 과정
1. 인터럽트 발생
2. CPU는 현재 실행 중인 명령을 중지하고, 인터럽트 서비스 루틴(ISR)을 실행
3. ISR은 인터럽트가 발생한 원인을 확인하고, 해당 인터럽트에 대한 처리를 수행
4. ISR이 처리를 마치면, CPU는 인터럽트 이전의 명령어 실행으로 돌아감
- 레지스터
CPU 내에 정보 저장을 위한 고정된 메모리
- 주기억장치(main memory)
CPU에서 프로그램 실행 중 직접 접근이 가능하며 프로그램 주소공간을 가지고 있음
컴퓨터가 종료되면 내용이 모두 지워짐 (휘발성)
RAM
- 보조기억장치(secondary memory)
주기억장치의 확장 메모리로 실행 전 주기억 장치에 적재 필요
컴퓨터가 종료되어도 내용이 보존됨 (비휘발성)
HDD, SSD, CD/DVD 등

Speed, Cost, Volatile으로 계층화
- 레지스터 (Register)
속도: 매우 빠름
비용: 매우 비쌈
휘발성: 예 (전원 공급이 중단되면 데이터 손실)
- 캐시 메모리 (Cache Memory)
속도: 빠름
비용: 비쌈
휘발성: 예 (전원 공급이 중단되면 데이터 손실)
- 주 메모리 (Main Memory, RAM)
속도: 중간
비용: 중간
휘발성: 예 (전원 공급이 중단되면 데이터 손실)
- 보조 저장 장치 (Secondary Storage)
속도: 느림
비용: 저렴함
휘발성: 아니오 (전원 공급이 중단되어도 데이터 유지)

빈번하게 사용되는 데이터를
보다 고속의 메모리에 저장하여 사용하는 기술
- 캐시 메모리는 일반적으로
CPU와 더 가까운 곳에 위치하여, 메모리 접근 시간을 줄일 수 있음- 캐시 메모리는
캐시 정책에 따라 관리
캐시에 저장된 데이터의 유효성을 결정- 하위 중복된 메모리 내용과
동일한 내용으로 유지되어야 함
캐시 메모리에서 수정된 데이터는 적절한 시점에 메인 메모리로 동기화되어야 함
CPU 개입 없이 주변장치가 메모리에 직접 데이터를 전송하는 방식
- CPU는 DMA 컨트롤러에
데이터 전송 요청을 보냄- DMA 컨트롤러는 요청을 받아서
데이터 전송을 시작
(이 과정에서 CPU는 다른 작업을 계속 수행할 수 있음)- DMA 컨트롤러는
주 메모리와 I/O Device 간에 데이터를 직접 전송- 데이터 전송이 완료되면, DMA 컨트롤러는
CPU에 인터럽트를 보내 전송이 완료되었음을 알림
- CPU가 다른 작업을 수행하고 있는 동안, 입출력 장치는 데이터 전송이 필요한 시점에
인터럽트 요청을 보냄- 인터럽트 요청을 받은 CPU는 현재
수행 중인 작업을 중단하고ISR을 실행- ISR에서는 입출력 장치와 관련된 작업을 처리
- ISR이 완료되면, CPU는
중단된 작업을 다시 시작
DMA를 사용하면 CPU는 입출력 작업에 거의 관여하지 않고, 다른 작업에 집중할 수 있음- 반면에
인터럽트를 사용하면 CPU는 입출력 작업에 직접 관여하게 되므로, 작업 전환 시에오버헤드가 발생할 수 있음