[OS 1-2] 운영체제 역사

KOCW에 오픈된 경성대학교 양희재 교수님의 강의를 기반으로 정리한 내용입니다.

1940년대 말

OS가 없었다

초창기에는 아래와 같은 순서로 프로그래밍이 진행되었다.

  1. 개발자가 종이에 손코딩(기계어 or 어셈블리어를 사용)
  2. 전산실에 넘김
  3. Operator가 그 코드를 보고 천공카드에 구멍을 뻥뻥 뚫는다
  4. 카드 리더기에 그 천공카드를 넣는다
  5. 처리기가 그 카드리더기에서 읽은 데이타를 메모리에 저장한다
  6. Operator가 다시 천공카드로 이루어진 Compiler를 카드 리더기에 넣는다
  7. 처리기가 그 Compiler 프로그램을 실행시키면서 메모리에 있던 아까 그 데이타를 기계어로 변경한다
  8. Operator가 다시 천공 카드로 이루어진 Linker를 넣고 ~~~ Loader를 넣고 ~~ 한다.
  9. 맨 처음 넣던 개발자의 프로그램이 드디어 실행되고 결과물이 프린터에 찍혀서 나온다.

최초의 OS – 일괄처리 시스템(Batch Processing)

등장 배경

위에서 봤듯이 Operator가 할일이 너무 많다. 그래서 이런 수고를 덜어주려고 일괄 처리 시스템을 만들었다.

개념

원래는 카드리더기에 실행할 프로그램 / Compiler / Linker / Loader를 다 일일이 순서대로 넣고 실행해야 하는데, Compiler / Linker / Loader를 미리 처리기의 메모리에 미리 적제시켜놓는 것이다. 그러면 Operator는 개발자가 준 프로그램만 천공카드에 구멍 뻥뻥 뚫어서 카드 리더기에 넣으면 그다음 할일이 없다. 알아서 뒤의 일들이 일괄적으로 처리되고 결과물이 프린터에 나오기 때문이다.

Multi-Programming의 등장

등장 배경

하드웨어 기술이 발전하게 되면서 CPU나 메모리의 성능이 좋아졌다. 하지만 여전히 하드웨어 가격이 매우 매우 비쌌기 때문에 CPU를 최대한으로 낭비없이 일을 시켜야 했다.

Idle

CPU는 프로그램을 실행하다가 I/O작업을 만나면 일을 안한다. 예를들어, 카드리더기에서 구멍뚤린 부분을 찾아서 읽어들인다던지 할때는 계산하는게 아니기 때문에 일을 쉰다. 혹은 프린터에 결과물을 찍어낼때도 CPU는 일을 안한다. 이런 상태를 Idle이라고 부른다.

Idle 상태를 줄이는 방법

메모리에 여러개의 프로그램을 두고 User Program A를 실행하다가 I/O 작업을 만나면 CPU가 B를 실행하고, 또 B가 I/O작업을 만나면 C를 실행하는 방식으로 Idle상태를 줄일 수 있다.

위처럼 스위칭이 일어나서 골고루 프로그램을 실행시킬수 있다.

Multi-Programming에서 OS가 하는일

CPU 스케쥴링

어떤 프로그램을 언제 실행할지 그 순서와 기간을 잘 정해야 최대한 낭비없이 CPU를 활용할 수 있다.

메모리 관리

유저 프로그램을 메모리의 어느 위치에 놓아야 하는지, 혹은 프로그램 실행이 끝났을때 메모리를 비우고 새로운 다른 프로그램을 load시킬때 메모리 정리를 어떻게 해야하는지 등을 고려한다.

프로그램 보호

A프로그램이 돌다가 실수로 B프로그램을 침범하는 경우가 생기지 않도록 경계선을 잘 정해주고 관리한다.

Time Sharing System의 등장

등장 배경

모니터와 키보드가 발명되었다. 이제 하나의 컴퓨터에 여러 단말기(모니터 + 키보드)를 연결시켜서 컴퓨터 한대를 여러명이 나눠쓸 수 있게되었다. 다만, CPU가 switching을 자주 하는게 아니기 때문에 A사용자가 컴퓨터를 쓰고 있으면 B,C,D사용자는 가만히 기다리고만 있는 상황이 발생했다.

공평하게 1/100초씩

CPU가 1/100초씩 유저 프로그램을 실행시키도록 함으로써, 모든 유저가 마치 각자 컴퓨터 한대씩 쓰는것과 같은 효과를 냈다. 이것이 Time Sharing System이다.

프로세스간 통신

어쨋든 하나의 컴퓨터를 공유하고 있기 때문에(작은 네트워크), 유저끼리 통신이 가능해졌다. OS가 유저 프로그램끼리 정보를 공유하도록 돕는다.

동기화

아무래도 여러가지 프로그램이 하나의 메모리에 있다 보니, 동기화를 한다.(잘 모름..)

가상 메모리의 등장

100개 혹은 1000개의 유저 프로그램을 돌리다보면 메모리가 부족할 수 밖에 없을것이다. 그래서 하드디스크의 일부분을 메모리처럼 쓰는 가상메모리 기법이 등장하였다.

참고로, TSS방식은 현대의 OS(리눅스, MacOS, iOS, Android 등등)에서도 사용된다.

참고

  1. 만화로 나누는 자유/오픈소스 소프트웨어 이야기

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다

Up Next:

[OS 1-1] 운영체제 서론

[OS 1-1] 운영체제 서론