운영체제의 전체적인 내용을 간략히 정리합니다.
운영체제의 개요, 기능, 분류, 예, 자원관리 기능에 대해서 알아봅니다.
운영체제의 정의
운영체제란 하드웨어 바로 윗단에 설치되는 소프트웨어
- 영문 명칭은
Operating System
- 소프트웨어가 어떻게 System 이라고 불릴 수 있을까?
- 컴퓨터는 운영체제가 없다면 고철덩어리에 불과하다.
- 컴퓨터를 돌리기 위한 최소한의 소프트웨어
운영체제도 소프트웨어
- 전원이 켜진후 메모리에 올라간다.
- 항상 메모리에 상주하는 필수적인 부분을
Kernel
(뜻 : 핵심) 이라고 한다. Kernel
은 컴퓨터가 꺼지기 전까지 메모리에 올라가 있다.Kernel
보다 더 빠른 실행이 필요하다면?- 칩인 ROM에 올라가는
Firmware
를 이용한다.
- 칩인 ROM에 올라가는
운영체제의 기능
환경 제공
사용자에게 컴퓨터 시스템을 편리하게 사용할 수 있는 환경 제공
- 사용자는 파일이 어떻게 저장되는지 모른다
- 운영체제가
인터페이스
를 제공하고, 사용자가 파일을 손쉽게 저장, 관리 할 수 있다. 인터페이스
: 사용자가 기기를 쉽게 동작 시키는데 도움을 주는 시스템
- 운영체제가
자원관리
시스템 내의 자원을 효율적으로 관리
- OS의 핵심적 기능
- OS는 자원관리자 (resource manager) 라고도 불린다.
- 한정된 자원 (
cpu
,메모리
,소프트웨어 자원
) 을 관리한다.- 효율적으로 분배한다.
- 형평성을 고려해서 분배한다.
네트워킹
네트워크 프로토콜을 지원하여 인터넷 연결을 하게 도와줌.
- 운영체제에서 프로토콜을 지원하여야 응용 프로그램이 네트워크에 접근할 수 있음.
시스템 보호
OS 자신과 사용자를 보호
- 악의적인 프로그램이 다른 프로그램이 영향을 주지 않게함.
- HOW : 메모리 접근 제한 등등..
운영체제의 분류
단일 작업 (single tasking)
한개의 프로그램만 처리
- DOS 환경
- 하나의 프로그램이 동작하는 동안 다른 프로그램이 사용 불가능
다중 작업 (multi tasking)
두개 이상의 프로그램을 처리
- 현대 OS의 대부분.
- CPU가
시분할 시스템
을 이용하여, 여러 프로그램을 동시에 동작하는것처럼 보여줌시분할 시스템
: CPU의 작업 시간을 여러 프로그램이 나누어 씀.시분할 방식
: 컴퓨터의 처리능력을 일정한 시간 단위로 분할해 사용함.
다중 프로그래밍 (multi programming)
여러 프로그램이 동시에 메모리에 올라가는것
- 메모리를 분할하여, 여러 프로그램을 메모리에 올려놓고 처리하는것.
다중 처리기 (multi processor)
CPU가 여러개 있는것
- 처리가 빠르다
- CPU관리 매커니즘이 복잡해 진다.
일괄처리 (Batch processing)
작업 요청의 일정량을 한번에 처리
- 작업이 종료되어야 결과를 얻는다
- 응답시간이 매우 길다.
실시간 (Realtime)
정해진 시간내에 반드시 종료되어야 하는 시스템에서 사용
Hardtime
지키지 못하면 위험한 결과
- 로켓, 원자로 시스템
Softtime
시간내 전송되어야 올바른 기능 수행
- 동영상 스트리밍
운영체제의 예
MS, Unix
MS
편리한 인터페이스
- 사용자가 이용하기 용이함
Plug & Play
지원- 새로운 하드웨어를 장착하면 설정을 자동으로 해줌.
Unix
프로그램 개발 환경을 위해 설계된 운영체제
- 커널이 아주 작음
- 이식성이 높음
이식성
: 다른 기종의 기계로 옮길때 소요되는 노력- 커널이 작은것과 연관성이 있음.
- C언어로 제작되어짐
- 오픈 소스.
운영체제의 자원관리 기능
운영체제의 핵심적 기능은 효율적인 자원 관리
CPU 관리
FCFS (First Come First served)
먼저 들어온 작업을 처리함
- 줄서기
RR (Round Robin)
CPU 사용 시간을 고정적으로 두고 제한함
FCFS
의 단점 보완- 너무 오래걸리는 상황을 해결하기 위해 등장한 기법
Priority
우선순위 맞춰 진행
- 우선순위가 낮은 프로세스가 무한정하게 밀리지 않게
- 우선순위를 높이는
aging
기법을 사용.
- 우선순위를 높이는
메모리 관리
Fixed Partition
메모리를 고정된 크기로 분할함
- 메모리 크기 보다 큰 프로그램 적재 불가능
- 최대 프로그램의 수는 분할된 개수의 크기만큼으로 제한
- 내부 단편화 발생
Variable Partition
메모리를 프로그램의 크기에 맞춰 분할
- 메모리 크기 보다 큰 프로그램 적재 불가능
- 메모리를 관리하는 기술적 관리 기법이 추가적으로 필요함
- 외부 단편화 발생
Virtual memory
프로그램마다 가상의 메모리를 제공
- 메모리 크기 보다 큰 프로그램 적재 가능
- HOW : 현재 사용되는 부분만 메모리에 적재
- 프로그램의 모든 부분이 메모리에 올라갈 필요가 없음.
- 일정한 크기로 자르고
paging 기법
, 보조기억 장치swap 영역
에 사용되지 않는 부분을 내려둠
- 가상의 메모리는 물리적 메모리와 서로 매핑되어있음.
- 주소 변환을 통해 물리적 메모리에 접근함.
- 프로그램은 물리적 메모리를 혼자 다 쓰는것처럼 보고 있음.
- 즉 가상메모리의 크기에 의해 프로그램이 실행 가능한 프로그램의 크기가 결정 되어짐.
주변, 입출력 장치 관리
interrupt 이용
iterrupt
: 주변장치가 CPU의 서비스가 필요할때 서비스를 요청하는 신호.- 인터럽트가 발생하면, 이전의 정보를 다른곳에 저장시키고, 인터럽트 요청을 처리하러감.
- WHY 왜 이것이 필요한가?
polling
: 일이 끝났는지 계속 확인하는 방식- CPU의 자원낭비. 필요할때만 서비스를 요청하자.
- 주변장치들은 각자 작은 CPU인
controller
를 가지고 있음 - 이것을 이용해 CPU에게 인터럽트를 신호를 발생시킴.
- CPU가 필요할때, CPU가 시킨 작업을 완료했을때