본문 바로가기

02. Linux & AWS

Linux 개요

728x90

운영체제(Operating System)

  • 운영체제(Operating System)
    • 운영체제는 하드웨어와 소프트웨어 사이의 중간 관리자 역할을 하는 중요한 S/W
    • 하드웨어 자원의 관리
      • 대표적인 하드웨어 예시
        • : CPU, Memory, Hard Disk, I/O Devices(키보드, 마우스, 모니터, 프린터), etc.
    • 우리가 사용하는 여러 프로그램들이 원활히 작동하도록 도와주는 역할
  • 운영체제의 주요 역할
    • 하드웨어 관리
      • : 각종 하드웨어 장치(메모리, CPU, 저장 장치 등)를 관리
      • Ex. CPU가 여러 작업을 동시에 처리할 수 있도록 작업의 우선순위를 결정하거나, 프로그램이 사용하는 메모리를 효율적으로 배분하는 역할을 OS가 한다.
        • ~시분할 개념 → 포토샵 일부, 크롬 일부, mp3 일부를 CPU가 번갈아서 시행하는 개념( ← 인간이 인식할 수 없을 정도로 빠르다)
    • 프로그램 실행 및 관리
      • 우리가 사용하는 다양한 프로그램(웹 브라우저, 문서 작성 프로그램, 게임 등)을 실행하고 관리
      • 운영체제는 프로그램이 잘 실행될 수 있도록 필요한 자원(메모리, 네트워크, 디스크 등)을 할당하고, 프로그램 간의 충돌을 방지
        • ~서버에서는 최대한 관리로서 프로세스를 종료하는 것을 피한다
    • 파일 관리 ← 파일 쓰기(생성/수정), 삭제, 복사
      • 컴퓨터의 저장 공간에서 파일을 읽고 쓰는 작업을 관리
      • 우리가 문서를 저장하거나 사진을 저장할 때, 운영체제가 파일의 위치를 기억하고 파일을 관리
    • 사용자 인터페이스 제공
      • : 사용자가 컴퓨터를 쉽게 사용할 수 있도록 사용자 인터페이스(UI)를 제공
      • 그래픽 유저 인터페이스 (GUI: Graphic User Interface)
        • : 보통 윈도우 운영체제의 바탕화면이나 아이콘, 마우스를 이용한 클릭 동작 등
      • 명령줄 인터페이스 (CLI: Command Line Interface)
        • : 터미널이나 명령줄 인터페이스(CLI)도 운영체제가 제공하는 사용자 인터페이스 중 하나
          • ~한 줄 단위로 명령을 하면 운영체제에서 바이너리 데이터 처리해서 명령 동작
    • 보안 및 권환 권리
      • 운영체제는 사용자의 데이터를 안전하게 보호
      • 시스템 자원을 사용할 수 있는 사람이나 프로그램에 대한 권한을 관리
      • 외부의 악성 프로그램으로부터 시스템을 보호하는 역할도 운영체제의 중요한 기능
  • 운영체제의 구성요소
    • 커널: 시스템의 핵심 기능을 담당
      • 성능의 차이는 Kernel의 차이로 발생
    • 파일 시스템: 데이터 저장 및 관리
    • 디바이스 드라이버: 하드웨어와의 통신
    • 시스템 호출: 운영체제 서비스 접근
    • 인터페이스: 사용자와의 상호작용
  • 대표적인 운영체제의 종류
    • Windows
      • 전 세계에서 가장 많이 사용하는 운영체제 중 하나
      • 사용하기 쉬운 그래픽 인터페이스로 인해 많은 사람들이 PC에서 사용
    • macOS
      • 애플의 컴퓨터에서 사용하는 운영체제
      • 사용자 UX와 애플의 하드웨어와 최적화되어 있고, 안정성과 성능이 뛰어남
      • Unix 운영체제에서 파생
    • Android/iOS
      • 모바일 기기를 위한 운영체제
      • 안드로이드는 구글에서 개발한 운영체제로 스마트폰과 태플릿에 사용, Linux 기반 iOS는 애플의 아이폰과 아이패드에서 사용
  • Server OS
    • Client → Server OS: 요청
    • Client ← Server OS: 응답
    • Server OS; S/W, Network, 권한, 파일 관리

