운영체제가 없어도 컴퓨터 하드웨어는 사용이 가능하다. 다만, 운영체제는 컴퓨터의 사용을 용이하게 해주는 역할을 한다.
1. 운영체제 서비스
: 프로그래머와 사용자들에게 편리한 서비스 제공
: 자원관리의 효율성을 위한 서비스
2. 운영체제의 구성요소
: 인터페이스 / 자원관리 / 자체관리기능
- 인터페이스
: 명령어 해석기 시스템
- 자원관리 -> 전통적 의미의 운영체제
: 프로세스
: 메모리, 보조 기억 장치
: 입출력, 파일, 네트워크
-자체관리
: 부팅 및 초기화
: 시스템 생성 및 튜닝
3. 사용자 인터페이스
명령 라인 해석기(Command Line Interpreter) : Shell
Graphic User Interface
시스템 호출
: 프로세스와 운영체제 간의 인터페이스(API)
- 프로그램에서 명령 또는 서브 루틴의 호출 형태로 실행한다.
- 시스템에서 명령 해석기를 통해 대화 형태로 호출한다.
4. 자체 관리
- 부트스트래핑(부팅)
: 운영체제에서 자기 자신을 적재하는 과정
1) 부트스트랩 로더
: 전원 입력시 ROM에 있는 작은 로더가 실행된다.
: 로더는 디스크에 있는 부트스트랩 로더를 메모리에 적재하고 실행시킨다.
: 운영체제를 적재하고 초기화시킨다.
2) 운영체제의 초기화
: 시스템 장치의 초기화
: 명령어 해석기 등을 적재하여 실행시킨다.
4. 운영체제 구조
1) 단순 구조
: 모듈로 분할되지 않는다.
: 수행효율은 높으나 기능 추가 및 유지 보수에 어려움이 있다.
: MS-DOS, 초기의 UNIX
2) 계층 구조
- 모듈성
: 하나의 프로그램을 서로 영향받지 않는 부분들로 분리한다.
: 시스템 오류 제거와 검증에 용이하다.
- 계층 기법(Layer)
: 운영체제를 여러 계층으로 나눈다.
: 각 계층은 하위 계층에서 제공되는 기능과 서비스만을 사용한다.
- 계층 구조의 어려움
: 계층의 정의 또는 결정
: 계층 정의에 위배되는 경우가 자주 발생한다.
3) 마이크로커널 구조
: 커널로부터 많은 기능을 제거하고 "사용자"공간으로 이전
: 커널은 최소한의 프로세스 및 메모리 관리와 통신 기능을 담당한다.
MACH, QNX, Windows NT
[ 장점 ]
- 운영체제 확장의 용이성
- 운영체제를 새로운 하드웨어로 포맷하기가 쉽다.
- 보안과 신뢰성
4) 가상 기계(Virtual Machine)
: 하드웨어와 운영체제 커널을 모두 하드웨어처럼 취급한다.
: 각 프로세스는 실제 컴퓨터의 사본을 제공함으로써 마치 실제 컴퓨터를 사용하는 것과 같은 환경을 제공한다.
-> 조금 더 진화된 것이 "도커"
- 자바 가상 기계(JVM)
5. 운영체제의 발전 과정
1970년대 UNIX 개발
1980년대 개인용 컴퓨터를 위한 운영체제의 발전
1) 일괄처리 시스템(Batch System)
: 유사한 작업들을 묶어서 순차적으로 처리한다.
- 상주 모니터
: 메모리에 상주하여 CPU 등 자원의 비효율적 사용을 해결한다.
: 입출력 관리 또는 인터럽트 처리 루틴들의 집합
- 제어 카드
: 상주 모니터의 프로그램 수행을 지시한다.
- 오프라인 처리
: 위성 컴퓨터, 테이프, 카드, 프린트, 장치 독립성 보장
2) 다중 프로그래밍
: 동시에 실행 상태에 있는 프로세스가 여러 개
-> 자원의 공유가 필요하다. (CPU, 메모리, 주변장치 등)
3) 시분할 시스템(Time Sharing) = 대화형 처리 시스템
: 시간을 나누어서 처리한다.
-> 다중 프로그래밍을 통해 각 사용자가 컴퓨터를 분할하여 사용
-> 메모리와 디스크 사이에 교체 필요
대화형 처리 시스템 vs 일괄 처리 시스템
- 일괄 처리 시스템
: 한 사용자가 주문을 끝까지 받고, 그 다음 사람이 순서대로
: 작업을 준비하여 제출하면 일정 시간 내 결과가 나온다 .
: 반환 시간이 길다. 대화가 거의 필요없는 대형 작업에 적합하다.
- 대화형 처리 시스템
: 여러 사용자를 이 사람, 저 사람 번갈아가며 동시에
: 사용자와 시스템 간에 온라인 통신 마련
: 사용자가 컴퓨터에 직접 명령을 주고 응답을 받는다.
4) 입출력 버퍼링
: 입출력 데이터를 버퍼에 미리 담아오는 것
: 입출력장치와 CPU의 속도 차이를 해소시킨다.
: 한 작업의 계산과 함께 입출력을 동시에 수행한다.
: 버퍼를 사용하여 문자나 데이터를 미리 읽어온 후, 필요할 때마다 사용하게 하면 효율적이다.
5) 스풀링
: 버퍼를 하드디스크로
: 디스크의 일부 공간을 스풀 공간이라고 부르는 매우 큰 버퍼처럼 사용한다.
: 입출력장치와 CPU의 속도 차이 해소해준다.
- 다중 프로그래밍 환경에서 스풀링을 사용한다.
: 다수의 프로세스들이 동시에 입출력을 요구하거나 입출력 장치 수에 제한이 있기 때문에 스풀링을 사용한다.
: 다수의 프로세스에게 각각 독립적인 입출력 장치를 제공한다.
6) 병렬 시스템 = 다중 처리기
: 고만고만한 CPU가 여러개 있는 시스템
<장점>
- 처리율 증가
- 다양한 주변 장치 공유
- 신뢰성 향상
<단점>
- 프로그래밍 작성이 어려움
7) 분산 시스템
: CPU와 메모리가 각각 별도로 존재 (병렬 시스템은 CPU만 여러개이고, 메모리와 입출력장치는 하나이다)
: 느슨하게 결합
<장점> 자원공유, 계산의 신속화, 신뢰성, 통신
8) 실시간 시스템
: 실행 완료 데드라인이 있다.
-> 특수 목적 시스템에 이용 (공정 제어, 의료 영상, 자동차 엔진 제어)
- 경성 실시간 시스템 : 데드라인 반드시 만족
ex) 항공 제어
- 연성 실시간 시스템 : 데드라인 일정 수준 이상 만족
ex) 멀티미디어 서비스
'Computer Science > Operating System' 카테고리의 다른 글
이론 5) 교착 상태 2 (0) | 2020.12.02 |
---|---|
이론 5) 교착 상태 (0) | 2020.12.02 |
실습 4) gcc 컴파일 및 모듈 프로그램 (0) | 2020.10.22 |
실습 3) vi편집기 사용법 (0) | 2020.10.22 |
실습 2) 리눅스 기본 명령어 정리 (0) | 2020.10.21 |