nonani

운영체제의 태동과 발전 (1) 본문

CS공부/운영체제

운영체제의 태동과 발전 (1)

nonani 2023. 3. 13. 23:03

3학년 1학기 운영체제 과목을 수강하며 강의 내용을 정리한 게시글입니다.

 

 


목차

  1. 운영체제의 필요성과 목적
  2. 초기시스템

 


아래의 방식은 분량 관계 상 다음 게시글에서 정리하겠다.

  1. 초기 일괄처리 시스템
  2. 일괄처리 시스템
  3. 다중프로그래밍

 

운영체제의 필요성과 목적

운영체제의 필요성은 아래의 그림으로 표현할 수 있다.

 위의 그림을 분석해보며 자바라는 카페에 현재 3명의 공룡들이 커피잔, 의자, 탁자와 같은 자원(resource)을 사용하고 있고 현재 남은 자원이 없어 문 밖에 공룡이 기다리고 있는 모습을 확인할 수 있다. 이 때 만약 카페 점주(Administor)와 같은 관리자가 없을 경우 또는 고객의 회전을 효율적으로 하기 위한 일종의 정책(규칙) 같은 것이 없다면  한정된 자원을 저기 험상굳게 생긴 티라노같은 애들이 독식하는 등의 문제가 생길 수 있을 것이다.

 위의 상황과 비슷한 상황이 우리가 사용하는 컴퓨터에서도 일어날 수 있기 때문에 저런 상황을 방지하기 위해서 정책을 만들고 이를 관리하는 관리자, 이 역할이 운영체제(Operating system)의 역할이다.

따라서 운영체제의 목적은 크게 2가지로 나눌 수 있다.

  1. 편의성 (Convenience) : 편의성의 경우, 적은 자원을 사용하여 사용자에게 결과를 빨리빨리 보여주기 위한다는 점에서 사용자에 입장을 고려한 관점이다.
  2. 효율성 (Efficiency) : 효율성의 경우, 최대한 하드웨어의 연산 공백 없이 연산이 돌아가게 한다는 점에서 하드웨어의 입장을 고려한 관점이라 볼 수 있다.

이전의 하드웨어 가치가 천금 같았던 시절에는 비싼 하드웨어를 비는 시간 없이 계속 굴릴 수 있게하는 이 효율성에 더 무게를 주어 OS를 설계하였다면, 시간이 흘러 하드웨어의 가격이 낮아짐에 따라 편의성에 더욱 집중되는 추세라고 한다. 단, 이 또한 사용 목적에 따라 다르다. 예를 들어 서버의 경우, 우리가 일반적으로 사용하는 PC, 노트북과 같은 User Device들과 달리 사용자의 IO가 드물기 때문에 오히려 효율성에 집중하여 OS를 설계하여도 될 것이다.

운영체제를 설계할 때 고려되어야 할 점이 한 가지 더 있는데, 다양한 입출력 장치의 운영 및 제어의 일관성을 추구하는 것이다. 만약 Windows10가 운영체제로 설치되어 있던 PC를 Windows11로 업데이트 한다고 가정했을 때, IO 장치의 운영 및 제어의 일관성을 추구하지 않는다면 Windows11을 사용할 수 없는 PC가 생길 수도 있을 것이다. 이를 위해 이전부터 기업이나 기관은 일찍이 디바이스 드랑이브를 표준화 하여 새로운 운영체제를 개발할 때에도 이 일관성을 추구해왔기 때문에 우리가 현재 OS를 업데이트해도 IO장치를 사용하는데 어려움이 없는 것이다.


 

초기 시스템

아주 머나먼 호랑이 담배피던 시절, 무려 교수님 대학생 시절의 경우, 자기테이프나 카드천공기로 카드에 구멍을 뚫어가면서 프로그래밍을 했을 시절에나 존재하던 시스템이다.

이때의 경우, 카드 한장이 지금의 코드 한줄 정도의 분량이었다. 그래서 하나의 프로그램을 돌리기 위해선 수십 장, 수백 장의 카드를 일일히 카드천공기로 뚫어주고 Sign-Up Sheet라는 일종의 예약표에  내가 이 시간에 컴퓨터를 사용할게요~처럼 원하는 시간을 예약한 후, 수백장의 카드로 구성된 펀치 카드 박스나 카드덱의 내용을 카드리더기에 적재한 후에 프로그램을 수행 및 디버깅하는 매우 아날로그틱한 시스템이었다.

이 시스템을 편의성과 효율성의 관점으로 바라보면?

Sign-Up Sheet에 내가 예약한 시간 동안은 혼자 사용하니까 즉각적으로 결과를 볼 수 있다는 점에서 편의성은 높으나(물론, 이것도 좀 어거지인 것 같긴하다...ㅎ), Sign-Up Sheet의 남는 시간이 발생하면, 즉 예약이 안되어 있는 시간 동안 그 시절 그 값비싼, 전국에 몇개 있지도 않았던 귀한 하드웨어가 놀고 있는 것이니 효율성은 매우 낮다라고 볼 수 있다.

따라서 

  1. 활용도 비효율(Sign-Up Sheet 남는 시간 발생)
  2. 준비 시간 과다(Tape나 Punch-Card로 프로그램 적재) 

위와 같은 이유로 효율성 증진에 많은 노력을 투입하였다.

 


마무리

다음 게시글에선 이어서 개선된 일괄 처리 시스템를 포함한 이후의 OS 발전 과정에 대해서 정리하겠다.

 

 

'CS공부 > 운영체제' 카테고리의 다른 글

운영체제의 태동과 발전 (2)  (0) 2023.03.13