Operating System
: 일반 컴퓨터나 노트북의 전원을 켜면 가장 먼저 만나게 되는 소프트웨어
(컴퓨터 HW 바로 윗단에 설치되는 SW)
정의
: 사용자에게 편리한 인터페이스를 제공하고 컴퓨터 시스템의 자원을 효율적으로 관리하는 소프트웨어
Cpu의 성능이 낮고, 메모리 크기도 작은 시스템에 내장하도록 만든 운영체제를 (임베디드 시스템 혹은, 임베디드 운영체제)라고 한다.
⇒ 크게 프로그램의 성능 향상, 자원관리
[질문]
1) 컴퓨터는 운영체제가 없어도 작동할까? (YES)
* 프로그램이 가능하면 컴퓨터라고 한다 (ex - 애니악)
2) OS가 있는 기계와 없는 기계와의 차이는?
* OS 없는 기계
1. 만들 당시 구현한 기능만을 수행
2. 다른 기능의 추가, 성능 향상을 할 수 없다.
3. 정해진 계산만이 가능한 기계
3) 운영체제는 성능을 향상하는 데에만 필요한가? (NO - 자원관리)
* 운영체제는 성능향상뿐만 아니라 "자원관리"도 한다.
4) 운영체제는 자원을 어떻게 관리하는가
* OS는 사용자가 직접 자원에 접근하는것을 막는다.
⇒ 자원보호, 관리
⇒ 4가지, (자원 관리, 보호, 하드웨어 인터페이스 제공, 사용자 인터페이스 제공)
1) 자원 관리
2) 자원 보호
3) 하드웨어 인터페이스 제공 (드라이버)
4) 사용자 인터페이스 제공 (CLI, GUI)
<3가지로 분류>
동시 작업 지원
다중 사용자의 동시 지원 여부
작업을 처리하는 방식
[ 운영체체의 역사순 나열 ]
1) 일괄처리 시스템 (작업 처리)
2) 대화형 시스템 (동시 작업)
⇒ 작업시간의 예측이 어려움
3) 실시간 시스템(작업 처리)
실시간 OS는 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야하는 시스템
ex) 원자력, 미사일 제어
경성 실시간 시스템 (Hard Realtime System)
:주어진 시간을 지키지 못할 경우 매우 위험한 결과를 초래할 가능성이 있는 시스템
ex) 로켓, 원자로 제어 시스템 등
연성 실시간 시스템 (Soft Realtime System)
: 멀티미디어 스트리밍 시스템과 같이 데이터가 시간을 맞추어 전달되어야 올바른 기능을 수행할 수 있는 시스템
ex) 동영상 재생이 끊기거나 정확히 전달되지 않을 경우
4) 시분할 시스템(작업 처리)
5) 다중 사용자 시스템(동시 지원)
한 사람이 여러프로그램을 동시에 실행할 수 있으면(시분할)
하나의 컴퓨터에서 여러사람이 동시에 작업할 수 있다.
즉, 다중 사용자 시스템이란 1대의 컴퓨터로 여러사람이 동시에 작업하는 것
6) 분산 시스템
값이싸고 크기가 작은 여러 컴퓨터들을 하나로 묶어 대형 컴퓨터에 버금가게 하는 것 (개인용 컴퓨터의 보금으로 인해 가능해짐)
네트워크 상에 분산되어 있는 여러 컴퓨터로 작업을 처리하고 그 결과를 상호 교환하도록 구성한 시스템
7) 클라이언트/ 서버 시스템
분산 시스템은 모든 컴퓨터가 동등한 위치에 있기 때문에, 결과를 처리하는 컴퓨터에 문제 발생시 결과 모으기가 힘듬( 구심점이 없기 때문에)
클라언트(요청) / 서버(응답) -> 2중 구조로 단점 커버
ex) 웹 서버 시스템
데몬(demon) - 백그라운드에서 작업을 처리해주는 서비스
: 클라언트/ 서버 시스템에서는 서버가 멈추지 않고 계속 작동하여 요청을 처리해야한다.
이러한 시스템을 데몬이라고 함
ex) 아파치 톰캣
8) P2P 시스템
서버의 부하를 줄이기 위한 시스템
서버가 파일 검색만을 맡고 사용자와 사용자간에 연결
서버의 부하가 현저히 줄어든다.
음악, 동영상등 서버에 올리는 파일의 크기가 점점 커짐으로써 서버가 가지는 부담을 해소하기 위한 시스템
ex) 소리바다, 메신저, 파일공유(토렌트)
1) 커널
프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것
=> 운영체제는 크게 두 부분으로 나뉜다( 인터페이스, 커널)
인터페이스 : 사용자와 응요프로그램에 인접하여 커널에 명령어를 전달하고 실행결과를 돌려준다.
커널 : 운영체제의 핵심기능을 모아놓은 공간
2) 시스템 호출(커널)
(즉, 응용프로그램이 하드웨어 자원에 접근하거나 운영체제가 제공하는 서비스를 이요하려 할 때는 시스템 호출을 이용하여야 한다.)
3) 드라이버
커널과, 하드웨어 사이의 인터페이스
하드웨어 특헝을 반영한 소프트웨어를 하드웨어 제작에게 받아 커널이 실행될 때 함께 실행되도록 하는 것이다.
하드웨어는 커널에서 "직접" 연결되기도 하고, "드라이버"를 통해 연결되기도 한다.
1) 커널이 하는 일
2) 커널의 분류
장점
: 모듈이 거의 분리되어 있지 않아 통신비용 적음
단점
가. 버그나 오류처리 히듬
나. 상호 의존성이 높음