몇 번의 프로젝트에서 인프라를 맡아 리눅스를 어느 정도 다룰 줄은 알지만 체계적으로 공부해본 적이 없습니다. 이번 기회에 리눅스 개발 코드도 뜯어보면서 심도 깊게 이해해보겠습니다.
리눅스에 대해서 공부하기 전에 리눅스는 운영체제의 일종이므로 운영체제에 대해서 먼저 이해해야 합니다. 이번 글에서는 운영체제가 무엇인지 간단하게 공부하고, 리눅스를 입문해봅시다.
운영체제(Operating System; OS)는 컴퓨터의 CPU, 메모리와 같은 하드웨어 자원을 효율적으로 관리하는 시스템 소프트웨어입니다. 또한 응용 프로그램이 동작할 수 있는 환경을 제공하고, 사용자와 하드웨어 간의 상호작용을 위해 사용자 인터페이스를 제공하는 역할을 하기도 합니다.
  • 처리능력 향상 : 일정 시간 동안 처리하는 일의 양을 의미하는 처리능력(Throughput)의 향상을 목적으로 합니다.
  • 반환 시간 최소화 : 작업을 의뢰 후 시스템에서 결과가 얻어질 때까지의 시간을 의미하는 반환 시간(Turnaround Time)의 최소화를 목표로 합니다.
  • 신뢰도 향상 : 주어진 문제를 정확하게 처리하는 정도를 뜻하는 신뢰도(Reliability)의 향상을 목적으로 합니다.
  • 사용 가능도 향상 : 이용할 수 있는 시스템의 자원이 어느 정도인가를 의미하는 사용 가능도(Availability)의 향상을 목적으로 합니다.
  • 운영체제는 컴퓨터의 자원을 효율적으로 사용하고 사용자에게 편리한 기능을 제공하기 위해 다음과 같은 다양한 역할을 수행합니다.
  • 사용자의 하드웨어 접근이 용이하도록 운영체제가 하드웨어 제어, 입력, 출력 등의 관리를 수행합니다.
  • 한정된 하드웨어 자원을 다수가 공유할 수 있는 기능을 수행합니다.
  • 프로세스, 메모리, CPU와 같은 한정된 자원을 효율적으로 사용하기 위해 자원 스케줄링을 제공합니다.
  • 응용 프로그램의 작성과 실행이 편리하도록 시스템 콜(System Call)을 제공합니다.
  • 예상하지 못한 오류가 발생하더라도 시스템을 중단시키지 않고 실행할 수 있도록 오류 복구 기능을 제공합니다.
  • 사용자의 다양하고 수많은 데이터를 조직화하고 저장할 수 있는 파일 관리 및 데이터베이스 기능을 제공하고 원격 컴퓨터와 연결할 수 있는 네트워크 기능을 제공합니다.
  • 사용자에게 편리한 사용자 인터페이스를 제공합니다.
  • 운영체제는 자원을 더 효율적으로 사용하기 위해 발전해왔습니다. 자원을 효율적으로 사용한다는 것은 시간을 단축시키기 위해 놀고 있는 자원 즉, 유휴(idle) 자원이 최대한 없도록 계속 일을 시키는 것입니다.
    초기 컴퓨터가 개발되고 사용되던 1960년대 무렵까지는 컴퓨터에 데이터를 입력하기 위해 천공 카드 등의 종이가 필요했습니다. 하지만, 천공 카드 한 장에는 최대 80바이트 용량의 정보만 담을 수 있었기 때문에 큰 프로그램을 사용하기 위해서는 위의 사진처럼 어마어마한 양의 천공 카드를 만들고 컴퓨터에 집어넣어야 했습니다. 그리고 컴퓨터는 물리적으로 종이를 빨아들이면서 천공 체크를 했기 때문에 위의 천공 카드를 모두 인식시키기 위해서는 꼬박 4일이 걸렸습니다.
    당시 컴퓨터는 매우 크고 비싼 장비였기 때문에 개인이 갖는 것은 꿈도 못 꾸고, 연구자들이 컴퓨터를 사용하기 위해서는 순서대로 대기해야 했습니다. 이러한 상황을 해결하고 더 짧은 시간동안 더 많이 컴퓨터를 사용할 수 있도록 컴퓨터를 운영하는 방법인 운영(Operating) 체제(System)가 발전하게 되었습니다.

    IBM 메인 프레임의 제어 프로그램을 담은 62,500장 규모의 천공 카드

    일괄 처리 시스템은 초기 운영체제의 형태로, 사용자들이 올린 작업 중 비슷한 작업들을 묶어서 한번에 처리합니다. 이를 위해 사용자들의 작업에서 비슷한 작업을 분류하고 컴퓨터를 대신 운영할 직원인 오퍼레이터를 두었습니다.
    하지만 어쨌거나 오퍼레이터는

    Loading comments...

    관련 포스트

    © Churnobyl 성철민
    Contact: tjdcjfals@gmail.com