Home [데브코스] 2주차 - linux 기초(역사)
Post
Cancel

[데브코스] 2주차 - linux 기초(역사)


리눅스의 기초(1)

linux역사, 배포판

index

  • linux의 조상, unix의 역사, 배경
  • c언어는 unix를 만드는 언어
  • c언어 국제 표준: ISO/IEC 9899
  • UNIX의 양대산맥: SysV, BSD와 호환성 문제
  • POSIX 표준 등장: 최소한의 호환성
  • Linux의 등장과 성공 요인
  • GNU와 Free Software Foundation
  • linux 배포판: 레드햇, 데비안

역사를 다루는 이유

  1. 표준안의 존재 의미를 알려준다.
    • 표준화된 지식과 규격은 호환성을 높이고, 효율적으로 협력가능한 작업을 가능하게 한다.
  2. 지금도 표준화 이전의 세계가 존재한다.
  3. 인터넷 검색에서 나오는 출처가 의심스러운 문서에 주의하자.
    • 구글, 네이버, 각종 카페 ,위키 등에서 나오는 문서들 중 틀린 정보를 걸러낼 수 있어야 한다.
  4. 결론: 항상 표준 문서공식 문서를 먼저 보자.


역사적 배경을 다루는 또 다른 이유

  • 인과관계, 상관관계를 이해할 수 있게 된다.
    • 어떤 기술이나 표준 규격이 나오게 된 인과관계를 알아두면, 역사는 반복되기 때문에 현재 사용되는 기술들이 어떻게 변해가는지 큰 숲을 볼 수 있게 된다. → 테크닉만 외우면 초급 이상이 되기 힘들다.
    • 중급/고급 엔지니어가 되려면 역사적 배경과 철학을 이해하는 것이 중요하다.
  • 생각해야 할 이슈: UNIX, Linux는 무엇 때문에 만들어졌는가
    • 기술의 발전은 어떤 결핍을 해결하기 위해 만들어진다.
      • 결핍을 해결하는 과정은 점진적 진행되다가 특이점에서 점프하게 된다. 이런 과정 속에 기존의 것을 향상시키거나 아예 버리고 새로운 것을 만들기도 한다.
      • 기술의 발전 방향을 예측하고, 올바른 방향으로 가기 위해서는 기술의 역사적 배경, 중요한 인물들이 했던 행동이 중요하다. 또한, 기술만 볼 것이 아니라 그 기술들을 창조하거나 개선한 사람이 매우 중요하다.

컴퓨터 기술은 지적 재산과 관련이 깊기 때문에 대체적으로 폐쇄적인 성향을 띄게 된다. 하지만 폐쇄적인 환경은 호환성이나 성능의 결핍이 따라오기 마련이다. UNIX는 이를 해결하려 했다. 그 결과 UNIX는 점점 호환성, 성능이 높아졌고, Linux는 호환성 측면에서 더 높은 수준을 달성했다.

key point

  • 다양한 표준을 기억하고, 되도록 메모한다.
    • 표준을 준수한다는 것은 호환성을 보장한다는 것이다.
    • 어설프게 아는 것은 모르는 것보다 위험하다.
  • 컴퓨터 시스템에서 개방적 호환성교환의 효율을 높인다.
    • 개방적인 표준이 주는 호환성의 장점을 생각해보자.
      • OS의 API나 개념들이 표준화되고 통일되면 개방적인 표준을 근거로 서로 다른 vendor에서 만들어지는 소프트웨어, 하드웨어의 다양한 조합이 제대로 작동된다는 보장이 가능하다.
      • 개방적인 표준을 통해 여러 소프트웨어, 하드웨어는 같은 규격 내에서 경쟁을 하면서 발전한다.
공식 문서 UNIX: www.opengroup.org Linux 문서 및 교육 자료 - Red Hat: access.redhat.com - Linux Foundation: www.linuxfoundation.org 책, 만화 등 - 책: 성당과 시장 - Eric Raymond - 책: **UNIX의 탄생** - Brian Kernighan

Multics Project

  • UNIX의 씨앗
  • C언어의 시작: 포팅의 편리함을 위한 도구
  • C언어 국제 표준: C99로부터 시작된 Modern C
  • Multics: GE,Bell lab과 MIT AI lab의 MAC 프로젝트의 산물
    • 목표: 운영체제의 복잡한 기능을 감추고 시분할, 페이지/세그먼트 메모리 관리, 프로세스 관리, 파일 시스템, 주변장치 관리, 양방향 인터페이스 등등 다양한 기능을 실험하는 프로젝트 ( 지금의 window, osx,linux 등에는 당연히 탑재되어 있음)

ken thompson이 UNIX는 게임을 위해서 만들어졌다.

  • 게임을 어떻게 좋아해서 만들게 되었는지에 대한 뒷얘기

    www.bell-labs.com/usr/dmr/www/ken-games.html

기존의 UNIX는 Assembly로 작성되어 새로운 CPU가 나올 때마다 거의 새로 작성해야만 했다. 포팅에 너무 많은 시간이 걸린다는 말이다. 그래서 B언어를 개량해서 C언어를 개발했다.

UNIX를 C언어로 작성하여 얻게된 장점

  • 하드웨어가 달라져도 rebuild 혹은 약간의 수정만으로 포팅이 가능
  • 그 결과 유닉스가 여러 기계에 이식됨

C언어의 표본 책 - the C ( brian w.kernighan & dennis M.ritchie)

