컴퓨터 운영 체제
운영 체제(OS : Operating System)
는 컴퓨터 시스템과 사용자 사이에서 중개자 역할을 하는 프로그램입니다.
운영 체제의 정의
컴퓨터 시스템은 간단하게 보면 하드웨어, 운영 체제, 응용 프로그램으로 구성되어있습니다. 운영 체제는 하드웨어와 사용자 사이의 인터페이스를 제공, 한정된 시스템 자원을 보다 효율적으로 사용할 수 있도록 도와주는 시스템 소프트웨어입니다.
하드웨어 :
중앙처리장치(CPU), 기억장치, 입출력 장치 등
운영 체제 :
윈도우(Windows), 유닉스(Unix), 리눅스(Linux)
응용 프로그램 :
문서 작성 프로그램, 그래픽 작업 프로그램, 게임 프로그램, 도면 따위의 설계 프로그램 등
사용자 :
사람, 기계, 다른 컴퓨터 시스템 등
운영체제의 목적
운영 체제는 사용자가 컴퓨터 시스템을 편리하게 사용할 수 있도록 도와주는 인터페이스를 제공하고, 시스템 자원을 관리하여 컴퓨터의 성능을 향상하는 역할을 합니다.
운영 체제의 목적
처리량 :
처리량은 컴퓨터 시스템이 단위 시간 동안 처리하는 작업량을 의미합니다.
응답 시간 단축 :
응답 시간은 사용자가 어떤 일을 컴퓨터 시스템에 의뢰한 후 결과가 나올 때까지 소요되는 시간을 뜻합니다.
신뢰성 향상 :
신뢰성은 컴퓨터 시스템이 얼마나 정확하게 동작하는지를 나타냅니다.
유용성 증대 :
유용성은 사용자가 시스템 자원을 요구할 때 얼마나 신속하게 제공할 수 있는지를 나타냅니다.
운영 체제의 역할
운영 체제의 가장 중요한 역할은 시스템 자원(Resource)을 관리하는 것입니다. 운영 체제의 주요 관리 대상은 프로세스, 입출력 장치, 기억장치, 정보가 있습니다.
프로세스 관리
: 프로세스는 주기억장치에서 현재 실행 중인 프로그램을 의미합니다. 운영 체제는 프로세스 관리를 위해 프로세스의 생성과 제거, 프로세스의 중지와 재시작, 프로세스의 동기화, 프로세스 간 통신 및 교착상태 방지 기법 등을 제공합니다.
기억장치 관리
: 운영 체제는 기억장치 관리를 위해 주기억장치의 어느 부분이 어떤 프로세스에 의해 사용되고 있는지 파악합니다. 또한 프로세스의 요구에 따라 주기억장치에 어떤 프로세스를 적재하고 회수할 것인지도 결정합니다.
입출력 장치 관리
: 운영 체제는 효율적인 입출력 시스템을 구성하기 위해 입출력 장치의 상태를 파악하고 입출력 장치의 작업을 스케줄링합니다.
정보 관리
: 운영 체제는 정보를 담고 있는 파일을 저장 매체에 생성하거나 제거하는 등, 파일과 디렉터리에 대한 관리 기능을 제공합니다.
운영 체제의 구동
운영 체제는 컴퓨터의 전원이 켜지면 자동으로 실행됩니다. 운영 체제 구동을 위한 컴퓨터 시스템의 부팅 과정은 아래와 같습니다.
컴퓨터 시스템에 전원 공급 – BIOS 프로그램 실행 – 자체 진단 기능 수행(오류 발생 시 오류 메세지 출력, 정지) – 주기억장치에 부트 로더 적재 – 부트 로더가 운영 체제 적재 – 운영 체제 구동 |
컴퓨터 시스템에 전원이 공급되면 메인 보드의 롬에 저장된 바이오스(BIOS : Basic Input Output System) 프로그램이 실행됩니다. 바이오스 프로그램은 CPU, 주기억장치, 그래픽카드, 키보드 등 각종 하드웨어 장치를 검사하고 초기화하는 자체 진단 기능을 수행합니다. 이때 오류가 발생하면 오류 메시지를 출력하고 동작을 멈춥니다.
자체 진단 결과 아무 이상이 없으면 바이오스(BIOS) 프로그램은 검색된 부팅 매체(하드 디스크, CD룸 등)에서 부트 로더(Boot Loader)를 주기억장치로 읽어 들입니다.
부트 로더가 주기억장치에 적재되면 바이오스가 종료되고, 시스템 제어권은 부트 로더에 넘어갑니다. 부트 로더는 주기억장치에 운영 체제를 적재하고, 운영 체제의 첫 번째 명령어가 실행되도록 운영 체제에 제어권을 넘깁니다.
주기억 장치에 운영 체제를 적재하여 사용자가 컴퓨터 시스템을 이용할 수 있도록 하는 절차를 부팅(Booting)이라고 합니다.
작업 처리 방식에 따른 운영 체제의 분류
운영 체제는 작업 처리 방식에 따라 일괄 처리 시스템, 다중 프로그래밍 시스템, 다중 처리 시스템, 시분할 시스템, 실시간 시스템, 분산 처리 시스템으로 분류됩니다. 각각의 처리 시스템에 대하여 알아봅시다.
1. 일괄 처리 시스템
일괄 처리 시스템(Batch Processing System)은 1950년대 초기의 자료 처리 형태입니다. 자료가 발생할 때마다 즉시 처리하지 않고 입력되는 자료를 일정 기간 또는 일정량이 될 때까지 모아두었다가 한꺼번에 처리합니다. 대표적인 예는 전기, 수도, 가스 요금의 계산, 수학능력시험 채점, 급여 계산 등이 있습니다.
일괄 처리 시스템은 컴퓨터 시스템을 효율적으로 사용할 수 있다는 장점이 있지만, 작업 시작에서 작업 완료까지의 반환 시간(Turnaround Time)이 길다는 단점이 있습니다. 또한 작업과 상호작용을 할 수 없어 실행 과정에서 발생할 수 있는 모든 경우에 적절하게 대처하려면 작업 제어 카드(Job Control Card)가 필요하고 하나의 작업이 실행되면 그 작업이 모든 시스템 자원을 독점하기 때문에 CPU가 작업 처리에 사용되지 않는 유휴 상태(idle State)가 종종 발생하기도 합니다.
2. 다중 프로그래밍 시스템
1960년대 초에 등장한 다중 프로그래밍 시스템(Multiprogramming System)은 다수의 프로그램을 주기억장치에 적재합니다. 하나의 프로그램이 CPU를 사용하다가 입출력 연산을 수행하기 위해 입출력 장치를 사용하면, 그동안 다른 프로그램이 CPU를 사용하는 방법입니다. 다중 프로그래밍 시스템은 CPU의 유휴 시간(idle Time)에도 다른 프로그램을 처리하기 때문에 다수의 프로그램이 동시에 실행되는 것과 같은 효과를 내어 CPU의 효율을 극대화합니다.
3. 다중 처리 시스템
다중 처리 시스템(Multiprocessing System)은 컴퓨터 2개 이상의 CPU를 탑재하여 동시에 처리하는 방식으로, 그 목적은 컴퓨터 시스템의 처리 능력 증대와 신뢰성 향상에 있습니다. 다중 처리 시스템의 운영 체제는 여러 CPU 사이의 기억장치 공유 방법과 CPU 스케줄링 방법을 결정해야 합니다.
4. 시분할 시스템
시분할 시스템(Time-Sharing System)은 각 사용자에게 일정한 CPU 시간(Time Slice)을 할당하고, 주어진 시간 동안 컴퓨터와 대화 형식으로 프로그램을 실행하는 방식입니다. 이러한 시분할 시스템의 목적은 각 사용자에게 컴퓨터 시스템을 독점적으로 사용하고 있다는 느낌을 주는 것입니다.
5. 실시간 시스템
실시간 시스템(Real-Time System)은 환자 모니터링 시스템과 같이 입력된 데이터를 즉시 처리한 후 바로 결과를 보냅니다. 입력된 요구에 바로 반응하므로 실시간 처리 시스템(Real-Time Processing System)이라고도 하며, 작업의 요청에서부터 수행 결과를 얻기까지 시간 제약(Time Constraints)이 존재합니다. 제약의 엄격함에 따라 경성 실시간 시스템(Hard Real-Time System)과 연성 실시간 시스템(Soft Real-Time System)으로 구분됩니다.
경성 실시간 시스템
은 작업의 시작이나 완료에 대한 시간 제약을 지키지 못할 경우 시스템에 치명적인 영향을 미칩니다. ex. 무기 제어, 발전소 제어, 공장 자동화 등이 있습니다.
연성 실시간 시스템
은 작업 실행에 대한 시간 제약은 있지만 이를 지키지 못해도 시스템에 큰 영향을 미치지 않습니다. ex. 온라인 예약 시스템, 동영상 플레이어 등
6. 분산 처리 시스템
분산 처리 시스템(Distributed Processing System)은 네트워크를 통해 연결된 다수의 컴퓨터 시스템에, 작업과 자원을 분산시켜 처리합니다. 컴퓨터 시스템과 데이터가 지역적으로 분산되어 있기 때문에 평소에는 독립적으로 작업을 처리하다가 정보 교환이 필요할 때는 상호 협력하면서 작업을 처리합니다. 일반적으로 분산 처리 시스템의 설계 목적은 자원 공유, 연산 속도와 신뢰성 향상, 통신 기능입니다.