운영체제 (Operating System)
운영체제란 컴퓨터 계층에서 하드웨어 바로 위에 설치되어 사용자 및 다른 모든 소프트웨어와 하드에어를 연결하는 소프트웨어 계층을 말한다. 운영체제는 컴퓨터 상에서 자원들을 효율적으로 관리하고, 일어나는 일들을 관리함에 있어서 매우 중요한 역할을 수행한다. 주로, 운영체제가 하드웨어를 효율적으로 관리하는 점이 매우 중요하다 (CPU, Memory 등: 사실상 이것들을 자원이라고 부르는 것인데, 이미 주어진 상태인 해당 자원들을 효율적으로 사용하고 관리할 수 있어야 한다). 효율성 / 형평성 등을 따지면서 관리한다.
ex) 실행중인 프로그램들에게 짧은 시간씩 CPU 를 번갈아 가며 할당 // 실행중인 프로그램들에 메모리 공간을 적절히 분배
협의의 운영체제 (Kernel)
> 커널이란 운영체제의 핵심을 차지하는 부분으로, 메모리에 상주하는 부분을 말한다.
* 운영 체제의 분류
<동시 작업 가능성>
1. 단일 작업 (Single Tasking)
> 한 번에 하나의 작업만을 처리 (MS-DOS로, 프롬포트 상에서 한 명령의 수행만 한번에 수행)
2. 다중 작업 (Multi Tasking) - 현대 운영체제
> 동시에 두 개 이상의 작업을 처리 (UNIX, MS Window 등 한 명령의 수행이 끝나기 전에 다른 명령/프로그램을 수행 가능)
<사용자 수>
1. Single User
> MS DOS, Window : 컴퓨터 한 대를 오직 한 사용자만 사용 가능
2. Multi User (사용자간 자원 분배가 중요해짐)
> UNIX : 예를들어 컴퓨터에 계정을 여러개 만들어서, 해당 컴퓨터에 접속해서 여러 계정(유저)들이 사용된다.
<처리 방식>
1. 일괄 처리 (Batch Processing)
> 작업이 요청이 있을 때, 바로바로 처리하는게 아니라 일정량을 모아서 한꺼번에 처리한다. (현대에서는 잘 사용안됨)
> 인터엑티브 하지 못함. 키보드를 두드려도 바로 뜨지 않음.
> 오엠알 카드 같이 작업 카드를 모아 놓는다. 카드를 모두 모아서 전산소에 가서 돌려본다. 오류가 나는지 확인한다.
2. 시분할 방식 (Time Sharing)
> 현대 컴퓨터. 여러 작업이 컴퓨터 처리능력을 시간 단위로 분할해서 사용한다. 응답 시간이 짧고 Interactive 하다. 번갈아가면서 CPU를 나누어서 시분할로 지원을 해주게 된다. (사용자 수에 따라 분할되는 시간이 바뀔 수도 있음 (사용자가 반응이 느리다 생각할 수 있음)
> ex: 10명이 80 포트로 요청을 보냄. 80에 대기중인 Tomcat Spring 은 하나의 프로세스. OS 가 해당 프로세스 내의 쓰레드를 분할하여 요청들을 계속 받아서, 해당 요청들을 수행하기 위해 CPU를 분할하면서 실행한다 (이런 느낌인 것 같다)
3. 실시간 (Real-Time OS)
> 시분할과 무슨 차이가 있는가 싶음.
> 하지만 상당히 다름. RTOS 는 Deadline 이 있어서, 정해진 시간안에 응답을 보장해주는 시스템. ex: 원자로 제어 / 반도체 장비 / 미사일 제어 등. Deadline 을 엄격하게 여기냐에 따라 Hard / Soft RTOS 라고 부름.
반도체 장비 > 반도체를 하나 찍어내기 위해 Pipeline으로 진행이 된다. 그 공정마다 Deadline 이 있음.
Soft RTOS > 영화 같이 정해진 시간 내의 일정한 프레임을 직어줘야 함. 하지만 그 프레임을 못지키면 유저 입장에서 영화가 끊김. 그렇다고 해서 사람이 죽거나, 회사가 망하거나 그러진 않음.
> 점점 실시간 deadline 이 중요해지는 앱들이 늘어나고 있음. (Black Box 의 필수 촬영, 자동차 네비게이션 등). 운영체제들이 해당 앱들을 어떻게 지원해주냐가 점점 중요해지고 있음.
* 운영 체제 유사 용어 정리
Multi-Tasking : 여러 작업의 동시 실행. Task가 여러개 돌아가고 있지만, CPU는 시간간격으로 분할해서 진행시킴. 반드시 하나만 진행되고 있음.
Multi-Programming: 메모리에 여러 프로그램이 동시에 올라가 있음을 강조. (같은 뜻이긴 하지만, 메모리 측면을 강조한 용어)
Time-Sharing: 같은 뜻이지만, CPU 측면을 강조. CPU에는 반드시 하나의 프로그램만 올라가 있기 때문에, CPU가 시간을 분할해서 사용하는 것
반면에 Multi - Processor (Multi-Core) : CPU가 여러 개 붙어 있음을 의미. 그냥 정말 동시에 실행이 가능함. 각 CPU 안에서도 멀티 쓰레딩이 가능하다. 하드웨어 측면에서 위 용어들과는 다른 용어임
* 대표적인 운영 체제
1. UNIX
-- MS 의 개인용 컴퓨터를 위해 만든 OS는 단일 사용자 지원이나, 반면에 UNIX는 여러 계정을 지원함.
-- UNIX 운영체제를 만들기 위해 C 언어가 만들어짐 (초창기에 C언어는 유닉스 커널을 위한 언어였음. 아직도 시스템 프로그래밍은 C Base이다)
-- 커널의 크기를 아주 작게 만들어 놨기 때문에, 메모리를 최대한 비워놨다.
-- Linux 커널은 지금도 소스코드가 공개되어 있고, 누구나 가져다가 자유롭게 사용 가능하다.
2. MS
-- MS 은 시작이 다름. 개인용 컴퓨터를 위해 시작됨.
-- GUI 기반 운영체제.
* 운영 체제의 구조 (HW 자원 경로)
운영체제는 정부 / Process 는 사람 / Thread 는 사람의 손 및 일하는 도구 라고 생각하자
'CS 이론 > 운영체제' 카테고리의 다른 글
[운영체제 -4] Process Synchronization(병행 제어)과 Semaphore (0) | 2023.03.28 |
---|---|
[운영체제 -3] OS CPU Scheduling (0) | 2023.03.28 |
[운영체제 -2] Process Management (0) | 2023.03.28 |
[운영체제 -1] Process 와 Thread (0) | 2023.03.28 |
[IPC 체험 -1] (0) | 2022.11.07 |