운영체제의 정의
좁은 의미의 운영체제
일반적으로 커널만을 의미, 전공자가 말하는 운영체제는 보통 좁은 의미의 운영체제
넓은 의미의 운영체제
커널뿐만 아닌 여러 주변 시스템을 다루는 시스템 유틸리티까지도 포함한 개념
ex) 윈도우를 설치하면 커널만 설치되는게 아니라 다른 부가적인 시스템이 설치됨
이렇게 항상 메모리에 상주하지는 않지만 최소로 필요한 유틸리티를 포함하는 개념
운영체제가 하는 일
컴퓨터 시스템 사용환경 편의 제공
- 서로 다른 시스템을 동시에 실행할 수 있도록 해줌 (메모리 관리, 프로그램 충돌 조율)
- 하드웨어 자원을 어떻게 분배해서 쓰는지 사용자가 몰라도 이용할 수 있게 해줌
자원의 효율적 관리
- 운영체제의 목표 : 주어진 자원으로 최대한의 성능을 내는 것
- 하드웨어를 효율적으로 관리해줌
- CPU, 메모리, I/O 장치 등을 효율적으로 관리
- 효율성만 강조하면 특정 프로그램 혹은 특정 사용자가 차별받는 상황이 생길 수도 있음. 이를 고려하여 형평성 있는 자원 분배 또한 중요
- 프로세스, 파일, 메시지와 같은 소프트웨어 자원도 관리함
사용자나 운영체제 자신의 보호
운영 체제의 분류
동시 작업 가능 여부
-
단일 작업 (ex. MS-DOS)
특수한 경우를 제외하곤 현대에 와서는 거의 쓰지 않음. 설계하기 쉽다는 장점이 있음
-
다중 작업
UNIX, MS Windows 등의 환경
사용자의 수
-
단일 사용자만 지원
MS-DOS, MS Windows는 기본적으로 단일 사용자만 지원
(Personal Computer에서도 계정을 여러개 만들 수 있어서 경계가 모호해짐)
-
다중 사용자도 지원
UNIX, NT server, Linux server 등에서는 여러 계정이 동시에 접근하는 것을 지원
처리 방식
일괄 처리
현재는 사용하지 않는 방식
작업을 요청하면 일정량의 작업을 모아 한꺼번에 처리해주는 처리 방식.
interactive하지 않았기 때문에 오류 없는 정확한 프로그래밍이 중요했었음
시분할
각각의 사용자는 매우 짧은 응답시간을 통해 전달되는 정보를 통해 interactive한 환경을 제공받음.
다만 시간의 제약조건(데드라인)이 없기에 사용자가 많아지면 느려지기도 함
주어진 자원을 최대한 활용하는 것이 목적
실시간
정해진 시간안에 일이 반드시 종료됨
미사일 제어, 반도체 공장 제어 등 미세한 시간차도 유의미한 상황에서 사용됨
Soft realtime system
실시간 시스템 개념의 확장
데드라인을 정확히 지키지 않아도 됨
유사한 용어 정리
Multitasking
일반적으로 사용되는 용어
컴퓨터에는 여러 task가 돌아가고 있지만 CPU에서는 매 순간 하나의 작업만이 실행되고 있음
매우 짧은 시간 간격에 하나의 작업을 할당하는 행동을 반복하여 동시에 실행되는 것처럼 보이게 해줌
Multiprogramming
메모리에 여러 프로그램이 동시에 올라가는 방식
Time sharing
시간을 분할해서 쓰는 방식 (CPU를 강조한 용어)
Multiprocess
실행중인 프로그램이 동시에 실행된다는 의미의 용어
❗️주의할 용어 : Multiprocessor
CPU가 여러개 있는 컴퓨터를 의미
한 순간에 여러 작업이 실행될 수 있음 (CPU가 여러개이기 때문)
위 4개의 용어와는 하드웨어적으로 다른 시스템! (고성능 컴퓨팅에서 사용됨)
운영 체제의 예
유닉스
-
Multitasking 지원
-
유닉스를 만들기 위해 C가 탄생
-
초창기에는 오픈 소스였음 (유닉스에서 파생된 리눅스는 현재도 오픈소스)
-
특정 컴퓨터의 기계어에만 국한되게 만들지 않고 C로 만들어졌기에 이식성과 확장성이 좋음
-
커널의 크기를 최소한으로 만들어 메모리를 최대한 적게 사용
윈도우
- Personal Computer을 위해 만들어짐
- 단일 사용자, 단일 작업만 지원하는 DOS에서 시작됨
- DOS의 경우 하드웨어의 발전속도를 예측하지 못하고 만들어져서 현재는 버려짐
- 현재는 DOS 위에서 윈도우즈를 실행하는 환경에서 벗어나 윈도우즈가 독자적인 운영체제가 되었음
운영 체제의 구조
CPU 스케쥴링
- CPU는 매우 빠른 장치
- 우선 요청순 처리방식이 아닌 task간의 시간 차이를 완충하면서 주어진 자원의 특성을 최대한 끌어올리는 방식
- 어떻게하면 매우 빠른 CPU의 성능을 최대한으로 끌어올릴 수 있을까? 를 해결해주는 것이 CPU 스케쥴링
디스크 스케쥴링
- 디스크 헤드자체가 움직이면서 일을 처리해야 함
- 어떻게하면 디스크 헤드의 움직임을 최소화 할 수 있을지가 관건
I/O device의 관리
- 장치가 CPU에 비해 매우 느리기 때문에 CPU와의 정보교환을 어떻게 할지가 관건
- interrupt 방식에 기반하여 관리하고 있음