1. 운영체제 소개
- 사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어
ex) PC 운영체제(윈도우, Mac OS, 유닉스, 리눅스), 모바일 운영체제 (IOS, 안드로이드)
- 임베디드 운영체제 : CPU 성능이 낮고 메모리 크기가 작은 시스템에 내장하도록 만든 OS
ex) MP3, 스마트 시계
역할
- 자원 관리 : 사용자가 원활하게 작업할 수 있도록 응용 프로그램 자원 분배
- 자원 보호 : 비정상적인 작업으로부터 컴퓨터 자원 보호
- 하드웨어 인터페이스 제공 : 복잡한 과정 없이 다양한 장치를 사용할 수 있도록 지원
- 사용자 인터페이스 제공 : 사용자가 운영체제를 편리하게 사용하도록 지원 -> GUI
목표
- 효율성
- 효율적 자원 관리
- 같은 자원을 사용하여 더 많은 작업량 처리 or 적은 자원으로 같은 작업량 처리
- 안정성
- 안정적 작업 지원
- 시스템 문제 발생 시 이전으로 복구하는 결함 포용 기능 수행
- 확장성
- 다양한 시스템 자원 추가, 제거 용이
- 플러그 앤드 플레이 기능 제공
- 편리성
2. 운영체제 역사
- 에니악(1940년대)
- 일괄 작업 시스템(1950년대)
- 모든 작업 한꺼번에 처리
- 프로그램 실행 중간에 데이터 입력 및 수정 불가
- 대화형 시스템(1960년대 초반)
- 키보드와 모니터 등장
- 프로그램 실행 중간에 데이터 입력 및 수정 가능
- 시분할 시스템(1960년대 후반)
- 하나의 CPU로 여러 작업을 동시에 실행하는 다중 프로그래밍 가능
- CPU 사용 시간을 아주 잘게 쪼개어 여러 작업에 분할
- 분산 시스템(1970년대 후반)
- 개인용 컴퓨터와 인터넷 보급
- 네트워크 상에 분산되어 있는 여러 컴퓨터로 작업 처리 및 결과 상호 교환
- 클라이언트/서버 시스템(1990년대~현재)
- 웹 시스템 등장
- 작업을 요청하는 클라이언트와 요청받은 작업을 처리하는 이중 구조
- 요청 집중 시 서버 과부하
- P2P 시스템(2000년대 초반~현재)
- 서버를 거치지 않고 사용자와 사용자 직접 연결
- 서버 부하 해소
3. 운영체제 구조
커널과 인터페이스
- 커널
- 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것
- 인터페이스
- 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려줌
시스템 호출과 디바이스 드라이버
- 시스템 호출
- 커널이 자신을 보호하기 위해 만든 인터페이스
- 커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단함
- 드라이버
커널의 구성
-
단일형 구조 커널
- 초장기 운영체제 구조
- 커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성
ex) MS-DOS, VMS
- 장점
- 단점
- 버그나 오류 처리 어려움
- 기능상의 작은 결함 시스템 전체로 확산
- 다양한 환경의 시스템에 적용하기 어려움
-
계층형 구조 커널
- 비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만들고 계층 간의 통신을 통해 운영체제 구현
- 디버깅 용이
-
마이크로 구조 커널
- 프로세스 관리, 메모리 관리, 프로세스 간 통신 관리 등 가장 기본적인 기능만 제공
- 각 모듈은 독립적으로 작동하기 때문에 하나의 모듈이 실패하더라도 전체 운영체제가 멈추지 않음
가상머신
운영체제와 응용 프로그램 사이에서 작동하는 프로그램
ex) JVM
출처