정의
컴퓨터
시스템을 운용하는 소프트웨어
협의
커널: 운영체제의 핵심 부분으로 메모리에 상주하는 부분
광의
커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함
목적 및 특징
목적
컴퓨터 시스템의 자원을 효율적으로 관리
프로세서, 기억장치, 입출력 장치 등의 효율적 관리
사용자 간 형평성 있는 자원 분배
주어진 자원으로 최대한 성능
사용자/프로그램들이 동시에 독자적으로 수행되는 것과 같은 환경 제공
하드웨어를 직접 다루는 부분 대행
사용자 및 운영체제 자신 보호
프로세스, 파일, 메시지 등을 관리
특징
시스템 서비스를 애플리케이션에 제공
앱과 하드웨어 사이 API
프로세스, 자원, 유저 인터페이스를 관리
분류
동시 작업 가능 여부
사용자의 수
처리 방식
동시 작업 가능 여부
단일 작업
한번에 하나의 작업만 처리
다중 작업
동시에 두개 이상의 작업 처리
사용자의 수
단일 사용자
다중 사용자
처리 방식
일괄 처리(Batch Processing)
작업 요청의 일정량을 모아서 한꺼번에 처리
작업이 완전히 종료될 때까지 기다려야 함
시분할(Time Sharing)
여러 작업 수행 시 컴퓨터 처리 능력을 일정한 시간 단위로 분할하여 사용
일괄 처리 시스템에 비해 짧은 응답 시간
Interactive
실시간(Realtime)
정해진 시간 안에 어떤 일이 종료됨이 반드시 보장되어야 함
로봇 제어
개념 확장
Hard Realtime System(경성 실시간)
원자로/미사일 제어, 반도체 공장/장비
Soft Realtime System(연성 실시간)
예시
UNIX
코드의 대부분을 C언어로 작성
높은 이식성
최소한의 커널 구조
복잡한 시스템에 맞게 확장 용이
소스 코드 공개
프로그램 개발에 용이
다양한 버전
System V, FreeBSD, SunOS, Solaris
Linux
DOS(Disk Operating System)
MS에서 1981년 IBM-PC를 위해 개발
단일 사용자 운영체제, 메모리 관리 능력 한계(주 기억 장치 640KB)
MS Windows
MS의 다중 작업용 GUI 운영 체제
Plug And Play, 네트워크 환경 강화
DOS용 프로그램과 호환성 제공
불안정
풍부한 지원 소프트웨어
Mobile Device OS
iOS, Android
구조
CPU 스케쥴링
메모리 관리
입출력 관리
파일 관리
프로세스 관리
보호 시스템
네트워크
명령어 해석기
Bootstrap
컴퓨터를 켜면 실행되는 첫번째 프로그램
OS를 load
작동
프로그램의 실행
시작
File System
Virtual Memory
Address Translation
Physical Memory
Kernel Address Space
Kernel Code
PCB: Process Control Block
사용자 프로그램이 사용하는 함수
Function
프로그램의 실행
Multi-Programming
한번에 두개 이상의 프로그램을 돌린다.
여러개의 프로세스를 동시에 메모리에 유지한다.
CPU 활용도를 높이기 위해
Multi-Tasking == Multi-Processing
Concurrency VS Parallelism
Multi-Programming의 논리적 연장선
CPU 스케쥴링
두개의 모드
정당하지 못한 프로그램이 다른 프로그램에 영향을 줄 수 없게 함
장점
단점
단점 극복 방법
비교군과의 차이
면접 질문