Unix 철학, Unix 계열 (Like Unix)

·2025년 2월 24일
0

Linux

목록 보기
1/1
post-thumbnail

Unix

유닉스는 The Open Group이라고 하는 컨소시움에서 관리하고 있다.

출처: 나무위키, 유닉스 계보
이미지를 보면 Linux는 Unix-like system으로 정리되어있음

Unix 철학

  1. 하나의 프로그램은 한 가지 일을 잘해야 한다.

    • 프로그램은 특정한 한 가지 작업을 수행하는 데 집중해야한다.
    • 복잡한 기능을 한꺼번에 포함하려하면 안된다.

      예시: ls는 파일 목록을 출력하는 역할만 수행하며, 정렬이나 필터링 같은 작업은 sort, grep과 같은 다른 유틸리티와 함께 사용될 수 있다.

  2. 프로그램은 표준 입력과 출력을 사용하여 서로 연결될 수 있어야 한다.

    • 프로그램은 데이터 흐름을 쉽게 조작할 수 있도록 설계되어야 한다.

      예시: cat file.txt | grep "hello" | sort | uniq와 같이 여러 프로그램을 조합하여 사용할 수 있다.

  3. 텍스트를 기본적인 인터페이스로 사용해야 한다.

    • 프로그램 간의 데이터 교환은 바이너리보다는 텍스트를 기본으로 해야 한다.

      예시: ps aux | grep python처럼 텍스트 기반 출력을 다른 프로그램과 조합하여 사용할 수 있다.

  4. 간단하고 짧고 명확하며 이식성이 좋아야 한다.

    • 코드는 읽기 쉬워야 하며, 불필요한 복잡성을 줄여야 한다.

      예시: find . -name *.txt" 같은 명령어는 직관적이고 이해하기 쉽다.

  5. 개발과 디버깅을 빠르게 할 수 있어야 한다.

    • 작은 유틸리티 프로그램을 조합하여 빠르게 테스트하고 디버깅할 수 있도록 해야한다.

      예시: strace를 사용하여 시스템 호출을 확인하고 문제를 빠르게 파악할 수 있다.


➕ 확장된 원칙들

  1. 조합 가능해야 한다.
    • 서로 다른 프로그램이 서로 협력할 수 있도록 설계되어야 한다.

      예시: grep, awk, sed 같은 도구를 조합하여 데이터 처리 가능

  2. 모듈화를 지원해야 한다.
    • 프로그램은 독립적인 모듈로 설계되어 필요에 따라 조합될 수 있어야 한다.

      예시: nginx는 정적파일 제공, 로드 밸런싱 등 여러 모듈을 추가할 수 있다.

  3. 소프트웨어는 유지보수하기 쉬워야 한다.
    • 코드가 직관적이고 문서화가 잘 되어야 유지보수가 쉽다.

      예시: man 페이지를 통해 각 명령어와 옵션을 명확하게 제공


💡 다중 유저 운영체제라는 아이디어가 유닉스에서 나왔음

다중 유저 운영체제?
한 컴퓨터의 운영체제에서 여러 유저가 로그인할 수 있는 아이디나 계층적 파일 시스템, 폴더 내부에 디렉토리를 계속 만들어가는 것 등이 해당된다.

profile
- 배움에는 끝이 없다.

0개의 댓글