티스토리 뷰
※ 반효경 교수님의 운영체제와 정보기술의 원리를 기반으로 작성하였습니다.
운영체제(Operating System, OS)의 정의
운영체제는 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어를 말한다. 컴퓨터 하드웨어와 다른 모든 소프트웨어를 연결해 사용하게 편리하게 하드웨어를 사용할 수 있게 해주는 소프트웨어이다.
컴퓨터 전원을 켜면 이와 동시에 운영체제가 실행된다. 하지만 운영체제는 크기가 꽤 큰 소프트웨어여서 전체를 메모리에 올리게 되면 메모리 공간의 낭비가 심할 것이다. 따라서 운영체제의 사용되는 일부 부분만 메모리에 올려놓게 된다. 이때 메모리에 상주하는 운영체제의 부분을 커널(kernel)이라고 하며 이를 좁은 의미의 운영체제로 보기도 한다.
넓은 의미의 운영체제는 커널뿐 아니라 시스템을 위한 유틸리티(예를들어 복사기능-ctrl+c 같은 것)들을 광범위하게 포함하는 개념이다. 유틸리티들은 메모리에 상주하지 않고 필요할 때마다 메모리에 올려 사용하게 된다.
OS의 기능
운영체제의 기능을 크게 두(세) 가지로 나누어 볼 수 있다.
- 여러 사용자 및 프로그램들이 각자 독자적으로 컴퓨터를 사용하는 것처럼 느끼게 만들어 편리한 사용자 환경을 제공하는 것.
- 컴퓨터 시스템 내의 자원을 효율적이고, 형평성 있게 관리하는 것.
- 추가로, 보안
첫 번째 기능은 하드웨어를 다루는 복잡한 부분을 운영체제가 대신해주는 것이라고 보면 된다. 하나의 물리적인 컴퓨터에서 추상화된 컴퓨터를 만들어 여러 사용자가 동시에 프로그램을 실행할 수 있도록 하거나, 인터페이스를 통해 손쉽게 파일을 저장하거나 내용을 확인할 수 있는 등의 역할을 해준다.
두 번째 기능은 편리한 환경을 제공하는 것보다 중요한 핵심 기능이라 볼 수 있다. 자원을 효율적으로 관리하는 역할을 하므로 자원관리자(resource manager)라고 부르기도 한다. 여기서 자원이란 CPU, 메모리, 하드디스크, I/O장치 및 소프트웨어 자원까지 통칭하는 개념이다.
OS의 분류
운영체제는 다양한 기준에 따라 분류할 수 있다.
동시작업 여부에 따라
- 단일작업(single tasking)용
한 번에 하나의 프로그램만 실행시킬 수 있는 운영체제이다. 초창기 운영체제(예를 들어 DOS)는 대게 단일작업용 운영체제였다. - 다중작업(multi tasking)용
운영체제가 동시에 2개 이상의 프로그램을 실행시킬 수 있다. 최근에 대부분의 운영체제는 다중작업을 지원한다. CPU 작업시간을 조금씩 나누어 쓰는 것을 시분할 시스템(time sharing system)이라고 하고, 여러 프로그램들이 조금씩 메모리 공간을 보유하며 동시에 메모리에 올라가 있는 것을 다중 프로그래밍 시스템(multi-programming system)이라고 한다. 다중작업 시스템은 또한 프로그램에 대한 입력의 결과를 바로 화면에서 보여주므로 대화형 시스템(interactive system)이라고도 한다. 이 세 가지 시스템 모두 하나의 컴퓨터에서 여러 프로그램이 실행되어 생긴 것이다. 이와는 조금 다른 개념으로 다중처리기 시스템(multi-processor system)이 있는데 이것은 CPU가 여러개 존재하는 시스템을 말한다. 헷갈리지 않도록 주의하자. 다중처리기 시스템은 여러 CPU를 사용하므로 더 빠른 처리가 가능하지만 운영체제에서 여러 CPU를 관리해야 하므로 더 복잡한 메커니즘을 필요로 한다.
다중 사용자에 대한 동시 지원 여부에 따라
- 단일 사용자용
대표적인 예시는 Windows이다. 한 번에 한 명의 사용자만이 사용할 수 있다. - 다중 사용자용
대표적인 예시는 Linux와 같은 유닉스 계열 운영체제이다. 우리가 흔히 서버라고 부르는 컴퓨터가 이러한 다중 사용자용 운영체제를 사용하고 있다.
처리 방식에 따라
- 일괄처리(batch processing) 방식
일괄처리 방식은 요청된 작업을 일정량씩 모아 한번에 처리하는 방식이다. 일괄적으로 처리하고, 모든 작업이 완전히 종료된 후에 결과를 알 수 있다. 초창기 컴퓨터에서 사용되었던 punch card 처리 시스템을 예로 들 수 있다. - 시분할(time sharing) 방식
시분할 방식은 컴퓨터의 처리 능력을 매우 짧은 시간으로 나누어 여러 작업을 짧은 시간 단위씩 번갈아가며 처리하는 방식으로 현대의 범용 컴퓨터 대부분이 사용하는 방식이다. 짧은 응답시간을 가지므로 사용자가 독점적으로 컴퓨터를 사용하고 있다고 느낄 수 있다. 이와 같이 사용자의 요청에 대한 결과를 바로 받을 수 있는 시스템을 대화형(interactive) 시스템이라고 하며, 시분할 방식의 대표적인 특징이다. - 실시간(real time) 방식
실시간 방식은 정해진 시간 안에 어떤한 일이 반드시 처리됨을 보장해야 하는 시스템에서 사용한다. 주로 원자로, 공장제어, 미사일 제어와 같은 특수한 목적으로 사용된다.
자원관리 기능
앞으로 배울 내용을 간략하게 소개하면 크게 네 가지로 나누어 볼 수 있다.
- CPU Scheduling: CPU가 하나만 존재하는 일반적인 컴퓨터에서도 프로세스는 여러 개가 동시에 수행될 수 있다. 이때, 매 시점 어떤 프로세스에 CPU를 할당해 사용할 것인지 결정하는 일을 한다.
- Memory 관리: 메모리는 CPU가 직접 접근할 수 있는 컴퓨터 내부 기억장치이다. CPU에서 실행할 프로세스가 이 메모리에 올라가 있어야 하는데, 한정된 메모리에 실행 중인 모든 프로세스를 올려놓을 수 없으므로 효율적인 메커니즘이 필요하다.
- I/O(입출력) 관리: 주변장치들은 CPU의 서비스가 필요한 경우 신호를 발생시켜 서비스를 요청하는데 이것을 인터럽트(interupt)라고 한다. 이를 사용한 메커니즘으로 입출력을 관리한다.
- 파일 관리
'OS' 카테고리의 다른 글
5장. 프로세스 관리 (0) | 2023.02.18 |
---|---|
4장. 프로그램 구조와 실행 (0) | 2023.01.27 |
3장. 컴퓨터 시스템의 동작 원리 (1) | 2023.01.15 |
동기식과 비동기식 입출력 (0) | 2023.01.08 |
- depth
- conditional GAN
- AI
- Raspberry Pi
- 신호처리
- design pattern
- OS
- ML Pipeline
- 3d object detection
- Gan
- Operating System
- MLOps
- deeplearning
- image
- Depth estimation
- pcb
- mode collapse
- ML
- Building Basic GAN
- controllable GAN
- DSP
- Generative Model
- machine learning
- 디지털신호처리
- Deep learning
- 운영체제
- 딥러닝
- TRACKING
- feature
- depthmap
- Total
- Today
- Yesterday
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |