본문 바로가기

Study/운영체제

[1절] OS? OS란 무엇일까? - 1

운영체제는 늘 가슴속에 품어야 할 중요한 존재인 것 같다. 

운영체제에 대한 기본 이론을 다루기위한 카테고리로, 운영체제를 까먹을 미래의 나를 위해서 그리고 운영체제 공부를 진행하며 어려움을 느낄 사람들을 위해서 정리를 해보려 한다.

우선, OS가 무엇인지를 먼저 알아보며 운영체제의 시작을 열어보자!

OS란 무엇인가?

컴퓨터를 작동시킴에 있어 필요한 프로그램을 설치하고 실행할 수 있도록 도와주는 프로그램이다!

사용자가 사용하는 여러 응용 프로그램들을 설치할 수 있게 돕고, 여러 장치가 제대로 동작할 수 있도록 하며 사용자가 컴퓨터를 쉽게 이용하도록 도와주는 프로그램들의 모임이라고 보면 되겠다.

간단하게 OS의 역할을 보자면

  1. 사용자가 편히 사용할 수 있도록 돕는 사용자 인터페이스
  2. 자원 관리

정도가 되겠다. 

시스템 소프트웨어?

운영체제와 시스템 프로그램을 합쳐서 시스템 소프트웨어라고 하기도 한다. 

여기서 시스템 프로그램은, 컴퓨터 하드웨어에 의존적이고, 시스템 자체를 정상적으로 작동시키기 위해 필요한 프로그램을 의미한다. 

컴퓨터마다 시스템 소프트웨어는 프로그램마다 다를 수 있다!

OS의 발전과정

1세대: 일괄 처리 시스템

OS가 없던 시절, 프로그램은 스위치나 버튼을 일일이 조작하여 기계어로 만들어야 했다. 상상만 해도 눈물이 나는 시대였다.

하지만 IBM 701부터, 일괄처리 시스템이 등장하며 운영체제의 1세대라 할 수 있는 기능이 장착되었다. 

일괄처리 시스템

Single Stream Batch Processing System이다.

job들을 한꺼번에 여러 개 준비시켜놓은 뒤에(읽어서 저장해 둔다), 하나씩 메모리로 올려 실행시켜주는 방식이다.

job이 끝나면 메모리를 비우고, 읽어놓은 다음 것을 디스크에서 가져와 다음 job을 실행하게 된다.

미리 job들을 읽어 놓음으로써 다음 job으로 부드럽게 연결되도록 할 수 있는 것이다. 

이러한 job들의 묶음을 single stream이라 하며, Batch의 뜻은 한 번에 한 개의 작업만 처리되는 것을 의미한다.

중간에 다른 작업의 개입이 불가능하고, 하나의 작업이 완전히 끝나기 전까지 다른 작업의 개입은 불가능하다!

2세대: 주변 기기를 효율적으로 사용해보자

트랜지스터 컴퓨터가 2세대의 가장 큰 특징이다. 

해당 시기에, 컴퓨터에 연결된 주변 기기들을 효율적으로 관리하는 것에 관심을 기울였다.

이때 등장한 중요한 방식 5가지가 존재하는데, 이를 간단히 보도록 하자.

  1. 다중 프로그래밍 시스템: multiprogramming
  2. 다중 처리 시스템: multiprocessing
  3. 시분할 시스템: time-sharing
  4. 대화식 시스템: interactive
  5. 실시간 시스템: real-time 

다중 프로그래밍 시스템

CPU는 굉장히 비싸고, 처리 속도가 빠른 장치다!

CPU가 최대한 돌아갈 수 있을 만큼 돌아가는 것이 시스템을 효율적으로 사용하는 것이 된다는 의미이다.

그런데, CPU가 한 가지의 작업만 처리해야 한다면 얼마나 비효율적 일지 생각해보자.

만약 입출력 프로세스가 실행된다면? 이를 처리하는 시간 동안 CPU는 낭비되어 버리는 것이다.

 

이런 경우에는 어떻게 해야 할까?

CPU가 노는 순간이 발생하면 다른 작업을 하도록 하면 되는 것이다!

 

하지만 이를 위해서는 폰 노이만의 내장 프로그램 개념을 떠올려야 할지도 모른다.

프로그램은 CPU를 할당받기 위해서는 메모리에 적재되어있어야 한다.

=> CPU가 놀 때 CPU를 할당받을 프로그램 또한 메모리에 적재되어야 한다는 것을 의미한다.

 

CPU가 여러 작업을 수행하기 위해서는, 결국 CPU를 할당받을 프로그램 후보 작업들이 메모리에 올라와 있어야 한다는 것이다. 

위처럼 메모리에 여러 프로그램이 적재되어 CPU를 할당받게 되는 것다중 프로그래밍 시스템이라 한다. 

다중 처리 시스템

여러 개의 CPU를 통해 작업을 처리하는 것을 의미한다. 

병렬(parallel) 처리로 보면 되지 않을까 싶다!

다중 처리 시스템은 여러 CPU가 여러 작업을 수행하는 것이므로, 당연히 CPU를 할당받을 프로그램들은 메모리에 적재되어야 할 것이다.

이는 즉, 다중 처리 시스템을 위해서는 다중 프로그래밍 시스템이 전재가 된다는 것을 의미한다.

시분할 시스템

프로세스가 CPU를 할당받는 시간을 정해놓는 것이다.

한 프로세스에 큼직한 시간을 주는 것이 아니라, 분배된 시간만큼 CPU를 할당하는 것으로 마치 모든 작업들이 병렬로 처리되는 것처럼 느껴지게 해 준다.

CPU는 굉장히 빠른 장치라는 것을 떠올려볼 때, 사용자는 이를 느낄 수 없다는 것이 이해가 될 것이다.

사용자가 키보드나 마우스를 통해 상호작용을 하는 과정에서 멈춤 없이, 바로바로 상호작용이 되는 것처럼 느껴지게 되는 것을 의미하며,

이것이 마치 대화를 하는 것처럼 느껴진다 라는 점에서 대화식 시스템과 이어지게 되는 것이다.

 

마지막 실시간 시스템은 추후 공부를 더 해보면서 작성할 예정이다! 

본인의 경우에도 크롬 창을 여러 개 띄워놓으면서 카카오톡을 하고, 코딩을 하는데 이를 위해 CPU가 얼마나 열심히 일하고 있는지를 새삼 다시 한번 깨닫게 되었다. 

'Study > 운영체제' 카테고리의 다른 글

[1절] OS? 듀얼모드 - 2  (0) 2020.07.13