이번 게시글은 초기 운영체제가 가진 문제를 해결하기 위해 발전해온 운영체제의 역사와
현재 운영체제의 동작 방식인 인터럽트 기반 시스템(Interrupt based System)에 대해 정리해 보겠습니다.
1. Batch Processing System (일괄 처리 시스템)
초기 컴퓨터의 경우 하나의 프로세스가 실행될 때, "컴파일 > 링크 > 실행"의 과정을 사용자가 직접 제어해 주는
방식으로 번거로움이 많았으나, 위의 과정을 하나로 통합하여 프로그램으로 만든 뒤 CPU에게 직접 할당해 주는
방식이다.
2. Multiprogramming System (다중 프로그래밍 시스템)
과거의 컴퓨터는 매우 고가의 장비였고, 메모리에서도 하나의 프로세스만 실행할 수 있었다. 당시엔 하나의 프로세스만
실행이 가능했기에 매우 불편한 상황이었다. 예를 들어 하나의 프로세스가 실행되는 상태에서 마우스나 키보드 등
입/출력 장치(Input/Output Device)를 사용하려고 한다면 CPU가 하나의 프로세스를 관리하고 있기에 입출력 장치를
사용할 수 없었고 해당 프로세스가 종료되어야 입출력 장치를 사용할 수 있게 되었으며 입출력 장치가 사용되는 동안
CPU는 아무런 작업을 할 수 없었다. 이때 CPU가 어떠한 작업도 수행하지 않는 상태를 idle이라고 한다. 위의 특성 상
CPU는 idle 상태가 매우 길었다.
위의 문제를 해결하기 위해 Multiprogramming System이 도입되었으며 해당 방식은 메모리에 여라 가지 프로세스들을 적재하는 시스템이다. 예를 들어, 1번 프로세스가 실행되는 과정에서 입출력 장치가 사용된다면 CPU는 입출력 장치의 수행으로 넘어간다. 이때 CPU는 idle 상태에 있지 않고 2번 프로세스를 실행한다. 이를 통해 idle 상태에 머무르는 시간을 최소화하고자 한 시스템이다. 그러나 큰 문제점이 발생했다. 바로 CPU가 어떠한 프로세스부터 실행해야 하는지, 어떠한 메모리 공간에 프로세스를 적재해야 하는지에 대한 부분이다. 이 부분은 현대 운영체제가 중요하게 생각하는 스케줄링(Scheduling)과 메모리 관리에 대한 문제였다.
3. Time - Sharing System (시분할 시스템)
다중 프로그래밍 시스템의 문제는 여러 사용자가 하나의 CPU를 통해 특정 시스템을 이용하는 단말기의 형태로 컴퓨터를사용할 때 문제가 발생하였다. 만일 여러 가지 프로세스가 메모리에 적재된 상태로 각자 실행을 기다리는 상태에서
첫 번째 사용자의 프로세스가 이미 실행 중이고 두 번째 사용자가 입출력 장치를 사용하고 싶을 경우 이미 첫 번째
사용자의 프로세스가 실행 중이므로 입출력 장치를 사용할 수 없었으며 해당 프로세스가 종료될 때까지 기다려야만 했고
해당 방식은 매우 비효율적인 방식이었다.
이 문제를 해결하기 위해 Time - Sharing System이 도입되었고 해당 방식은 CPU의 처리를 기다리는 여러 가지 프로세스에 대하여 이후 실행되는 시간에 대해 특정 시간을 할당해 주는 방식이다.(실행 시간의 제한) 만약 첫 번째 프로세스가 실행되는 상황에서 할당해 준 시간이 종료된다면 그 다음 프로세스가 실행된다. 이후 해당 프로세스에 부여된 시간도 종료 시 그 다음 프로세스가 실행되고 이 과정을 반복한다. 단 해당 시간이 매우 짧은 시간이라 사용자는 마치 여러 가지 프로세스가 한 번에 실행되는 것처럼 느끼고 있는 것이다.
4. Interrupt System (인터럽트 시스템)
- 인터럽트(Interrupt) : 입출력 장치와 같은 하드웨어, 프로세스가 수행되는 부분과 같이 특정 개입 상황이 발생하는 경우 해당 상황을 해결하기 위해 CPU에게 보내는 신호
- ISR(Interrupt Service Routine) : 운영체제 내부에 존재하며 발생한 인터럽트를 처리하기 위한 코드 루틴
예를 들어, 사용자가 워드 프로그램을 실행하여 키보드로 텍스트를 입력한다고 가정해 보자. 입력 장치인 키보드를 통해
사용자는 텍스트를 입력하고 결과가 화면에 출력된다. 이 과정은 키보드를 입력할 때 발생하는 인터럽트 신호를
CPU가 확인한 후 실행 중이던 프로세스 작업을 중지하고 운영체제 내부에 존재하는 ISR(Interrupt Service Routine)으로 이동하여 작업을 수행하게 됨으로써 사용자가 입력한 텍스트가 화면에 출력된다. 위와 같이 하드웨어를 통해 발생한 인터럽트를 하드웨어 인터럽트(Hardware Interrupt), 만약 워드 프로그램에서 저장된 워드 문서를 불러오는 경우 프로그램에서 발생한 인터럽트이므로 소프트웨어 인터럽트(Software Interrupt)라고 한다.
위와 같이 CPU는 특정 프로세스의 수행, 수행 중 발생한 인터럽트를 처리하기 위해 운영체제 내부와 통신을 하게 된다.
===============================================================
개인적으로 공부했던 내용들을 정리하여 작성했기에 틀린 부분이 있을 수 있습니다.
오타나 내용 상 틀린 부분 등에 대해 지적 감사히 받겠습니다!
'컴퓨터 과학(Computer Science) > 운영체제(Operating System)' 카테고리의 다른 글
[4주 차] - Windows Debugging 개요, Kernel Debugging을 위한 WinDbg, Windows 가상 환경 구성하기 (0) | 2023.04.05 |
---|---|
[3주 차] - Segment, 80386 CPU의 여러 가지 특징, Running modes(Real mode, Protected mode) (0) | 2023.03.30 |
[2주 차] - 운영체제와 임베디드 운영체제, Intel 8086 CPU Architecture (0) | 2023.03.16 |
[1주 차] - 운영체제(Operating System, CS) 수업 개요 (0) | 2023.03.09 |
[Operating System] - 운영체제의 정의 (0) | 2022.07.05 |
댓글