Studying/Roadmap

운영체제의 구조와 원리

aoaa 2022. 3. 11. 22:02

1. OS의 작업방식

Windows와 Mac Os같은 운영체제가 등장하기 전에는 MS-DOS라는 운영체제를 사용했습니다. MS-DOS는 Single tasking(단일 작업)밖에 하지 못했습니다. 

 예를 들어 수행해야 할 작업-1과 작업-2가 있다고 생각해봅시다.
작업-1은 CPU를 사용한 후 I/O 장치를 사용하고,
작업-2는 CPU만을 사용하는 작업이라고 예를 들어 보겠습니다

 

작업-1이 먼저 수행이 되면서 CPU를 사용하고 I/O를 사용하는 동안 CPU는 놀고 있음에도 불구하고 작업-2는 메모리에 올라가있지 않기 때문에 작업-1의 전체적인 작업이 끝나기 전까지 작업을 시작하지 못하였습니다. (  I/O 장치를 사용할 때도 마찬가지입니다. ) 이러한  유연하지 않은 구조는 컴퓨터 전체의 효율성을 떨어뜨렸습니다. 
그래서 생각해낸 것이 CPU와 I/O를 바쁘게 하자!이고 그것이 바로 Multiprogramming입니다.

 

Multiprogramming은 여러 작업들이 동시에 메모리에 올라가게 됩니다.
그리고 위와 같이 작업-1이 수행되는 동안 CPU가 대기 상태로 들어가고 I/O를 수행할 때 작업-2
대기 상태인 CPU를 사용하게 함으로써 유연성을 제공하여 효율성을 높이는 방법입니다. 반대로 I/O가 대기 상태일 때는
I/O가 필요한 작업에게 그 자원을 할당해줍니다.

 

Multiprogramming에도 단점이 있었는데요! 그것은 바로 작업들마다 자원의 사용에 시간 차이가 생기기 때문입니다.

 


 예를 들어보겠습니다. 만약에 작업-1이 CPU를 사용하고 I/O를 사용하게 되면 CPU는 작업-2에게 할당되어 작업-2는 
CPU를 사용하게 됩니다. 하지만 만약 작업-1의 I/O 사용시간이 길어지면 작업-2가 CPU를 이용한 작업을 끝내도 I/O 작업으로 들어가지 못하고 계속 대기하게 됩니다. 그럼 이때도 역시 위와 마찬가지의 CPU 자원의 낭비가 일어나게 되는 것입니다.  이러한 낭비는 효율성을 떨어뜨리는 결과를 가져옵니다.

 

 그래서 등장한 것이 Multitasking입니다.
Multitasking은 Multiprogramming의 논리의 확장이라고 보면 됩니다.
각각의 작업에 시간을 부여하고 CPU를 작업하다가 그 시간이 지나가면 다른 작업에게 CPU 자원을 할당해줍니다.
그러므로 위와 같은 시간 지연으로 인한 낭비를 줄일 수 있으며 주어 진 시간은 굉장히 짧아서 빈번한 switching이 발생하게 됩니다.

 

 

2. OS의 동작원리

컴퓨터가 부팅이 되면 OS 프로그램을 실행한 뒤 사용자의 입력 이벤트를 기다린다. 이 때, 이 이벤트를 인터럽트(Interrupt)라고 합니다.

 말 그대로 방해라는 의미를 가지고 있는데, CPu가 프로그램을 실행하고 있을 때, I/O 하드웨어같은 장치에 예외상황(에러,입출력..) 같은 상황에 대해 CPU가 처리할 수 있도록 중간에 멈추게합니다. 

 그 후, OS는 인터럽트를 발생시킨 명령어 주소를 기억합니다. 그 후 인터럽트가 끝나면 해당 주소로 돌아가 다음 명령을 수행하거나 대기 상태로 돌아갑니다. 

 이 운영체제의 원리를 Interrupt-driven 방식이라고 합니다. 이벤트나 인터럽트 발생 시 OS가 적절하게 자원을 분배하여 그 요청을 처리하는 구조라고 보면 됩니다.

 

 이 때, 인터럽트에는 H/W와 S/W 인터럽트가 있습니다. 

H/W는 I/O, 메모리, CPU와 관련되있는 것이고, S/W는 프로그램 실행 중 에러, OS에 대한 요청인 System Call이 있습니다. S/W 인터럽트는 잘못 처리하게 되면 한 작업이 자원을 계속 점유하거나 컴퓨터의 동작을 크게 저해할 수 있기 때문에 이를 예방해야 합니다.

 

 첫 째로, Dual-Mode Execution이라는 방법이 있습니다. OS는 기본적으로 사용자에게 인터페이스를 제공하는 User Mode와 기기들을 직접 관리하는 Kernel Mode로 구분됩니다.

 Kernel에서의 작업은 컴퓨터의 중요한 부분에 해당하는 작업이기에 사용자가 직접 작업하다가 문제가 생길 시 컴퓨터 전체에 영향을 끼치기 때문에 User Mode와 Kernel Mode로 나눠 사용자가 접근하지 못하게 합니다.

 사용자가 User Mode에서 작업을 명령하면 Kernel Mode에서 이를 처리해야하는데 그 연결고리 역할을 하는 것이 바로 Mode-Bit이다. 운영체제는 User mode에 들어온 명령어와 일치하는 Mode-Bit을 가진 Kernel Mode의 명령어를 찾아 Kernel에서 실행한 후, 그 결과를 User-Mode에 넘기고 일을 마무리하는데, 이러한 행위를 System Call이라 합니다.

 

두 번째로는 Timer가 있습니다. Timer는 말 그대로 프로세스들에게 유효 시간을 부여하여 그 시간이 지나면 프로세스를 종료시켜 Error가 발생하여 작업이 멈추더라도 CPU를 계속 점유하는 것을 방지하는 법입니다.

 

 

 

 

출처

https://velog.io/@brian_kim/OS-%EC%9A%B4%EC%98%81%EC%B2%B4%EC%A0%9C-%EA%B5%AC%EC%A1%B0%EC%99%80-%EC%9B%90%EB%A6%AC

 

[OS] 운영체제 구조와 원리

운영체제(Operating System)란? > 운영체제란 컴퓨터 하드웨어(입출력 장치, CPU)의 리소스를 관리해주면서 동시에 여러 애플리케이션이 작동할 수 있는 환경을 제공해주는 소프트웨어다. OS는 프로그

velog.io

 

 

'Studying > Roadmap' 카테고리의 다른 글

스레드와 동시성  (0) 2022.03.14
프로세스 관리  (0) 2022.03.13
운영체제란?  (0) 2022.03.10
호스팅이란?  (0) 2022.03.09
도메인 이름이란?  (0) 2022.03.08