운영체제의 기본 개념
운영체제의 역할과 구성요소
- 운영체제(OS)는 컴퓨터 하드웨어와 사용자를 연결하는 인터페이스 역할을 한다.
- 쉘은 사용자가 운영체제와 상호작용할 수 있도록 돕는 프로그램이다.
- 운영체제는 하드웨어뿐만 아니라 응용 프로그램이 필요로 하는 시스템 자원을 효율적으로 관리한다.
- 주요 기능으로는 프로세스 관리, 메모리 관리, 파일 시스템 관리, 입출력 관리 등이 있다.
- 하드웨어 요청을 처리하는 것은 운영체제가 아니라, 하드웨어 인터페이스를 통한 드라이버나 펌웨어의 역할이다.
운영체제의 주요 기능과 역할
- 운영체제는 다중 프로세스 환경에서 실행 우선순위를 관리하여 응용 프로그램 실행을 제어한다.
- 멀티태스킹을 지원해 여러 응용 프로그램이 동시에 실행되도록 한다.
- 운영체제는 사용자 계정 관리는 가능하지만, 응용 프로그램 사용자를 직접 관리하지 않는다.
- Instruction set은 운영체제가 아닌 CPU 아키텍처에서 제공되는 명령어 집합이다.
프로세스 관리
프로세스 메모리 구조
프로세스 메모리 구조는 일반적으로 코드(Code), 데이터(Data), 힙(Heap), 스택(Stack) 영역으로 나뉜다.
1. Code 영역: 실행할 프로그램의 명령어(코드)가 저장되는 공간.
2. Data 영역: 전역 변수와 정적 변수 등이 저장되는 공간.
3. Heap 영역: 런타임 시 동적으로 할당되는 메모리 공간.
4. Stack 영역: 함수 호출 시 생성되는 지역 변수와 반환 주소 등이 저장되는 공간.
프로세스 스케줄링과 시스템 유형
- 시분할 시스템은 다중 사용자를 지원하며, 응답시간을 최소화하기 위해 각 프로세스에 제한된 CPU 시간을 할당한다.
- 멀티태스킹은 단일 CPU에서 여러 작업이 동시에 실행되는 것처럼 보이게 만드는 스케줄링 기술이다.
- 멀티프로그래밍은 CPU 활용도를 최대화하기 위해 여러 프로그램을 메모리에 적재하여 관리하는 방식이다.
- 멀티프로세싱은 여러 CPU를 사용해 병렬로 작업을 처리하는 시스템으로, 단일 CPU와는 다르다.
선점형 스케줄러의 특징
- 선점형 스케줄러는 우선순위가 높은 프로세스가 실행 중인 프로세스를 강제로 중단하고 CPU를 차지할 수 있는 방식이다.
- 이는 응답 시간이 중요한 실시간 시스템에서 자주 사용된다.
- 비선점형 스케줄링과 달리, 현재 실행 중인 프로세스가 종료되지 않아도 스케줄링이 발생할 수 있다.
- FIFO 스케줄러는 비선점형 방식에 가깝고, 선점형 스케줄링과는 무관하다.
시스템 구성과 제어
멀티프로세싱의 특징과 오해
- 멀티프로세싱은 하나의 CPU가 아닌 여러 CPU를 활용하여 병렬 처리를 수행하며, 실행 속도를 높이는 데 기여한다.
- 배치 프로세싱과 달리 멀티프로세싱은 여러 CPU를 활용하여 하나의 응용 프로그램을 병렬로 실행하거나 여러 프로그램을 동시에 실행할 수 있다.
- 멀티프로세싱은 스케줄링 기법이 아니라 하드웨어 기반의 병렬 처리 기술이다.
- 특정 응용 프로그램의 실행 시간이 길어도, 멀티프로세싱에서는 다른 CPU에서 병렬로 작업이 진행되므로 기다림이 줄어든다.
- 멀티프로세싱과 멀티태스킹은 다른 개념으로, 멀티태스킹은 단일 CPU에서 작업 간 전환으로 이루어진다.
인터럽트의 목적과 필요성
- 인터럽트는 입출력 하드웨어와 CPU 간의 효율적인 커뮤니케이션을 가능하게 한다.
- 선점형 스케줄러 구현은 인터럽트가 없어도 가능하며, 인터럽트는 필수 조건이 아니다.
- 예외 상황(예: 0으로 나누기, 메모리 접근 오류 등)을 처리하기 위해 인터럽트를 활용한다.
- 비선점형 스케줄러는 인터럽트 없이도 동작하며, 주로 프로세스가 자발적으로 CPU를 반환할 때 사용된다.
인터럽트 벡터 테이블(IDT)의 역할
- IDT(Interrupt Descriptor Table)는 인터럽틑 번호와 해당 인터럽트 처리 루틴의 주소를 저장하는 데이터 구조이다.
- CPU는 인터럽트 발생 시 IDT를 참조하여 적절한 처리 루틴을 실행한다.
- PCB(Process Control Block)는 프로세스의 상태 정보를 저장하며, 인터럽트 처리와는 직접 관련이 없다.
- SP(Stack Pointer)와 JOB은 인터럽트 처리 루틴의 주소를 기록하지 않는다.
입출력 시스템
I/O Device (입출력 장치)
I/O device는 Input(입력) 또는 Output(출력) 기능을 수행하는 장치를 의미한다.
- 입력 장치: 키보드, 마우스, 마이크 등.
- 출력 장치: 모니터, 스피커, 프린터 등.
- 네트워크 장치는 데이터 송수신에 사용되지만, I/O 장치로 간주되기도 한다.
- CPU는 데이터 처리를 담당하며, I/O 장치가 아니다.
운영 방식
배치 처리 시스템 (Batch Processing System)
배치 처리 시스템은 여러 작업(Job)을 모아 한꺼번에 처리하는 방식으로, 사용자와의 실시간 상호작용 없이 실행된다.
- 작업들은 실행 순서에 따라 순차적으로 처리된다.
- 이 시스템은 주로 데이터 처리, 급여 계산 등 반복적이고 대량 작업에 사용된다.
- 대화형(interactive) 시스템과 달리 응답 속도는 중요하지 않다.