C언어의 특징

  • 고급언어면서도 어셈블리에 버금가는 성능
  • 낮은 추상화 지원
    • sudio, file 객체
  • 저수준의 하드웨어 조작 가능
  • 쉬운 언어적 특성

C언어 국제 표준: ISO/IEC 9899

  • ANSI-C (C89): 1989년도 표준
  • C99: 1999년도 표준
    • 현재 산업계의 실질적 표준

호환성 문제

branches & compatibility

서로 다른 UNIX 벤더에서 다 다르게 코딩되어 실행되지 않았다. 그래서 JAVA를 탄생시키게 된다. 벤더들끼리의 스스로 표준화의 필요성이 대두되면서 전기전자공학회(IEEE)의 주도하에 규격인 파직스, POSIX 1988를 발표했다. 추후 POSIX 1003.1-1990은 ISO 승인되어 IEEE std 1003.1-1988로도 표기된다.

Minor vendors: OSF의 등장 배경

AT&T, Sun microsystems는 업계 표준인 UNIX인 SVR4를 만들어낸다. 대기업이었던 sun microsystem은 자사의 UNIX를 solaris로 개작했다. minor vendor들은 자사의 UNIX가 SVR4에 묻히게 될것을 우려하여 DEC가 회의를 주최한다. 이에 OSF(Open software foundation)을 설립했다. OSF에서 통합 유닉스로서 OSF/1을 발표했다.

유럽의 컴퓨터 제조업체들이 open System의 표준화를 위해 출범한 단체가 X/open인데 여기서 표준화를 위해 가이드라인인 XPG(X/open Portability Guide)를 만들었다.

하지만 POSIX로는 호환성이 부족했는데 ,이때 빌게이츠의 microsoft사의 서버용 os가 제작되면서 모든 unix그룹들이 통합된다. 통합된 유닉스 단일 표준안 SUS(single unix specification)이 만들어진다.

  • SUSv1: XPG 4.2 혹은 UNIX95라 명명, issue 420
  • SUSv2: UNIX98 실질적인 첫 SUS 표준, issue 500
  • SUSv3: SUS 2002, issue 600
  • SUSv4: SUS 2007, issue 700

open System이라 하면 API와 OS 구조가 공개되어 표준이 만들어진 시스템은 UNUX가 시초로서 open system = UNIX라 하기도 하지만, Linux까지 포함시키기도 한다.


UNIX 이후의 세계

GNU(gnu is not unix)와의 협력

linux는 gnu의 컴파일러와 각종 유틸리티의 도움이 없었다면 발전이 힘들었다.

Linux 배포판

배포판을 분류하는 기준

  • 일반적으로 패키지 시스템으로 계열을 나누고 계열 내에서 특정 벤더나 단체로 다시 나뉜다.

DEB 계열

  • debian, ubuntu, mint…

RPM 계열

  • RHEL, CentOS, Fedora, Suse,…

debian은 GNU사의 공식 배포판

Redhat 계열 - RPM 패키지 사용

  • RHEL(redhat enterprise linux)
  • fedora
  • centOS(community enterprise operating system)
    • centOS를 사용하는 경우 EPEL을 사용하는 경우가 많다.
      • Extra Packages for enterprise linux

Debian 계열 - deb 패키지 사용 : 수직 버전으로 차이가 발생하는 것이 아니다.

  • debian linux - GNU의 Ian murdock에 의해 개발
    • 데비안 기본 - 작고 가벼운 시스템 구축이 목적
  • ubuntu linux
    • 예쁘고 사용이 편리한 데스크탑 리눅스 구축
      • 기본 설치시 가장 미려한 데스크탑을 가지고 있다.
  • kail linux: security, hacking 특화

그러나 데비안은 패키지 지원이 부족하다.

배포판별 top.3 특징

  • CentOS
    • 포털 및 스타트업 기업이 가장 많이 사용
      • RHEL의 클론이라서 엔터프라이즈 환경에서 사용하기 편리하다.
      • 엔터프라이즈 환경에서 가장 많이 쓰인다.
  • Ubuntu
    • 화면이 아름답고 초보자가 쓰기 편리하다.
      • 엔터프라이즈 환경에서 사용하는데 약간 불편하고 보안이 취약하다. 소형 기기에 최적화된 스핀오프가 많아 IOT embedded에서 많이 쓰인다.
  • Fedora
    • 최신 기술을 확인하기 편리하여 선행기술 개발, 보안 시스템 개발에 쓰인다.

enterprise linux

대형 시스템에 특화된 리눅스

  • 대용량 웹 서비스
  • cloud service
  • 게임 서비스
  • 증권

embedded linux

작은 기기에 특화된 리눅스

  • 하드웨어는 ARM 기반의 CPU를 주로 사용
    • 안드로이드, 셋탑박스, 디지털 티비…
  • 주요 임베디드 리눅스용 보드 및 모듈
    • 라즈베리파이, 오렌지파이, 라떼판다, gateworks

summary

  • mutic로부터 unix가 탄생 = ken thompson
    • AT&T와 BSD로 갈라졌다. 갈라진 이유와 결과가 중요
    • BSD에서 Sun microsystem이 탄생
  • 표준화: POSIX, X/OPEN, OSF/1의 관계
    • SysV release 4(SVR4)가 탄생 = 업계의 실질적 표준
  • window NT로 인해 UNIX 업계 통합
  • SUS의 탄생
This post is licensed under CC BY 4.0 by the author.