2. 컴퓨터 시스템의 구조
운영체제
좁은 의미의 운영체제: 커널, 운영체제의 핵심 부분으로 메모리에 상주하는 부분
넓은 의미의 운영체제: 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함하는 개념
운영체제의 목적
- 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
- 컴퓨터 시스템의 자원(HW/SW)을 효율적으로 관리 - 형평성, 효율성
동시 작업 가능 여부
- 단일 작업 (single tasking): 한 번에 하나의 작업만 처리
- 다중 작업 (multi tasking): 동시에 두 개 이상의 작업 처리
사용자의 수
- 단일 사용자 (single user)
- 다중 사용자 (multi user)
처리 방식
- 일괄 처리 (batch processing): 작업 요청의 일정량 모아서 한꺼번에 처리
- 시분할 (time sharing): 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
- 실시간 (Realtime OS): 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 하는 실시간 시스템을 위한 OS
- 경성 실시간 시스템 (Hard realtime system)
- 연성 실시간 시스템 (Soft realtime system)
Multitasking, Multiprogramming, Time sharing, Multiprocess
컴퓨터에서 여러 작업을 동시에 수행하는 것을 의미
Multiprocessor - 하나의 컴퓨터에 CPU가 여러개 붙어 있음을 의미
운영체제의 예
- 유닉스 (UNIX)
- 코드의 대부분을 C언어로 작성
- 사람이 이해하기 쉬워서 높은 이식성 가짐
- 최소한의 커널 구조
- 소스코드 공개
- DOS (Disk Operating System)
- 단일 사용자용 운영체제, 메모리 관리 능력의 한계
- MS Windows
- MS사의 다중 작업용 GUI 기반 운영체제
- 불안정성
운영체제의 구조
- CPU 스케줄링
- 메모리 관리
- 파일 관리
- 입출력 관리
- 프로세스 관리
운영체제 과목의 수강 태도
본 과목은 OS 사용자 관점이 아니라 OS 개발자 관점에서 수강해야 함
컴퓨터 시스템 구조
device controller: I/O를 담당하는 작은 CPU
local buffer: controller의 작업 공간
Mode bit
- CPU가 사용자 프로그램에 의해 실행되는지 OS에 의해 실행되는지 구분
- 1 - 사용자 모드, 0 - 모니터(OS) 모드
- 보안을 해칠 수 있는 명령어(특권 명령)는 모니터 모드에서만 수행 가능
Interrupt line: 디바이스가 작업을 끝내면 CPU에 interrupt를 걸어 CPU가 자동적으로 운영체제로 넘어감
PC (Program Counter): 다음 번에 실행할 메모리의 주소를 가지고 있음
timer: 일정 시간 간격으로 interrupt 발생시켜 CPU 독점을 막음
CPU가 I/O controller에게 요청하는 기계어는 특권 명령
→ OS에 요청해야 함
시스템 콜: 사용자 프로그램이 운영체제의 서비스를 받기 위해 커널 함수를 호출하는 것
인터럽트
인터럽트 당한 시점의 레지스터와 program counter를 save 한 후 CPU의 제어를 인터럽트 처리 루틴에 넘긴다.
- Interrupt (하드웨어 인터럽트): 하드웨어가 발생시킨 인터럽트
- Trap (소프트웨어 인터럽트)
- Exception: 프로그램이 오류를 범한 경우
- System call: 프로그램이 커널 함수를 호출하는 경우
인터럽트 벡터: 운영체제 종류별로 실행해야 할 코드의 위치를 담고 있는 부분(포인터)
인터럽트 처리 루틴: 해당 인터럽트를 처리하는 커널 함수
현대의 운영체제는 인터럽트에 의해 구동됨
Device Controller
I/O device controller
- 해당 I/O 장치유형을 관리하는 일종의 작은 CPU
- 제어 정보를 위해 control register, status register를 가짐
- local buffer를 가짐 (일종의 data register)
I/O는 실제 device와 local buffer 사이에서 일어남
I/O가 끝났을 경우 interrupt로 CPU에 그 사실을 알림
동기식 입출력과 비동기식 입출력
- 동기식 입출력 (synchronous I/O)
- I/O와 CPU의 작업이 동기화 되어야 함
- I/O의 작업이 끝난 후 다음 작업 수행
- 기다리는 동안 다른 프로그램에게 CPU를 줌
- 비동기식 입출력 (asynchronous I/O)
- I/O와 CPU의 작업이 동기화 될 필요 없음
- I/O의 결과값과 상관 없이 다음 작업 수행
두 경우 모두 I/O의 완료는 인터럽트로 알려줌
DMA
DMA (Direct Memory Access)
- 메모리는 CPU만 접근할 수 있음
- 인터럽트가 빈번할 경우 오버헤드가 커지기 때문에 DMA controller가 메모리에 직접 접근할 수 있음 → CPU에게 알려줌
서로 다른 입출력 기계어
- I/O를 수행하는 special instruction에 의해 (memory 접근 기계어 따로, I/O 접근 기계어 따로)
- Memory Mapped I/O에 의해 (memory 접근 기계어로 I/O까지 접근, memory 주소 I/O까지 연장)