Linux

    • 유닉스(Unix)
      • 리눅스가 탄생하기 이전 운영체제
      • 지금도 많이 사용되는 운영체제 중 하나이지만 높은 비용 지불 필요
      • IBM의 AIX, HP의 HP/UX, 오라클의 Solaris, DEC의 Digital Unix, SCO의 SCO Unix 등
        • → 자사 서버에 자체 UNIX를 설치해서 제품을 판매 & 기술 지원을 하여
          • → Client 입장에서 서버 판매사에 의존성이 너무 높아진다.
        • ~ 고성능, 중요한 서버 등에 지금도 사용
    • 리눅스의 정의
      • 리눅스(Linux)는 오픈 소스 운영 체제(OS)
      • 컴퓨터 하드웨어와 소프트웨어 간의 통신을 중재하는 역할
      • 다양한 장치에서 사용되며 서버, 개발 환경, 모바일 기기, 임베디드 시스템 등 여러 용도로 활용
      • 리눅스 커널을 기반으로 다양한 배포판이 존재
    • 리눅스 점유율
      • 데스크톱 PC: 주로 Microsoft의 Windows 계열 운영체제를 사용
      • 인터넷 서버와 슈퍼컴퓨터: 리눅스가 압도적인 점유율
      • 모바일 기기: 리눅스 커널 기반의 안드로이드 운영체제가 70.8% 점유
    • 리눅스의 장점
      • 유닉스와 호환되고, 공개 소프트웨어로 등장 당시부터 주목받음
      • 다양한 환경에서 사용 가능: PC, 서버, 슈퍼컴퓨터, 임베디드 시스템, 모바일 기기
      • 많은 개발자가 지원하는 소프트웨어를 포함하여 다양한 응용 프로그램 제공
    • 리눅스의 역사
      • 리눅스는 1991년 핀란드의 대학생 리누스 토르발스(Linus Torvalds)가 유닉스(UNIX) 운영 체제를 무료로 대체할 목적으로 개발
      • 처음에는 개인적인 학습 용도로 개발했으나, 이를 인터넷에 공개하면서 전 세계 개발자들이 함께 참여하여 발전
      • 이후 오픈 소스 라이선스인 GPL(General Public License) 아래에서 누구나 자유롭게 사용, 수정, 배포할 수 있는 시스템으로 확립
    • UNIX와의 관계
      • 리눅스는 유닉스(UNIX)의 철학과 설계 원칙을 기반으로 만들어 졌음
      • 유닉스가 만들어질 당시 상업적인 용도로 사용되었고 여러 컴퓨터 시스템에서 사용
      • 리눅스는 유닉스의 핵심 원칙을 유지하면서도, 소스 코드를 무료로 제공하고 누구나 수정할 수 있게 하여, 오픈 소스 커뮤니티의 기틀을 마련
      • 유닉스는 상업적인 운영 체제로 남아있지만, 리눅스는 유닉스의 오픈 소스 대안으로 널리 사용
    • 리눅스가 주로 사용하는 분야
      • 서버
        • 전 세계 웹 서버의 약 70%가 리눅스를 기반으로 동작
        • 안정성과 보안성이 뛰어나기 때문에 대규모 서버 환경에서 많이 사용
        • 아마존, 구글, 메타 등의 대형 IT 기업에서 리눅스를 운영체제로 선택
      • 임베디드 시스템
        • 리눅스는 스마트폰, 가전제품, 자동차 등의 임베디드 시스템에서도 널리 사용
        • 안드로이드(Android) 운영 체제도 리눅스 커널을 기반으로 하여 개발
        • 리눅스의 유연성과 경량화된 시스템 구조 덕분에 다양한 하드웨어 플랫폼에 적용
      • 클라우드 및 가상화
        • 많은 클라우드 서비스 제공 업체가 리눅스 기반 인프라를 사용
        • AWS, Microsoft Azure, Google Cloud Platform, OCI와 같은 주요 클라우드 플랫폼은 리눅스를 지원
        • 가상 머신 및 컨테이너 기반 환경에서 리눅스가 기본적인 운영 체제로 사용
        • ~AWS ~ 파일럿 테스트 or 신생 기업의 인프라로 유용
    • 커널 (Kernel)
      • 리누스 토르발스(Linus B. Torvalds)가 1991년에 리눅스 커널(kernel) 0.01 버전을 작성
      • 1992년에 0.02 버전을 내놓으면서 인터넷에 소스코드를 공개, 이것이 리눅스의 시초
      • 통상적인 리눅스는 토르발스가 만든 커널에 컴파일러, 셸, 기타 프로그램이 조합된 배포판
      • 배포판은 전 세계적으로 수백 가지가 넘지만 모두 토르발스가 제작한 커널을 사용
      1. 하드웨어와 소프트웨어 간의 중재자
        • 커널은 CPU, 메모리, 네트워크 장비 등과 같은 컴퓨터의 하드웨어 자원을 관리
        • 애플리케이션이 실행되면 커널은 하드웨어 자원을 효율적으로 사용할 수 있도록 할당하고 관리
          • ~OS에서 CPU를 관리하는데, CPU의 Core/Processor 등을 사용하지 못하면 무용지물이기에 → Kernel에서 스케줄링을 담당하면서 기능을 사용할 수 있게 되었다.
        • Ex. 프로그램이 데이터를 저장하려 할 때, 커널이 하드 디스크와의 상호작용을 처리한다
      2. 프로세스 관리
        • 커널은 동시에 실행되는 여러 프로그램(프로세스)을 관리
        • 각 프로세스가 CPU 시간을 적절히 나눠 가질 수 있도록 스케줄링(Scheduling)을 담당
        • 만약 여러 개의 프로세스가 동시에 실행 중일 때 커널은 어떤 프로세스가 우선순위를 가져야 할 지 판단하고, 각 프로세가 시스템 리소스를 공평하게 사용할 수 있도록 관리
      3. 메모리 관리
        • 컴퓨터의 메모리는 제한적이므로 커널은 메로리 사용을 최적화하는 역할
        • 커널은 각 프로그램이 사용할 수 있는 메모리를 할당하고, 사용하지 않는 메모리는 해제하여 다른 프로그램이 사용할 수 있도록 처리
        • 필요 시, 커널은 하드디스크를 임시 메모리로 사용하는 가상 메모리(Virtual Memory) 기능도 제공
      4. 파일 시스템 관리
        • 리눅스 커널은 다양한 파일 시스템을 지원
        • 파일을 읽고 쓰는 모든 작업을 관리
        • 프로그램이 파일을 열거나 닫을 때, 커널은 파일 시스템과의 상호작용을 통해 그 작업을 수행
      5. 디바이스 드라이버 관리
        • 커널은 각종 하드웨어 장치(Ex. 프린터, 키보드, 네트워크 카드 등)와의 통신을 담당하는 디바이스 드라이버(Device Driver)를 통해 하드웨어와 상호작용
        • 이를 통해, 사용자가 특정 하드웨어를 별도로 조작하지 않아도 프로그램이 하드웨어를 쉽게 제어할 수 있음
      6. 네트워크 관리
        • 커널은 네트워크 인터페이스를 통해 외부와의 통신을 가능하게 함
        • TCP/IP 같은 프로토콜 스택을 관리하여 데이터가 올바르게 송수신되도록 처리
        • 여러 네트워크 장비와의 통신, 라우팅, 방화벽 등의 네트워크 기능도 커널이 담당
      7. 보안 및 권한 관리
        • 커널은 사용자의 권한을 관리하고, 시스템 리소스에 접글할 때 필요한 권한을 검증
        • 시스템 보안을 유지하기 위해 각 사용자 및 프로세스가 불필요하게 시스템 자원에 접근하는 것을 막음
    • 리눅스 배포판
      • 리눅스 커널 위에 다양한 패키지들을 조합하여 배포된 운영체제
      • 배포판마다 사용하는 패키지 관리자, 기본 설정, 그리고 추가 기능이 다름
      • 사용 목적에 다라 선택하는 배포판이 다르며, 서버, 데스크탑, 임베디드 시스템 등 다양하게 사용
      1. 레드햇 계열
        • 전 세계적으로 가장 유명한 배포판 중 하나가 레드햇(Red Hat)사에서 제작한 ‘레드햇 리눅스(Red Hat Linux)’
        • 유로로 판매되는 레드햇 엔터프라이즈 리눅스(Red Hat Enterprise Linux, RHEL)
        • 공개된 RHEL의 소스코드를 그대로 가져와서, 로고만 변경한 후에 다시 컴파일(또는 빌드)해서 만든 것을 ‘레드햇 클론 리눅스’라 부름
        • RHEL 8까지는 CentOS가 대표적이었으나, 현재는 AlmaLinux와 Rocky Linux가 대표적
          • ~ 업데이트 된 기능 미리 보는 곳: Fedora가 될 것이고, CentOS Stream에서 확인하는 용으로 서버 관리자가 이용 가능
        1. Fedora
          • Fedora Linux는 페도라 프로젝트 (Red Hat사가 후원)가 개발하는 리눅스
          • Red Hat사에서는 실험적인 기술을 Fedora Linux에 먼저 적용시킨 후 어느 정도 안정화되면 RHEL에 포함시키고 있음
          • 현재의 Fedora Linux는 RHEL의 베타 버전 성격에 가까움
          • RHEL 8은 Fedora 28을 기반으로, RHEL 9는 Fedora 34를 기반으로 제작됨
          • 2003년 11월을 Fedora Core 1 시작으로 6개월마다 새 버전을 출시하고 있음
        2. CentOS
          • 그레고리 커처가 2002년에 설립한 CentOS 프로젝트에서 개발한 리눅스 배포판
          • RHEL의 대표적인 클론 리눅스로 RHEL의 소스를 그대로 컴파일해서 무료로 배포
          • 기업에서는 여유 자본이 있다면 RHEL을 구매해서 사용하고, 비용을 절감하고 싶다면 CentOS를 사용하면 됨
          • Red Hat에 인수된 후, CentOS 8을 마지막으로 CentOS Stream으로 전환함
          • CentOS Stream은 RHEL의 베타 버전으로 생각됨
        3. Rocky Linux
          • CentOS 제작 중단 발표에 반발해, 그레고리 커처가 Rocky Linux를 시작함
          • RHEL의 소스를 컴파일해 2021년 6월부터 Rocky Linux 8.x 배포
          • 2022년 7월 14일에 Rocky Linux 9.0을 배포
          • RHEL 9과 ROcky Linux 9은 완전히 동일한 제품
        4. Amazon Linux
          • AWS에서 제공하는 맞춤형 리눅스 배포판
          • AWS 환경에 최적화 EC2 인스턴스에서 기본적으로 제공
          • 가볍고 성능이 뛰어나며, AWS 서비스와의 통합이 용이
          • CentOS와 같은 Red Hat 계열의 리눅스를 기반으로 만들어 졌음
            • 아마존 리눅스는 Red Hat 계열의 리눅스 배포판인 RPM 패키지 매니저를 사용
            • YUM(Yellowdog Updator, Modified)을 통해 패키지 설치 및 관리를 수행
          • 아마존 리눅스의 초기 버전은 CentOS와 유사한 구조를 가지고 있었지만, 이후 아마존에서 자체적으로 커스터마이징을 거쳐, AWS 환경에 최적화된 독자적인 배포판으로 발전
      2. 데이반 계열
        • Ubuntu
          • 가장 널리 사용되는 배포판 중 하나로, 사용하기 쉬운 인터페이스와 광범위한 패키지 지원
          • 데스크탑 뿐만 아니라 서버 운영체제로도 많이 사용됨
          • LTS(Long Term Support)버전은 5년동안 안정적인 보안 업데이트를 제공
          • AWS EC2
            • : Ubuntu는 AWS에서 많이 사용되며, 최신 버전과 LTS버전 둘 다 EC2 인스턴스로 제공됨
      3. 슬랙웨어 계열
728x90

'02. Linux & AWS' 카테고리의 다른 글

06. FTP  (0) 2024.10.27
05. 소프트웨어 관리  (2) 2024.10.27
04. 프로세스 관리  (1) 2024.10.27
03. 링크 & 셸  (0) 2024.10.20
02. AWS EC2 설정, Linux 기본 명령어, 사용자&그룹  (0) 2024.10.20