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)도 운영체제가 제공하는 사용자 인터페이스 중 하나
- ~한 줄 단위로 명령을 하면 운영체제에서 바이너리 데이터 처리해서 명령 동작
- : 터미널이나 명령줄 인터페이스(CLI)도 운영체제가 제공하는 사용자 인터페이스 중 하나
- 보안 및 권환 권리
- 운영체제는 사용자의 데이터를 안전하게 보호
- 시스템 자원을 사용할 수 있는 사람이나 프로그램에 대한 권한을 관리
- 외부의 악성 프로그램으로부터 시스템을 보호하는 역할도 운영체제의 중요한 기능
- 하드웨어 관리
- 운영체제의 구성요소
- 커널: 시스템의 핵심 기능을 담당
- 성능의 차이는 Kernel의 차이로 발생
- 파일 시스템: 데이터 저장 및 관리
- 디바이스 드라이버: 하드웨어와의 통신
- 시스템 호출: 운영체제 서비스 접근
- 인터페이스: 사용자와의 상호작용
- 커널: 시스템의 핵심 기능을 담당
- 대표적인 운영체제의 종류
- Windows
- 전 세계에서 가장 많이 사용하는 운영체제 중 하나
- 사용하기 쉬운 그래픽 인터페이스로 인해 많은 사람들이 PC에서 사용
- macOS
- 애플의 컴퓨터에서 사용하는 운영체제
- 사용자 UX와 애플의 하드웨어와 최적화되어 있고, 안정성과 성능이 뛰어남
- Unix 운영체제에서 파생
- Android/iOS
- 모바일 기기를 위한 운영체제
- 안드로이드는 구글에서 개발한 운영체제로 스마트폰과 태플릿에 사용, Linux 기반 iOS는 애플의 아이폰과 아이패드에서 사용
- Windows
- 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 입장에서 서버 판매사에 의존성이 너무 높아진다.
- ~ 고성능, 중요한 서버 등에 지금도 사용
- → 자사 서버에 자체 UNIX를 설치해서 제품을 판매 & 기술 지원을 하여
- 리눅스의 정의
- 리눅스(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 버전을 내놓으면서 인터넷에 소스코드를 공개, 이것이 리눅스의 시초
- 통상적인 리눅스는 토르발스가 만든 커널에 컴파일러, 셸, 기타 프로그램이 조합된 배포판
- 배포판은 전 세계적으로 수백 가지가 넘지만 모두 토르발스가 제작한 커널을 사용
- 하드웨어와 소프트웨어 간의 중재자
- 커널은 CPU, 메모리, 네트워크 장비 등과 같은 컴퓨터의 하드웨어 자원을 관리
- 애플리케이션이 실행되면 커널은 하드웨어 자원을 효율적으로 사용할 수 있도록 할당하고 관리
- ~OS에서 CPU를 관리하는데, CPU의 Core/Processor 등을 사용하지 못하면 무용지물이기에 → Kernel에서 스케줄링을 담당하면서 기능을 사용할 수 있게 되었다.
- Ex. 프로그램이 데이터를 저장하려 할 때, 커널이 하드 디스크와의 상호작용을 처리한다
- 프로세스 관리
- 커널은 동시에 실행되는 여러 프로그램(프로세스)을 관리
- 각 프로세스가 CPU 시간을 적절히 나눠 가질 수 있도록 스케줄링(Scheduling)을 담당
- 만약 여러 개의 프로세스가 동시에 실행 중일 때 커널은 어떤 프로세스가 우선순위를 가져야 할 지 판단하고, 각 프로세가 시스템 리소스를 공평하게 사용할 수 있도록 관리
- 메모리 관리
- 컴퓨터의 메모리는 제한적이므로 커널은 메로리 사용을 최적화하는 역할
- 커널은 각 프로그램이 사용할 수 있는 메모리를 할당하고, 사용하지 않는 메모리는 해제하여 다른 프로그램이 사용할 수 있도록 처리
- 필요 시, 커널은 하드디스크를 임시 메모리로 사용하는 가상 메모리(Virtual Memory) 기능도 제공
- 파일 시스템 관리
- 리눅스 커널은 다양한 파일 시스템을 지원
- 파일을 읽고 쓰는 모든 작업을 관리
- 프로그램이 파일을 열거나 닫을 때, 커널은 파일 시스템과의 상호작용을 통해 그 작업을 수행
- 디바이스 드라이버 관리
- 커널은 각종 하드웨어 장치(Ex. 프린터, 키보드, 네트워크 카드 등)와의 통신을 담당하는 디바이스 드라이버(Device Driver)를 통해 하드웨어와 상호작용
- 이를 통해, 사용자가 특정 하드웨어를 별도로 조작하지 않아도 프로그램이 하드웨어를 쉽게 제어할 수 있음
- 네트워크 관리
- 커널은 네트워크 인터페이스를 통해 외부와의 통신을 가능하게 함
- TCP/IP 같은 프로토콜 스택을 관리하여 데이터가 올바르게 송수신되도록 처리
- 여러 네트워크 장비와의 통신, 라우팅, 방화벽 등의 네트워크 기능도 커널이 담당
- 보안 및 권한 관리
- 커널은 사용자의 권한을 관리하고, 시스템 리소스에 접글할 때 필요한 권한을 검증
- 시스템 보안을 유지하기 위해 각 사용자 및 프로세스가 불필요하게 시스템 자원에 접근하는 것을 막음
- 리눅스 배포판
- 리눅스 커널 위에 다양한 패키지들을 조합하여 배포된 운영체제
- 배포판마다 사용하는 패키지 관리자, 기본 설정, 그리고 추가 기능이 다름
- 사용 목적에 다라 선택하는 배포판이 다르며, 서버, 데스크탑, 임베디드 시스템 등 다양하게 사용
- 레드햇 계열
- 전 세계적으로 가장 유명한 배포판 중 하나가 레드햇(Red Hat)사에서 제작한 ‘레드햇 리눅스(Red Hat Linux)’
- 유로로 판매되는 레드햇 엔터프라이즈 리눅스(Red Hat Enterprise Linux, RHEL)
- 공개된 RHEL의 소스코드를 그대로 가져와서, 로고만 변경한 후에 다시 컴파일(또는 빌드)해서 만든 것을 ‘레드햇 클론 리눅스’라 부름
- RHEL 8까지는 CentOS가 대표적이었으나, 현재는 AlmaLinux와 Rocky Linux가 대표적
- ~ 업데이트 된 기능 미리 보는 곳: Fedora가 될 것이고, CentOS Stream에서 확인하는 용으로 서버 관리자가 이용 가능
- 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개월마다 새 버전을 출시하고 있음
- CentOS
- 그레고리 커처가 2002년에 설립한 CentOS 프로젝트에서 개발한 리눅스 배포판
- RHEL의 대표적인 클론 리눅스로 RHEL의 소스를 그대로 컴파일해서 무료로 배포
- 기업에서는 여유 자본이 있다면 RHEL을 구매해서 사용하고, 비용을 절감하고 싶다면 CentOS를 사용하면 됨
- Red Hat에 인수된 후, CentOS 8을 마지막으로 CentOS Stream으로 전환함
- CentOS Stream은 RHEL의 베타 버전으로 생각됨
- Rocky Linux
- CentOS 제작 중단 발표에 반발해, 그레고리 커처가 Rocky Linux를 시작함
- RHEL의 소스를 컴파일해 2021년 6월부터 Rocky Linux 8.x 배포
- 2022년 7월 14일에 Rocky Linux 9.0을 배포
- RHEL 9과 ROcky Linux 9은 완전히 동일한 제품
- Amazon Linux
- AWS에서 제공하는 맞춤형 리눅스 배포판
- AWS 환경에 최적화 EC2 인스턴스에서 기본적으로 제공
- 가볍고 성능이 뛰어나며, AWS 서비스와의 통합이 용이
- CentOS와 같은 Red Hat 계열의 리눅스를 기반으로 만들어 졌음
- 아마존 리눅스는 Red Hat 계열의 리눅스 배포판인 RPM 패키지 매니저를 사용
- YUM(Yellowdog Updator, Modified)을 통해 패키지 설치 및 관리를 수행
- 아마존 리눅스의 초기 버전은 CentOS와 유사한 구조를 가지고 있었지만, 이후 아마존에서 자체적으로 커스터마이징을 거쳐, AWS 환경에 최적화된 독자적인 배포판으로 발전
- 데이반 계열
- Ubuntu
- 가장 널리 사용되는 배포판 중 하나로, 사용하기 쉬운 인터페이스와 광범위한 패키지 지원
- 데스크탑 뿐만 아니라 서버 운영체제로도 많이 사용됨
- LTS(Long Term Support)버전은 5년동안 안정적인 보안 업데이트를 제공
- AWS EC2
- : Ubuntu는 AWS에서 많이 사용되며, 최신 버전과 LTS버전 둘 다 EC2 인스턴스로 제공됨
- Ubuntu
- 슬랙웨어 계열
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 |