일종의 소프트웨어(컴퓨터 하드웨어 윗단에 설치됨)
컴퓨터 하드웨어와 각종 소프트웨어, 사용자를 연결해주는 계층
좁은 의미의 운영체제(커널)
운영체제의 핵심 부분. 메모리에 상주하는 부분
넓은 의미의 운영체제
커널 뿐 아니라 각종 주변 시스템 유틸리티(윈도우즈의 파일복사 프로그램 등. 메모리에 상주하지 않는 독립적인 프로그램들까지)를 포함한 개념
운영체제의 목적
운영체제는 컴퓨터 하드웨어 위, 각종 소프트웨어와 사용자 아래에 위치하므로 다음과 같은 목적을 가진다.
-
컴퓨터 시스템의 자원(CPU, 기억장치, 입출력 장치 등)을 효율적으로 관리
- 주어진 자원으로 최대한의 성능을 내도록
- 사용자간 형평성 있는 자원 분배
- 하드웨어 자원: CPU, 메모리 I/O 장치 등
- 소프트웨어 자원: 프로세스, 파일, 메시지 등(하드웨어 자원뿐이나라 소프트웨어 자원도 운영체제가 관리)
- 사용자 및 운영체제 자신 보호
-
사용자가 컴퓨터를 편리하게 사용할 수 있는 환경 제공
- 동시 사용자/프로그램들이 각각 독자적인 컴퓨터에서 수행되는 것 같은 효과를 느끼게 함(CPU나 메모리 할당 등을 운영체제가 잘 조율했기에)
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행(사용자는 이에 대해 자세히 알지 못함)
운영 체제의 분류
동시 작업 가능 여부
- 단일 작업: 한 번에 하나의 작업만 처리(MS-DOS 프롬프트 상에서는 한 명령의 수행을 끝내기 전까지는 다른 명령 수행 불가, 옛날 휴대폰(피쳐폰?), 특수 목적만 수행하는 운영체제 같은 것)
- 다중 작업: 동시에 두 개 이상의 작업 처리(UNIX, MS Windows, Smart Phone에서 실행되는 OS 등)
사용자의 수(컴퓨터 한대를 여러 사용자가 동시에 접속해서 사용 가능한가)
- 단일 사용자: MS-DOS, MS Windows(원격 서버 기능을 추가한다면 가능. 계정은 여러개 만들 수 있음(다만 동시 접근은 기본적으로 불가))
- 다중 사용자: UNIX, NT server
처리 방식
- 일괄 처리(Batch Processing): 작업 요청의 일정량을 모아서 한꺼번에 처리(작업 종료시까지 기다려야 함)
- ex) Punch Card 처리 시스템(OMR 같은 형식. 구멍을 뚫은 도큐먼트들을 한꺼번에 모아서 컴퓨터에 입력)
- 시분할(Time Sharing): 여러 작업을 수행할 때 컴퓨터 처리 능력을 일정 시간 단위로 분할하여 사용(일괄 처리 시스템에 비해 응답 시간 짧음.). interactive한 방식(입력 결과가 바로바로 나옴. 응답시간이 사용자의 수에 따라 달라질 수는 있음). 일반적인 시스템
- 실시간(Real Time OS): 정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장. 특수한 목적을 가진 시스템에서 사용
- ex) 원자로/공장 제어, 미사일 제어, 반도체 장비(삼성 정전 사태. 정전이 나면 공정에 들어간 반도체는 다 버리고 처음부터 다시 시작), 로보트 제어
- 실시간 시스템의 개념 확장
- Hard realtime system: Deadline이 지켜지지 않으면 문제가 생김(반도체 장비 등)
- Soft realtime system: Deadline이 지켜지지 않아도 큰 문제가 생기지 않음(멀티미디어 재생 등. 비디오 인코딩이 제대로 되지 않아 영상이 끊겨도 기분만 나쁘지 크게 문제가 생기지는 않음. 실제 멀티미디어 재생 프로그램은 시분할 OS에서 동작하기에 예시만 보면 됨)
운영체제의 예
-
유닉스(UNIX): 대형 컴퓨터를 위해 만들어진 OS. 멀티 태스킹 가능. 여러 사용자 지원. UNIX를 만들때 사용하는 프로그래밍 언어(C언어) 개발. 소스코드 공개. 높은 이식성(하나의 컴퓨터에서 다른 컴퓨터(기계어 집합이 다른)로 이식 용이. C언어라는 기계어와 독립적인 언어로 개발되었기 때문). 커널의 크기 최소화(많은 기능을 커널에 넣게되면, OS가 메모리를 많이 차지하기때문에 핵심 기능만 넣어놓음)-> 확장성 높음
=> System V, FreeBSD, SunOS, Solaris, Linux(Linux만 오픈소스. 개인용 컴퓨터에서 쓰기에도 좋음. 안드로이드의 커널은 Linux 커널 사용)가 파생됨
-
DOS: MS사에서 개발. 단일 사용자용 운영체제. 메모리 한정(640KB)
-
MS Windows: 개인용 컴퓨터를 위해 만들어진 OS. 멀티 태스킹 용 GUI 기반 운영체제. DOS용 응용프로그램과 호환. 네트워크 환경 강화. 지원 소프트웨어 풍부
운영체제의 구조
- CPU: 어떤 프로그램한테 CPU를 할당할 것인가(CPU 스케줄링. 효율적으로 줬다 뺏었다. 너무 빠르기에 어떻게 이를 관리할까)
- Memory: 한정된 메모리를 어떻게 나눠서 쓸까(메모리 관리. 어떤거에 할당해주고, 어떤거를 쫓아낼까)
- Disk: 디스크에 파일을 어떻게 보관할까(파일 관리. 조각으로 나눌지, 연속적으로 나눌지. 헤드가 움직이면서 데이터를 읽어내는 디스크의 특성 생각. 엘리베이터와 비슷. 어떻게 하면 헤드의 움직임을 최소화하면서 많은 요청을 빨리 처리할까)
- I/O Device: 각기 다른 입출력 장치와 컴퓨터 간 어떻게 정보를 주고받나(입출력 관리. CPU에 비해 느리기에 CPU와 어떻게 정보를 주고 받을까. 인터럽트 기반 관리. I/O 장치가 인터럽트를 요청하고, CPU가 인터럽트 체킹)
- 프로세스의 생성과 삭제, 자원 할당 및 반환, 프로세스 간 협력
- 보호시스템(운영체제 자체 보호, 다른 프로그램 간 보호), 네트워킹, 명령어해석기(커맨드 명령어 입력하면 해석하여 실행)
헷갈리는 용어들
- Multitasking: 하나의 프로그램이 끝나기 전에 다른 프로그램 실행 가능
- Multiprogramming: 메모리에 여러 프로그램이 동시에 올라감
- Time sharing: CPU의 시간을 분할하여 나누어 쓴다
- Multiprocess
컴퓨터에서 여러 작업을 동시에 수행한다는 의미를 가지지만 강조의 포인트가 약간씩 다름(CPU가 하나만 있어도 됨. OS에서는 기본적으로 1개의 CPU를 가진 시스템을 기반으로 설명)
- Multiprocessor: 하나의 컴퓨터에 여러 CPU가 붙어있음
참고
https://core.ewha.ac.kr/publicview/C0101020140307151724641842?vmode=f