운영체제 개념
운영체제란?
- 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중계 역할을 하면서, 프로그램을 실행을 관리하고 제어하는 시스템 소프트웨어
- 운영체제는 컴퓨터가 아님.
- 운영체제는 시스템 소프트웨어
- 컴퓨터가 on 될 때 부팅 모듈에 의해 메모리에 적재되며, 나머지 모든 실행 프로그램들을 제어하고 사용자의 요청을 처리해주는 시스템 소프트웨어
- 컴퓨터 자원을 독점적으로 관리하는 시스템 소프트웨어

운영체제 정의에서 핵심 단어
OS는 모든 컴퓨터의 자원 관리
- 자원
하드웨어 자원 - CPU, 캐시나 메모리, 키보드, 마우스, 디스플레이, 하드 디스크, 프린터
소프트웨어 자원 - 응용 프로그램
데이터 자원 - 파일, 데이터베이스 등
OS는 자원에 대한 독점적 권한을 가짐
- 자원에 대한 모든 관리 권한은 OS에게 있음
자원 할당, 자원 공유, 자원 접근, 자원 입출력 등
예) 파일 생성 - 디스크의 빈 공간 관리, 파일 저장 위치 관리, 파일 입출력
OS는 관리자 기능을 가짐
- 실행중인 프로그램 관리, 메모리 관리, 파일과 디스크 장치 관리, 입출력 장치 관리, 사용자 계정 관리 등
OS는 시스템 소프트웨어
- 커널이라고 불리는 OS의 핵심 모듈
- UI/도구 프로그램들
탐색기, 작업 관리자, 제어판 등
- 장치를 제어하는 디바이스 드라이버들로 구성
운영체제의 목적과 기능
목적
- 사용자의 컴퓨터 사용의 편리성
- 컴퓨터의 자원 관리의 효율성
기능
- CPU/프로세스 관리
- 메모리 관리
- 파일 시스템 관리
- 장치 관리
- 네트워크 관리
- 보안 관리
- 기타 관리
사용자 관리 - 사용자 계정 관리
통계 - CPU, 메모리, 네트워크, 사용자의 접속 시간 등
오류 발견 및 대응
부팅

운영체제의 발전
운영체제 태동 시절(1940년대)
1세대 컴퓨터 시절 - 운영체제 개념 없음
No OS
- 개발자가 펀치 카드에 프로그램 작성, 입력, 실행
컴퓨터는 한 번에 한 개의 작업만 실행
컴퓨터는 셋업하는 동안 많은 시간이 유휴 상태

배치 운영체제
출현 배경
- 컴퓨터의 idle 시간을 줄여 컴퓨터의 활용률 향상
배체 운영체제 컴퓨터 시스템
- 개발자와 관리자의 구분
- 개발자는 펀치 카드를 입력 데크에 두고 결과 기다림
- 배체 운영체제는 자동으로 테이프 장치에 대기중인 프로그램을 한 번에 하나씩 적재하고, 실행

다중프로그래밍 운영체제
출현 배경
- 프로그램 실행 속성으로 인한 CPU의 idle 시간 발생
- CPU의 idle 시간을 줄이기 -> CPU 활용률 증가 -> 처리율 증가를 목표로 함
다중프로그래밍 기법 출현
- 미리 여러 프로그램을 메모리에 적재
- 프로그램 실행 도중 I/O가 발생하여 대기하게 될 때, 메모리에 적재된 다른 프로그램 실행
정의
- 다중프로그래밍은 여러 프로그램을 메모리에 올려놓고, CPU가 한 프로그램을 실행하다 I/O가 발생하면, 입출력이 완료될 때까지 CPU가 메모리에 적재된 다른 프로그램을 실행하는 방식으로 CPU의 idle time을 줄이는 기법.

