OS의 일반적인 작동 방식
OS(Operating System, 운영체제)란?
사용자의 하드웨어(입출력 장치, CPU)의 리소스를 제어하고 프로그램에 대해 일반적 서비스를 지원하는 시스템 소프트웨어다. 시스템 하드웨어 관리 및 동시에 여러 애플리케이션이 작동할 수 있는 환경을 제공해주는 소프트웨어다. 현대의 PC 운영체제에는 마이크로소프트 윈도우, 맥 OS X, 리눅스가 있다.
운영체제가 하는 일은 다음과 같다.
- Process management
- Process와 Thread의 CPU위에서의 작업들을 Scheduling한다.
- User와 System의 Process를 생성하거나 삭제한다.
- Memory management
- 명령어들이 순서에 맞게 실행되도록 관리한다.
- 모든 Data들이 실행되기 전에 Memory에 올라갈 수 있도록 관리한다.
- Memory 공간을 할당하고 회수한다.
- 언제 어떤 것이 Memory에 올라갈지 결정한다.
- Storage management
- Protection and Security
OS의 종류
싱글태스킹 운영체제 / 멀티태스킹 운영체제
싱글 태스킹 운영체제는 한번에 오직 하나의 프로그램만 실행할 수 있으나 멀티태스킹 운영체제는 하나 이상의 프로그램이 동시에 실행할 수 있게 한다.
멀티태스킹의 경우 선점형과 협동형(비선점형)이 있다. 선점형 멀티태스킹의 경우 운영체제는 CPU 시간을 쪼개어 프로그램들 각각에 슬롯을 할당해준다. 협동형 멀티태스킹은 정해진 방식에 따라 다른 프로세스들에 시간을 제공하기 위해 각 프로세스에 의존하여 수행한다.
단일 사용자 운영체제 / 다중 사용자 운영체제
단일 사용자 운영체제는 사용자 구별이 없으나 여러 프로그램이 나란히 실행하는 것은 허용한다. 다중 사용자 운영체제(여러 명의 컴퓨터 사용자에 의한 동시 접근을 허용하는 운영체제나 응용 소프트웨어를 정의)는 디스크 공간과 같은 리소스와 프로세스를 식별하는 기능을 갖춘 멀티태스킹의 기본 개념을 확장하며, 다중 사용자에 속해 있으며 여러 사용자가 동시에 시스템과 상호 작용할 수 있게 한다.
분산 운영체제
구별된 컴퓨터 그룹을 관리하고 이들이 마치 하나의 컴퓨터인 것처럼 보이게 만든다. 분산되는 연산들은 하나 이상의 컴퓨터에서 수행되며 하나의 그룹에 속하는 컴퓨터들이 협업을 할 때 분산 시스템을 형성하게 된다.
판형 운영체제
운영체제에서, 배포 형식 및 클라우드 컴퓨팅 환경에서 판형은 하나의 가상 머신 이미지를 게스트 운영체제로 만드는 것을 가리키며, 실행 중인 여러 개의 가상 머신을 위한 도구로 이를 저장한다. 이 기법은 가상화와 클라우드 컴퓨팅 관리에 둘 다 사용되며, 대형 서버 웨어하우스 환경에서 흔히 볼 수 있다.
임베디드 운영체제
임베디드 컴퓨터 시스템(기계나 기타 제어가 필요한 시스템에 대해, 제어를 위한 특정 기능을 수행하는 컴퓨터 시스템)에서 사용할 수 있게 설계되어 있다. PDA처럼 조그마한 기계에 동작하도록 설계되어 있으며 ,제한된 수의 자원으로 동작한다. 매우 크기가 작고 극히 효율적으로 설계되어 있다.
실시간 운영체제
특정한 짧은 시간 내에 이벤트나 데이터의 처리를 보증하는 운영체제이다. 실시간 운영체제는 싱글태스킹일 수도 있고, 멀티태스킹일 수도 있으며 멀티태스킹의 경우 특수한 스케줄링 알고리즘을 사용한다.
라이브러리
라이브러리 운영체제는 네트워크 등 일반적인 운영체제가 제공하는 서비스들이 라이브러리 형태로 제공되는 것을 의미한다.
OS의 동작원리
기본적인 원리
OS는 사용자의 요청이 발생하면 적절하게 자원을 분배하여 그 요청을 처리해준다.
- 사용자의 요청: Event, Interrupt, H/W interrupt or S/W interrupt
- 자원 종류: CPU, I/O, 메모리 등
OS의 작동방식
멀티프로그래밍(Multiprogramming)
메모리에 여러 프로세스들을 올려두고 I/O 대기 상태가 되면 다음 일로 넘어가 최대한 CPU의 대기상태를 제거하는 방법이다.
밑의 방식을 쓰면 작업들마다 자원을 사용함에 있어 시간차가 생기는 단점이 있다.
- 1번 작업이 CPU를 사용한 뒤 I/O를 사용하게 되면 CPU는 2번 작업에 할당되어 2번 작업은 CPU를 사용한다. 이때 1번 작업의 I/O 사용시간이 길어지게 되면 2번 작업이 CPU를 이용한 작업을 끝내더라도 I/O 작업으로 들어가지 못하고 계속 대기한다. 이때 CPU 자원의 낭비가 일어나는데 이런 문제를 해결하기 위해 Multitasking이 나온다.
타임 셰어링(Time Sharing)
시간 공유방식은 멀티 프로그래밍에서 확장된 방식이며 멀티 태스킹(Multitasking)이라고 부른다. 일괄 처리 시스템에서는 하나의 일이 끝날때까지 다른 작업이 CPU를 사용할 수 없는 문제가 있다. 그래서 CPU가 scheduling을 통해 작업들을 빠르게 스위칭하면서 동시에 프로그램이 작동하는 것처럼 보이게 한다. 멀티 태스킹을 위해 메모리에 여러 일을 올려 놓을 경우 메모리가 모자를 수 있는데, 이런 경우 스와핑을 통해 프로세스를 가상 메모리에 저장한다.
CPU의 실행시간을 나누는 단위를 타임 슬라이스라 하며, 일반적으로 10ms이며 모든 일은 타임 슬라이스동안 CPU를 점유하고 그 시간이 끝나면 CPU를 양보한다.
인터럽트(Interrupt)
인터럽트는 CPU가 일을 처리하고 있을 때 I/O device 등의 장치나 예외상황이 발생해 처리가 필요할 경우에 신호를 주어 처리할 수 있도록 하는 것을 말하며 현대에 가장 많이 쓰이고 있다.
인터럽트는 H/W Interrupt, S/W Interrupt의 두 방식으로 나뉜다.
OS Loading
- 컴퓨터 전원이 켜지면 CPU는 ROM(Read Only Memory)에 저장된 내용을 읽는다.
- ROM에는 POST와 부트로더가 저장되어 있다.
- POST는 컴퓨터 전원이 켜지면 가장 먼저 실행되는 프로그램으로 컴퓨터에 이상이 있는지를 체크한다.
- Boot Loader는 하드디스크에 저장되어 있는 OS프로그램을 가져와서 RAM에게 넘겨주는 일을 한다.
- CPU는 초기화를 위해 Boot Loader에 모인 명령들을 읽고, Disk(HDD, SSD)에 있는 프로그램들을 RAM(Random Access Memory)에 올린다.
- 프로그램들이 메모리에 올라오면 CPU가 해당 프로그램을 작동시킨다.
참고링크
[Back-end] OS의 일반적인 작동방식
운영체제는 컴퓨터 User와 컴퓨터 Hardware 사이의 인터페이스 역할을 한다.
velog.io
운영체제 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 운영체제(運營 體制, 문화어: 조작 체계) 또는 오퍼레이팅 시스템(operating system, 약칭: OS)은 사용자의 하드웨어, 시스템 리소스를 제어하고 프로그램에 대한 일
ko.wikipedia.org