운영체제 개요
컴퓨터 시스템의 구성
- 하드웨어
- CPU, 메모리, 입출력장치, 저장장치, 네트워크 장치 등
- 소프트웨어
- 응용 소프트웨어 (웹 브라우저, 그래픽 소프트웨어 등)
- 시스템 소프트웨어 (응용 소프트웨어와 하드웨어 사이의 매개체 > 운영체제, 컴파일러 등)
운영체제: 컴퓨터 시스템의 자원 관리, 컴퓨터 프로그램 동작 위한 서비스를 제공하는 프로그램들의 모임
운영체제의 역할
- 자원 관리
- 자원: 하드웨어 자원, 소프트웨어 자원, 데이터 포함
- 데이터 읽기, 장치 제어, CPU 및 메모리 관리 등
- 사용자 지원
- 사용자가 내린 명령 해석
- 사용자와 하드웨어 사이의 매개체
- 입력 내용 응용 프로그램에 전달 등
운영체제 등장 이전의 문제점
- 초기 컴퓨터에는 운영체제가 존재하지 않았음
- 사용자가 응용 프로그램을 통해 직접 하드웨어를 제어해야함
- 여러 종류의 하드웨어에서 동작하는 응용 프로그램 제작 필요
- 응용 프로그램들 간의 효율적 자원 공유 어려움
커널 모드 (슈퍼바이저 모드)
- 하드웨어 직접 제어하는 CPU 명령어 사용 가능
- 커널: 응용 프로그램과 하드웨어 수준의 처리 사이의 가교 역할 (운영체제의 핵심 요소)
- 분류
- 일체형 커널(monolithic kernel): UNIX, Linux
- 운영체제의 모든 서비스가 커널 내에 포함
- 커널 내부 요소들이 효율적 상호 작용
- 오류 발생 시 전체 장애 가능성
- 마이크로 커널
- 운영체제 요소 대부분을 커널 외부로 분리, 커널 내부에는 최소한의 요소(메모리 관리, IPC 등)
- 유지보수 용이, 안정성 우수
- 성능 저하 (IPC 필요)
- 일체형 커널(monolithic kernel): UNIX, Linux
- Q. 커널은 운영체제가 아닌가?
- 어떻게 커널을 구성하는 지에 따라 다를 수 있음
사용자 모드
- 시스템 호출: 응용 프로그램이 운영체제에 서비스 요청 > 커널 모드로 변경 > 커널 동작 > 하드웨어 제어
- 사용자 모드에서 동작하다가 필요할 때 커널 모드를 부르는 형태
- 하드웨어 제어 명령어를 넣어도 작동하지 않음
커널 모드에서는 운영체제만 동작, 사용자 모드에서는 응용 프로그램 동작 → 응용 프로그램이 하드웨어에 직접 접근하지 않음
운영체제의 구성요소
자원의 성격에 따라 구분!
1. 프로세스 관리자
- 프로세스 생성, 삭제
- 프로세스에 CPU 할당 위한 스케줄 결정
- 프로세스 상태 관리
2. 메모리 관리자
- 메모리 공간에 요구 발생 시 메모리 할당, 회수
- 메모리 공간 보호 (응용 프로그램의 프로세스 접근 제한 등)
3. 파일 관리자
- 프로그램 파일 및 데이터 파일 관리
- 파일 열기, 수정, 삭제 등
- 저장장치의 공간 관리, 파일의 접근 제한 관리
4. 장치 관리자
- 시스템의 모든 장치 할당, 작동, 반환
운영체제의 유형
1. 일괄처리 운영체제 batch processing
- 작업을 모아 순서대로 처리
- 한 번에 한 프로그램씩 > 충분한 자원 활용 불가
2. 시분할 운영체제 time-sharing (대화형 운영체제 interactive)
- 각 프로그램을 한 번에 조금씩 수행
- 응답시간 크게 단축 (응답시간: 반응이 시작되는 시점까지의 소요시간)
- 작업이 늦게 들어와도 컴퓨터가 반응을 해줌 → 대화형
3. 실시간 운영체제 real-time
- 원하는 시간 내에 프로그램의 결과 얻을 수 있음
- 증권 관리 등 즉각적인 결과 필요한 환경
- 우선순위 높은 작업 우선 처리
- 시분할과의 차이점: 실제 결과까지의 시간
4. 분산 운영체제 distributed
- 2개 이상의 컴퓨터 시스템이 네트워크로 서로 연결되어 서로의 자원 이용
- 하나의 컴퓨터를 사용하는 것처럼!