운영체제(Operating System, OS)란?
일종의 소프트웨어인데 컴퓨터 하드웨어 윗단에 설치되는 소프트웨어이다.
컴퓨터 하드웨어와 각종 소프트웨어, 사용자를 연결해주는 계층이다.
좁은 의미의 운영체제 : 커널을 뜻하며, 운영체제의 핵심 부분으로 메모리에 상주하는 부분
넓은 의미의 운영체제 : 커널 뿐 아니라 각종 주변 시스템 유틸리티를 포함한 개념
운영체제의 목적
1. 컴퓨터 시스템의 자원을 효율적으로 관리 (자원 관리자)
- 프로세서, 기억장치, IO 장치 등의 자원을 효율적 관리
- 사용자 및 운영체제 자신의 보호
- 프로세스, 파일, 메시지 등을 관리 (소프트웨어 자원도 관리)
2. 컴퓨터 시스템을 편리하게 사용할 수 있는 환경을 제공
- 운영체제는 동시 사용자/ 프로그램들이 각각 독자적 컴퓨터에서 수행되는 것 같은 환상을 제공
- 하드웨어를 직접 다루는 복잡한 부분을 운영체제가 대행
운영체제의 분류
1. 동시 작업 가능 여부
분류 | 수행 능력 | 특징 | 활용 예시 |
단일 작업(single tasking) | 한 번에 하나의 작업 처리 | 한 명령의 수행이 끝내기 전에 다른 명령을 수행시킬 수 없다. |
MS-DOS |
다중 작업(multi tasking) | 동시에 두 개 이상의 작업 처리 | 한 명령의 수행이 끝나기 전에 다른 명령을 수행할 수 있다. |
UNIX, MS Windows |
2. 사용자의 수
분류 | 특징 | 활용 예시 |
단일 사용자(single user) | 한 번에 한 명의 사용자만 액세스 할 수 있다. | MS-DOS, MS Windows |
다중 사용자(multi user) | 한 명 이상의 사용자가 동시에 접속할 수 있다. | UNIX, NT server |
3. 처리 방식
분류 | 특징 | 활용 예시 |
일괄처리 (batch processing) |
작업을 모아서 한꺼번에 처리하는 방식이다. |
Punch Card 처리 시스템 |
작업이 완전히 종료될 때까지 기다려야 한다. | ||
시분할 (time sharing) |
여러 작업을 수행할 때 컴퓨터 처리 능력을 일정 시간 단위로 반할하여 사용한다. |
UNIX |
일괄 처리 시스템에 비해 짧은 응답 시간을 가진다. | ||
실시간 (Realtime OS) |
정해진 시간 안에 어떠한 일이 반드시 종료됨이 보장되어야 한다. (정확한 시간) |
원자로/공장 제어 미사일 제어 반도체 장비 로봇 제어 |
실시간 시스템의 개념 확장 Hard realtime system (경성 실시간 시스템) (예) 미사일) Soft realtime system (연성 실시간 시스템) (예) 영사기) |
: 우리가 배우는 운영체제는 다중 작업을 지원하고, 다중 사용자를 지원하고, 시분할 방식으로 운영이 되고 있다.
용어 정리
- Multitasking : 하나의 프로그램이 끝나기 전에 다른 프로그램이 실행이 가능한 것 (CPU가 짧은 시간 간격으로 분할해서 할당을 해서 동시에 실행되는 것처럼 보인다.)
- Multiprogramming : 메모리에 여러 프로그램이 동시에 올라가 있는 것 (특별히 메모리 측면을 강조)
- Time sharing : CPU의 시간을 분할하여 나누어 쓴다는 의미 (특별히 CPU 측면을 강조)
- Multiprocess : 여러 프로그램이 동시에 실행된다는 의미
Multiprocessor?
하나의 컴퓨터에 CPU(Processor, 처리기)가 여러 개 붙어 있음을 의미
운영체제의 구조
우리가 생각하는 스케줄링은 선착순이 가장 공평하고 효율적이라고 생각하는데, 컴퓨터는 그렇지않다.
예를 들어 은행 업무가 1시간씩 걸리는 상담 업무가 있다면, 그 뒤에 고객들은 1시간을 기다려야 한다.
CPU가 한 프로그램을 점유하고 있으면 뒷 프로그램은 그만큼을 기다려야한다. → 비효율적이다.
CPU 스케줄링
누구한테 CPU를 줄까?
CPU 자체는 빠른데, 작업들이 혼자 사용하려고 하면 빠른 자원을 효율적으로 활용할 수 없다.
→ 짧은 시간 간격으로 CPU를 줬다 뺏었다의 과정을 반복한다.
메모리 관리
메모리 공간은 한정되어 있는데, 어떻게 쪼개어 쓰지?
무조건 1/n 분배하는 것보다, 특정 프로그램에게 몰아줄 경우 더 원활하게 실행될 수 있다.
크기가 한정되어 있기 때문에 가득 찼을 경우 쫓아내야 한다. (가까운 미래에 다시 사용될 가능성이 높은가? 낮은가?)
→ 최근 메모리에서 많이 사용이 되었으면 미래에 사용될 가능성이 높다.
Disk 파일 관리
디스크에 파일을 어떻게 보관하지?
파일을 조각조각 나눠서 저장할지? 아니면 연속적으로 저장을 하는 게 좋을지?
디스크에 들어온 요청은 헤드를 움직여서 처리한다. 먼저 들어온 순서로 처리할지, 헤드와 가까운 곳부터 처리할지?
→ 디스크도 스케줄링이 필요하다. 헤드에 가까운 곳부터 먼저 처리하면 헤드의 이동을 줄여 성능이 좋아질 수 있다.
CPU 스케줄링 : 너무 빠르기 때문에 어떻게 관리할 것인가?
Disk 스케줄링 : 헤드의 움직임을 어떻게 최소화하면서 많은 요청을 빠르게 처리할 수 있는가?
I/O Device 입출력 관리
각기 다른 입출력(IO) 장치와 컴퓨터 간에 어떻게 정보를 주고 받게 하지?
I/O device는 느리다. I/O device와 CPU와 정보를 주고 받는 것을 어떻게 할 것인가?
→ I/O device에서 작업이 들어오면 CPU한테 인터럽트를 걸어서 알리면 CPU에서 처리한다.
- Interrupt : CPU가 특정 기능을 수행하는 도중에 급하게 다른 일을 처리하고자 할 때 사용할 수 있는 기능
처리 속도 : CPU > Memory > Disk > I/O device
KOCW 반효경 교수님의 운영체제 강의 내용 정리 (kocw.net)
'CS > OS' 카테고리의 다른 글
[OS] 운영체제 03 : Program Execution (0) | 2022.05.23 |
---|---|
[OS] 운영체제 02 : System Structure (0) | 2022.05.22 |
댓글