운영체제
- 컴퓨터 하드웨어 바로 위에 설치되는 소프트웨어 계층으로, 사용자와 다른 소프트웨어를 하드웨어와 연결해준다.
- 좁은 의미 : 커널 - 운영체제의 핵심 부분으로 메모리에 상주하는 부분.
- 넓은 의미 : 커널 + 각종 주변 시스템 유틸리티
- 🦕 운영체제 = 커널 + (미들웨어) + 시스템 프로그램
- 🦕 OS가 아닌 것 : 응용 프로그램
목적
- 사용자가 HW 를 몰라도 편리하게 접근할 수 있는 환경을 제공하고
- 컴퓨터 시스템의 자원(CPU, RAM, I/O ...)을 효율적(최대한의 성능을 내면서 특정 사용자나 프로그램에 불평등이 발생하지 않도록)으로 관리한다.
ex) 실행중인 프로그램에 CPU 를 번갈아 할당 / 메모리 공간을 적절히 분배
분류 기준
동시 작업 가능 여부
- 단일 작업 (single tasking)
- 한번에 하나의 작업만 처리
ex) MS-DOS
- 다중 작업 (multi tasking)
- 동시에 두개 이상의 작업 처리
-> CPU를 누구에게 줄지 고민 필요.
- 현대의 OS 는 모두 가능하다. Windows, UNIX, Mac OS ...
🦕 컴퓨터 시스템 구조
- 코어 : 명령을 실행하고 로컬로 데이터를 저장하기 위한 레지스터를 포함하는 구성 요소
1. 단일 처리기
- 단일 처리 코어를 가진 하나의 CPU 사용
- 장치별 프로세서를 따로 사용한다.
ex) 디스크 스케쥴링은 디스크 컨트롤러 마이크로 프로세스가 담당
2. 다중 처리기 MultiProcessor
- 단일 코어 CPU 가 있는 두 개 이상의 프로세서를 사용
- 처리량이 올라간다! (오버헤드로 인해 프로세스 개수와 성능이 정비례 하는 것은 아님)
- SMP (Symmetric Multiprocessing)
- 독립적인 레지스터와 캐시를 가지고, 메모리를 공유하는 시스템.
- 많은 프로세스를 동시에 실행할 수 있으나 각 프로세서가 독립적이라 하나는 노는데 하나는 과부하가 걸릴 수 있음.
- 자원을 여러 프로세서에 동적으로 공유할 수 있고, 프로세서 간 작업 부하가 덜걸림
- 같은 프로세스 칩에 코어 여러개
- N개의 코어는 N개의 CPU 처럼 보인다.
- 코어를 효율적으로 사용할 수 있게 프로그램을 개발해야함.
- CPU 를 추가하면 성능이 좋아하긴 하는데, 시스템 버스에 대한 경합 현상이 일어날 수 있음.
많은 시스템에서 다중 코어 SMP 를 사용한다
- NUMA (Non-Uniform Memory Access)
- 각 CPU 에게 독립적인 메모리 공간을 제공.
- 모든 CPU가 공유 시스템으로 연결되어서 모든 CPU 가 하나의 물리적인 주소 공간을 공유한다.
- 연결을 통해 원격 메모리에 접근할 때, 성능이 떨어질 수 있다.
- 블레이드 서버
- 다수의 처리기 보드, I/O 보드, 네트워킹 보드를 하나의 섀시 안에 장착한 시스템이다.
- 여러 독립적인 멀티 프로세서 시스템으로 구성된다.
3. 클러스터형 시스템
- 여러개의 CPU
- 여러 독립적인 시스템이나 노드를 연결해서 구성한다.
- 노드들은 저장장치를 공유하고, LAN 이나 고속 상호 연결망으로 연결된다.
높은 가용성 을 가진다.
- 하나의 노드가 망가져도 다른 노드가 해당 작업을 수행하게 됨. (결함 허용)
- 남아있는 하드웨어의 성능에 따라 작업을 수행. (graceful degradation)
- 비대칭형 클러스터링
- 다른 컴퓨터가 응용 프로그램을 수행하는 동안, 하나의 컴퓨터가 긴급 대기 모드로 활성 서버를 감시하다가 서버가 고장나면 본인이 활성 서버가 되어서 작업을 이어 수행한다.
- 대칭형 클러스터링
- 둘 이상의 호스트가 응용 프로그램을 실행하고 서로를 감시한다.
- 고장나면 한쪽이 나머지 작업을 이어서 수행.
- 여러 개의 응용 프로그램이 실행되는 환경에서 효율적.
고성능 계산 환경에 사용한다.
- 병렬화 기법을 이용함.
- 문제를 여러개로 쪼개서 각 프로세서에 나눠주고, 각 프로세서가 낸 결과를 합쳐서 최종 결과를 내는 방식.
- 빠르게 결과를 낼 수 있음.
+) 병렬 클러스터링
- 여러 호스트가 공유 저장장치 내의 동일한 데이터에 접근
- 동시 접근으로 인한 문제가 발생하지 않도록 접근 제어, 잠금 기법 제공이 필요하다. (Distributed Lock Manager, DLM)
+) WAN 을 이용한 클러스터링
+) SAN (Storage-Area Network)
- 를 통해서 아주 멀리 있는 클러스터 노드를 연결하거나,
- 한 클러스터 내의 수천개의 노드를 가질 수 있게 되었다.
- SAN 내에 있는 임의의 호스트에서 수행될 수 있도록 배정하기 때문.
- 호스트들이 같은 DB 를 공유할 수 있어서 성능과 신뢰성이 좋다.
사용자의 수
- Single User : MS-DOS, Windows
- Multi User : UNIX, NT Server
- 1대에 컴퓨터에 터미널을 이용해서 여러명의 사용자가 접근할 수 있다.
- 보안과 같은 문제에도 신경써야 함.
처리방식
일괄처리 (Batch Processing)
- 작업 요청을 일정량 모아서 한번에 처리한다.
- 작업이 완전 종료될 때까지 기다려야 한다.
ex) Punch Card System
시분할 (Time Sharing)
- 일정한 시간 단위로 분할하여 여러 작업에 사용.
- 넘겨줘야 하는 데드라인이 있긴 하나 우리가 사용하는 시스템은 대부분 데드라인을 어겨도 심각한 문제가 발생하진 않는 시스템이다.
- 짧은 응답 시간
- interactive
ex) UNIX
실시간 (Realtime OS)
- 정해진 시간 안에 어떤 일이 반드시 종료되는 것이 보장되어야 하는 실시간 시스템을 위한 OS
ex) 원자로... 미사일... 반도체...
- 다시 Hard Realtime OS, Soft Realtime OS 로 나뉜다.
용어 정리
- Multitasking : 여러 작업을 수행 중
- Multiprogramming : 여러 프로그램이 메모리에 올라가 있음
- Time Sharing : CPU의 시간을 분할해서 사용
- Multiprocess : 하나의 컴퓨터에 CPU 가 여러개. -> 우리 수업에선 다루지 않는다.
전부 컴퓨터에서 여러 작업을 동시에 수행한다는 뜻이긴 한데 약간씩 다름.
구조
- CPU 스케줄링은 CPU 가 너무 빨라서 고민하는 문제고
- 디스크 스케줄링은 헤드가 느려서 고민하는 문제
- I/O 는 느림.. CPU 는 빠름. -> interrupt 를 사용한다.
입출력 관리 (공룡책 1장)
프로세스 관리 (공룡책 2, 3장)
메모리 관리 (공룡책 4장)
파일 관리 (공룡책 5, 6장) + 디스크 스케줄링
실제 코드, 보안 등... (7, 8, 9, 10 장)
참고 / 출처
반효경 교수님의 2014 운영체제 1. Introduction 강의를 듣고 포스팅하고,
공룡책을 읽고 추가 정리합니다.