운영체제
사용자에게 편리한 인터페이스 환경을 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어
운영체제 역할
1. 자원관리, 운영체제는 자원을 응용 프로그램에 나눠주어 사용자가 원활하게 작업할 수 있도록한다.
2. 자원보호, 비정상적인 작업으로부터 컴퓨터 자원을 보호
3. 하드웨어 인터페이스 제공, 사용자가 복잡한 과정 없이 다양한 장치를 사용할 수 있도록 해주는 하드웨어 인터페이스를 제공한다.
4. 사용자 인터페이스 제공, 사용자가 운영체제를 편리하게 사용하도록 지원한다. (ex. CPI, GPU, EUCI)
운영체제 목표
1. 효율성, 자원을 효율적으로 관리하는 것, 같은 자원을 사용하여 더 많은 작업량을 처리하거나, 같은 작업량을 처리하는데 보다 적은 자원을 사용하는 것
2. 안정성, 작업을 안정적으로 처리하는 것, 운영체제는 하드웨어 전체를 관리하는 소프트웨어로, 운영체제가 불안정하면 모든 작업이 불안해질 수 있으므로 안정성이 담보되어야 한다.
3. 확장성: 다양한 시스템 자원을 컴퓨터에 추가하거나 제거하기 편리한 것
4. 편리성, 사용자가 편리하게 작업할 수 있는 환경을 제공하는 것
동시 사용자 수
단일 사용자 (Single-User System)
한명의 사용자만 시스템 사용 가능
한명의 사용자가 모든 시스템 자원 독점
자원관리 및 시스템 보호 방식이 간단함
다중 사용자 (Multi-User System)
동시에 여러 사용자들이 시스템 사용
각종 시스템 자원(파일 등)들에 대한 소유 권한 관리 필요
기본적으로 Multi-Tasking 기능 필요
OS의 기능 및 구조 복잡
서버, 클러스터(cluster) 장비 등에 사용
Unix, Linux, Windows Server 등
동시 실행 프로세스 수
단일 작업 (Single-Tasking System)
시스템 내에 하나의 작업(프로세스)만 존재
하나의 프로그램 실행을 마친 뒤에 다른 프로그램 실행
운영체제 구조 간단
예) MS-DOS
다중 작업 (Multi-Tasking System)
동시에 여러 작업(프로세스) 수행 가능
작업들 사이의 동시 수행, 동기화 등을 관리해야 됨
운영체제 기능 및 구조 복잡
예) Unix/Linux, Windows 등
작업 수행 방식
일괄처리 시스템 (Batch Processing System)
모든 시스템을 중앙에서 관리 및 운영
사용자의 요청 작업(천공카드 등)을 일정 시간 모아 두었다가 한번에 처리
시스템 지향적
장점
많은 사용자가 시스템 자원 공유
처리 효율 향상
단점
생산성 저하
같은 유형의 작업들이 모이기를 기다려야 함
긴 응답시간
시분할 시스템 (Time-Sharing System)
여러 사용자가 자원을 동시에 사용
OS가 파일 시스템 및 가상 메모리 관리
사용자 지향적
대화형(interactive) 시스템
단말기 사용
장점
응답시간 단축
생산성 향상
단점
통신 비용 증가
통신선 비용, 보안 문제 등
개인 사용자 체감 속도 저하
분산처리 시스템 (Distributed Processing System)
네트워크를 기반으로 구축된 병렬처리 시스템
물리적인 분산, 통신망을 이용한 상호 연결
각각 운영체제에 탑재한 다수의 범용 시스템으로 구성
사용자는 분산운영체제를 통해 하나의 프로그램, 자원처럼 사용 가능
각 구성 요소들간의 독립성유지, 공동작업 가능
Cluster System, Client-Server System, P2P 등
장점
자원 공유를 통한 높은 성능
고신뢰성, 높은 확장성
단점
구축 및 관리가 어려움
실시간 시스템 (Real-Time System)
작업 처리에 대한 시간(deadline)을 갖는 시스템
제한 시간 내에 서비스를 제공하는 것이 자원 활용 효율보다 중요
작업(Task) 종류
Hard real-time task
시간 제약을 지키지 못하는 경우 시스템에 치명적 영향
예) 발전소 제어, 무기 제어 등
Soft real-time task
예) 동영상 재생 등
Non real-time task
커널
프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것, 자동차가 운영체제라고하면 엔진이 커널에 해당한다.
인터페이스
커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할, 자동차 핸들, 브레이크 등이 인터페이스에 비유된다.
시스템 호출
커널이 자신을 보호하기 위해 만든 인터페이스이다.
커널은 사용자나 응용 프로그램으로부터 컴퓨터 자원을 보호하기 위해 자원에 직접 접근하는 것을 차단한다.
따라서 자원을 이용하기 위해서는 시스템 호출이라는 인터페이스를 사용하여 접근해야 한다.
예) printf함수는 사용자가 시스템의 특정 위치에 문자를 출력할 수 있게 하는 시스템 호출이다.
드라이버
응용 프로그램과 커널의 인터페이스가 시스템 호출이라면 커널과 하드웨어의 인터페이스는 드라이버가 담당한다.
단일형 구조 커널
커널의 핵심 기능을 구현하는 모듈들이 구분 없이 하나로 구성되어 있는 커널 구조
장점
모듈이 거의 분리되지 않았기 때문에 모듈 간의 통신 비용이 줄어들어 효율적인 운영 가능
단점
모든 모듈이 하나로 묶여 있기 때문에 버그나 오류 처리가 어렵다.
운영체제의 여러 기능이 서로 연결되어 있어 상호 의존성이 높기 때문에 기능상 작은 결함이 시스템 전체 성능 문제를 야기한다.
수정이 불가능하기 때문에 다양한 환경 시스템에 적용이 어렵다.
계층형 구조 커널
비슷한 기능을 가진 모듈을 묶어서 하나의 계층으로 만든다.
장점
모듈화를 했기 때문에 계층간 검증 및 수정이 용이하다.
단점
원하는 기능 수행을 위해 여러 계층을 거쳐야한다.
마이크로 구조 커널
프로세스관리, 메모리관리, 프로세스간 통신관리 등 가장 기본적인 기능만 제공하고 각 모듈은 독립적으로 작동한다.
프로세스 관리
프로세서 관리
메모리 관리
파일 관리
입출력 관리
보조 기억 장치 및 기타 주변장치 관리 등
[출처] https://drive.google.com/file/d/1X7v7BeA-JjAh7YD-kzEcL76GyBV93H0e/view