다중프로그래밍 도입으로 인한 이슈
큰 메모리 이슈
- 여러 프로그램을 동시에 메모리에 올려놓기 위해서는 메모리의 크기를 늘릴 필요가 발생함
프로그램의 메모리 할당 및 관리 이슈
메모리 보호 이슈
- 프로그램이 다른 프로그램 영역을 침범하지 못하게 막는 방법 필요
CPU 스케줄링과 컨텍스트 스위칭
인터럽트 개념 도입
- 운영체제는 I/O 장치로부터 입출력 완료를 전달받는 방법 필요
동기화
- 여러 프로그램이 동일한 자원을 액세스 할 때 발생하는 문제점 해결 방안
교착 상태 해결
- 프로세스들이 서로 상대가 가진 자원을 요청하면서 무한 대기가 발생하는 교착상태 해결 방안
시분할 다중프로그래밍 운영체제
출현 배경
- 다중프로그래밍 운영체제와 거의 동시에 연구 시작
- 배치 처리와 당시 다중프로그래밍의 다음 2가지 문제점 인식
(1) Batch 처리에 의한 비대화식 처리방식의 문제점 발생
(2) 느린 응답시간, 오랜 대기 시간
- 프로그램을 제출하고 하루 후에 결과 보기
- 사용자의 즉각적인 대응 없음
시분할 운영체제의 시작
- 빠른 실행과 빠른 프로그래밍 오류 디버깅 필요
- 사용자에게 빠른 응답을 제공하는 대화식 시스템 제안
터미널(키보드 + 모니터 + 전화선 + 모뎀)
사용자는 터미널로 메인 컴퓨터에 원격 접속
시간을 나누어 돌아가면서 각 터미널의 명령 처리

개인용 운영체제
출현 배경
-
시분할 시스템 사용의 불편함
응답 속도 저하 - 많은 사용자로 인해 응답 속도 저하
공간 제약 - 터미널이 있는 전산실에서만 컴퓨터 사용 가능
-
개인용 컴퓨터 필요성
원격 접속 없이, 가정에서, 혼자 사용
개인용 컴퓨터 등장
- 마이크로프로세스 CPU 장치 개발
- 메인프레임이나 미니컴퓨터에 비해 저렴, 소형
임베디드 운영체제
임베디드 컴퓨터
- 자동차 비행기 제어 시스템, 공장, 디지털 TV, ATM기 등등 가전제품이나, 산업 현장의 기계들, 상용 제품등에 내장되어 이들 장치들의 제어할 목적을 개발된 소형 컴퓨터
임베디드 운영체제
- 임베디드 컴퓨터에서 장치들을 제어하고 작동시키는 기능을 수행하는 운영체제
모바일 운영체제
모바일 컴퓨터
- 하드웨어의 급속한 발전으로 휴대 가능한 크기로 들고 다닐 수 있는 모바일 장치 혹은 모바일 컴퓨터 출현
- 스마트폰, 태블릿, 스마트워치와 같은 입는 컴퓨터 등 어디에서나 휴대 가능한 컴퓨터
- 터치스크린, 블루투스 장치, 전화기, GPS, 카메라등의 장치 내장
모바일 운영체제
- 모바일 컴퓨터 내 장치들을 구동시키고, 이들을 활용하는 다양한 응용프로그램을 실행할 수 있도록 특별히 설계된 운영체제
운영체제의 종류
데스크톱 운영체제
- windows, Mac OS, Linux가 전체 시장 지배
서버 컴퓨터 운영체제
- 네트워크에 연결하여 항상 실행되는 컴퓨터, 보안 중요함.
Unix 계열의 linux, FreeBSD, Windows Server
모바일 운영체제
- 모바일 전화기, 스마트폰, 태블릿 컴퓨터 등 다양한 이동용 혹은 휴대용 장치에서 실행되도록 만들어진 운영체제
Android, iOS, Windows Mobile
임베디드 운영체제
- 임베디드 컴퓨터에서 장치들을 제어하고 작동시키는 기능
WinCE, 임베디드 리눅스
실시간 운영체제
- 실시간 애플리케이션 혹은 태스크를 각각 정해진 데드라인 시간 이내에 처리되도록 보장하는 것을 목표
PSOS, VxWorks, VRTX, RT-Linux, Lynx