01. 운영체제의 개요
1. 운영체제 소개
1-1. 생활 속 운영체제
컴퓨터란?
프로그래밍이 가능한 기계
임베디드 시스템이란?
웹서핑, 문서 작성, 영화 감상, 게임과 같은 다양한 작업에 사용되는 범용 컴퓨터가 아닌 스마트 시계, 스마트 TV, 스마트 자동차 등에 탑재된 컴퓨터
1-2. 운영체제의 정의
- 컴퓨터는 데이터를 통해 작업이 이루어짐 크게 처리하고 결과를 출력하거나 저장 함 데이터(Data) → Processing(처리) → 정보(Information) / IT(Information Technology)
- 소프트웨어 → 명령 → 하드웨어 / 소프트웨어는 정해진 절차에 따라 하드웨어를 사용하여 데이터를 처리 하는데 크게 응용 프로그램(워드, 한글, 곰플레이어 등)과 시스템 소프트웨어(운영체제, 유틸리티 등)이 있다.
- 운영체제(Operating System)란?
- 운영체제는 모든 소프트웨어 위에 존재하는 최고의 소프트웨어
- 응용 프로그램과 사용자로부터 모든 컴퓨터 자원을 숨김 → 대신 Interface를 제공해 사용 할 수 있도록 해줌
- 컴퓨터 자원을 효율적으로 관리하는 소프트웨어
- 하드웨어를 조정하고 관리하기 위해 존재
- 소프트웨어와 하드웨어의 특성 모두 갖춘 형태로 운영 되며 이를 펌웨어(Firmware)라고 함
1-3. 컴퓨터 구조와 운영체제

- UI(User Interface) - 사용자가 조작하여 컴퓨터를 컨트롤 함
- GUI(Graphical User Interface) - 마우스의 클릭, 드래그 같은 직관적인 작업으로 컴퓨터 컨트롤이 가능해짐
1-4. 운영체제의 역할

- 자원 관리 - 자원들의 배분과 적절한 시점에 회수하여 여러 응용 프로그램의 원할한 작업을 돕는다.
- 자원 보호 - 특정 응용 프로그램이 남의 영역을 침범할 때 해당 자원을 보호 함
- 하드웨어 인터페이스 제공 - 다양한 하드웨어에 대한 자동 설치 지원으로 종류에 상관 없이 사용 가능
- 사용자 인터페이스 제공 - 기존에는 텍스트로 인터페이스를 조작 했다면 현재는 Graphical로 통해 마우스 또는 손을 이용해서 사용
1-5. 운영체제의 목표
- 효율성 - 같은 자원으로 더 많은 일을 처리하거나 적은 자원으로 같은 양을 처리 하는 것을 추구
- 안정성 - 운영체제가 가장 바닥이 되는 소프트웨어로 안정성이 없다면 모든 프로그램이 불안정하게 됨
- 확장성 - 다양한 시스템 자원을 추가 및 제거가 용이해야 함
- 편리성 - 물론 GUI나 편리성을 위한 것들은 줄인다면 효율이 올라갈 수도 있지만 사용자의 편리성 또한 버리면 안 됨
2. 운영체제의 발전

2-1. 초창기 컴퓨터
- 존 모클리와 존에커트가 만들었다.
- 에니악 30톤 규모 거대한 계산기로 미사일 탄도를 계산하기 위해 제작
- 진공관이 켜지면 1, 꺼지면 0이라고 판단 (이는 컴퓨터가 2진법을 사용하는 계기가 됨)
- 주변 장치가 없었음
- 진공관을 전선으로 연결해 프로그램을 대신 함 (하드와이어링 방식)
2-2. 일괄 작업 시스템
- 기술 발전을 거쳐 IC(Integrated Circuit)칩 만듦
- 천공카드 리더(Input) - 카드에 구멍을 뚫어 문자를 입력하는 방 식 (Optical Mark Reader)
- 라인 프린터(Output) - 한 번에 한 줄씩 문자만 출력하는 프린터
- 기존과 다르게 리더만 교체하면 다른 작업이 가능
- 천공카드 시스템은 필요한 프로그램과 데이터를 동시에 입력해야 작업이 가능 → 일괄 작업 시스템(Batch Job System) or 일괄 처리 시스템(Batch Processing System)
- 일괄 작업 시스템에서는 작기는 하지만 운영체제가 사용 됨 → 메인메모리가 운영체제 영역과 사용자 영역으로 나뉨
2-3. 대화형 시스템
- 키보드와 모니터가 개발됨으로서 작업 중간에 입력하거나 중간 결과 값 확인이 가능해짐
- 중간에 값을 입력하면 작업의 흐름을 바꾸는 것도 가능
- 컴퓨터와 사용자의 대화를 통해 작업이 이루어지는 시스템을 대화형 시스템(Interactive System)이라고 한다.
- 작업 시간을 예측하기 어려움
2-4. 시분할 시스템
- 한번에 한가지 일만 수행하여 낭비가 큼 → 효율적으로 사용하기 위해 멀티프로그래밍 기술이 개발 됨
- 시분할 시스템 - 여러 작업을 조금씩 처리하여 작업이 동시에 이루어지는 것처럼 보이게 하는 것 → 번외로 다중 사용자 시스템도 있음
- 타이이 때 잘게 나뉜 시간 한 조각을 타임 슬라이스 또는 타임 퀀텀이라고 함
- 단점으로는 사용자 메모리 정리하는 추가 작업 그리고 여러개를 동시에 처리 하면서 작업 소요 시간이 불분명해짐 (우선 순위의 문제)
- 실시간 시스템 (우선 순위 문제 해결책)
- 경성 실시간 시스템 (Hard Real-Time System) - 지정한 응답 시간을 정확히 지키는 시스템으로 원자력 발전소의 원자로 온도 제어나 미사일 요격과 같은 작업에 이용.
- 연성 실시간 시스템 (Soft Real-Time System) - 지정한 응답 시간을 최대한 지키지만 어느 정도 융통성이 허용된 시스템. 동영상 재생기의 경우, 응답 시간 안에 작업이 처리되지 않으면 끊김 현상이 발생하지만, 치명적인 결과를 낳지 않음.
2-5. 분산 시스템
- 분산 시스템 - 메인프레임이라는 고가의 대형 컴퓨터를 사용하기 힘들기에 작은 개인용 컴퓨터 여러대를 하나로 묶어 이용하는 시스템