CH.1 리눅스의 개요
1. 운영체제의 개요
1-1. 운영체제의 이해
* 운영체제의 특징
- 커널, 미들웨어, 응용 프로그램 실행 환경과 사용자 인터페이스 프레임워크를 모두 포괄하여 정의될 수 있음
- 운영체제의 처리방식은 일괄 처리 시스템 -> 다중 프로그래밍 시스템 -> 실시간 시스템 -> 시분할 처리 시스템 -> 분산처리 시스템 -> 다중 처리 시스템
- 스마트폰과 태블릿에 설치되는 모바일 운영체제, 웹 브라우저만 있으면 사용 가능한 웹 운영체제도 사용되고 있음
- 최근의 운영체제는 유휴 자원의 효율적 활용을 위해 가상화 기술을 기본적으로 내장하거나 커널 단에서 지원하고 있음
1) 운영체제의 주요 역할
- HW 제어, 사용자들 간에 HW 자원을 공유
- 스케줄링을 통해 자원의 효율적 사용
- I/O 용이
- 오류 방지/복구
- 편리한 사용자 인터페이스 제공
- 강력한 네트워크와 가상화 기술을 지원
- 모바일 OS가 보편화되었음
- 비간섭
2) 운영체제 유형
- 다중 교환(Multi-switching) : 다수의 작업이 동시 실행. 포그라운드 프로그램만 동작
- 단일 작업(Single-tasking) : 한 번에 하나의 작업만 처리
- 다중 작업(Multi-tasking) : 여러 개의 작업을 동시에 수행
- 다중 사용자(Multi user) : 단일 프로세서에서 여러 사용자의 프로그램이 실행
- 대화형 처리(Interactive Processing) : 대화형으로 작업을 처리 (시분할 처리 기능 필요)
- 일괄 처리(Batch Processing) : 여러 개의 작업을 묶어 한 번에 처리
- 실시간 처리(Real Time Processing) : 작업의 처리가 지연없이 즉각적으로 처리
- 분산 처리(Distributed Processing) : 여러 시스템을 연결하여 작업을 나누어 처리
3) 시스템 성능을 나타내는 4가지 요소
- 처리 능력(Throughput) : 단위 시간당 처리 능력
- 반환 시간(Turnaround Time) : 작업이 제출되어 결과를 얻을 때까지의 총 소요시간
- 신뢰도(Reliability) : 시스템이 얼마나 정확하게 작동되는지를 나타냄
- 사용 가능도(Availability) : 시스템에서 곧 사용할 수 있는 정도를 나타냄
4) 가상메모리
- 하드디스크의 일부를 메모리(RAM)처럼 사용하는 것
- 하드디스크에서 가상메모리로 쓰이는 영역을 스왑 영역(swap space)이라고 함
- 스와핑(Swapping) : 메모리와 하드디스크 사이의 데이터 교환
5) 페이지 교체 알고리즘
- FIFO(First In First Out) : 먼저 적재된 페이지를 제거하는 알고리즘
- LRU(Least Recently Used) : 가장 오랫동안 참조되지 않은 페이지를 제거하는 알고리즘
- LFU(Least Frequently Used) : 최근에 가장 적게 사용된(참조된) 페이지를 제거하는 알고리즘
- NUR(Not Used Recently) : 참조비트와 변형비트를 사용하여 가장 오랫동안 참조되지 않은 페이지를 제거하는 알고리즘(LRU 알고리즘의 변형)
- SCR(Second Chance Replacement) : FIFO 알고리즘의 단점을 보완한 알고리즘, 참조비트로 한 번의 기회를 더 부여하는 알고리즘
1-2. 운영체제의 종류
* 리눅스 기반 운영체제
: Tizen, webOS, GENIVI
* Limo : 리눅스 기반 모바일 운영체제, 리모재단 개발
* QNX : 유닉스 계열의 서버 운영체제
* 리눅스
: 최근 리눅스 운영체제는 SSD(Solid State Drive)를 지원함
: 이더넷 등 대부분의 네트워크 인터페이스를 지원함
: 대부분 리눅스 배포판에서는 인텔사의 x86 계열 CPU를 기본적으로 지원함
: 다른 운영체제에 비해 이식성, 확장성 등이 뛰어나지만, 특정 하드웨어에 설치가 어렵고 모든 플랫폼에서 작동하지는 않음
: 서버, 개발용, PC용 등 다양한 목적으로 사용할 수 있고, 이에 따른 다양한 배포판이 존재하며, 유료/무료 버전이 존재함
: 저널링 파일시스템을 지원함
: 단일형 커널
1) 리눅스의 특징
- CPU 최적화 : 인텔 CPU 뿐만 아니라 AMD와 Cyrix CPU에도 최적화되어 있음
- 뛰어난 네트워킹 : TCP/IP 뿐만 아니라 IPX/SPX, SLIP, PPP 등의 여러 네트워킹 프로토콜을 지원
- 뛰어난 이식성/확장성 : 다른 OS에 비해 이식성, 확장성이 뛰어남
- 6개의 가상 콘솔 제공 : 하나의 모니터를 장착한 시스템에서 기본적으로 6개의 가상 콘솔을 제공
- 효율적인 가상메모리
2) 리눅스의 기술적인 특징
- 파이프
: 특정 프로세스의 표준 출력을 다른 프로세스의 표준 입력으로 쓰이게 하는 것으로 대표적인 프로세스 간 통신 기술
- 스와핑
: 프로그램 실행 시 메모리의 공간이 부족하면 가상메모리를 설정하여 메모리와 하드디스크 사이의 데이터 교환을 통해 새로운 프로그램을 실행시킬 수 있게 함
- 리다이렉션
: 표준 스트림의 입력과 출력의 방향을 다른 곳으로 바꿈
- 라이브러리
: 특정한 코드(함수/클래스) 포함하고 있는 컴파일된 파일
: 프로그램에서 특정한 기능을 하는 루틴들을 모아놓은 것으로 효율적인 메모리 사용뿐만 아니라 디스크 관리에도 유용
- 가상 콘솔
: 리눅스 운영체제에서 사용할 수 있는 가상 모니터로 한 컴퓨터에서 여러 개의 텍스트 콘솔을 실행할 수 있음
2. 리눅스 기초
2-1. 리눅스의 철학
1) GNU 프로젝트
- GNU : Gnu is Not Unix 라는 뜻의 재귀적 약어
- 유닉스 호환 자유 소프트웨어들을 개발하는 프로젝트
- GNU 소프트웨어에는 gcc, emacs, Bash 쉘, GNOME 등이 있음
2) GPL(General Public License)
- FSF에 의해 만들어진 특별한 오픈소스 라이선스, “카피레프트(copyleft)”
- FSF(Free Software Foundation, 자유 소프트웨어 재단)
: 리차드 스톨만이 설립한 비영리 조직
- 주요 특징
: 해당 프로그램을 마음대로 배포 복사, 소스코드 수정이 가능
: GPL 프로그램의 소스코드를 수정해 만든 프로그램 또한 GPL을 가짐
: 다른 소프트웨어와의 완전한 통합은 해당 소프트웨어가 GPL을 수용한다는 조건하에서만 허용
(독점 소프트웨어와 결합이 불가능)
: 독점 소프트웨어와 결합 시 해당 영역의 소스를 공개해야 함
: 수정한 소스코드 및 GPL 소스코드 사용 시 모두 GPL로 공개
3) LGPL(Lesser General Public License)
- GPL의 조건을 완화시킨 라이선스 (GPL 특징 중 전염성을 완화)
- LGPL 프로그램의 소스코드를 이용하여 만든 프로그램을 판매 배포 시 프로그램 소스 공개 의무가 없고 LGPL 소스코드를 사용했음을 명시하면 됨. 하지만 수정한 경우는 전체 코드를 공개해야 함
- 독점 소프트웨어와 결합이 가능함
- LGPL 소스코드를 단순 라이브러리 이상으로 사용하는 경우에 소스코드 공개
4) BSD(Berkeley Software Distribution) 라이선스
- BSD 계열 소프트웨어에 적용되는 오픈소스 라이선스
- 주요 특징
: 소스코드 공개의 의무가 없음
: 저작권자 표기. BSD 라이선스의 소프트웨어를 이용하는 경우, 해당 저작권자의 이름과 BSD 라이센스의 내용을 같이 배포해야 함
: 독점 소프트웨어와 결합 시 원래 소스의 저작권자와 관련 사항을 표기하면 소스 공개 의무는 없음
5) Apache License (제약 : 하)
- 누구든 자유롭게 부분 혹은 전체를 개인적 또는 상업적 목적으로 이용 가능
- 또한, 재배포 시에도 소스코드 또는 수정한 소스코드를 포함하여 반드시 공개할 필요 없음
- 다만, 재배포할 경우에 해당 라이센스를 포함시키고 관련 소프트웨어임을 밝혀야 함
- 대표적인 프로그램 : Hadoop, Tomcat 등
6) MIT (제약 : 하)
- 소스코드 공개의무 없음
- X 윈도 시스템
7) MPL (제약 : 중)
- 수정한 소스코드 MPL 라이센스로 공개
- 소스코드는 MPL로 공개, 제작자에게 수정 사실 알려야 함
- 파이어폭스
8) GNU/FSF에서 규정한 자유 소프트웨어 조건
- 프로그램을 어떠한 목적으로도 실행할 수 있는 자유
- 프로그램의 작동 원리를 연구하고 이를 자신의 필요에 맞게 수정할 수 있는 자유
- 이웃을 돕기 위해서 프로그램을 복제하고 배포할 수 있는 자유
- 프로그램을 향상시키고 이를 공동체 전체의 이익을 위해서 다시 환원시킬 수 있는 자유
2-2. 리눅스의 역사
- Kail Linux
: 시스템 보안을 공부하기 위해 해킹 및 보안도구가 많이 내장된 리눅스 배포판을 사용하고자 함
- MINUX(미닉스)
: 앤드류 스튜어트 타넨바움이 개발
- UNIX(유닉스)
: 켐 톤슨 개발
- 리눅스 토발즈 : 리눅스 커널과 깃을 최초로 개발
- 리처드 스톨먼 : GNU 프로젝트 및 자유 소프트웨어 재단 설립자
- 데니스리치 : C와 유닉스의 개발자
* 배포된 리눅스의 순서
- 1992 : SLS
- 1993 : Slackware, Debian
- 1994 : SUSE, RedHat
- 2003 : CentOS
- 2004 : Ubuntu
1) 리눅스 배포판의 종류
- 레드햇(RedHat)
: RPM 기반으로 제작된 리눅스 배포판
: 현재는 기업용 배포판으로 상업적으로 배포하고 있으며 무료 버전으로는 페도라가 있음
: 레드햇 계열 리눅스 배포판 : CentOS, Scientific Linux, Oracle Linux
- 페도라(Fedora)
: RPM 기반. 레드햇 계열
: 레드햇의 지원을 받아 개발 및 유지보수가 이루어짐
: 페도라의 업데이트 후에 문제점을 파악하여 레드햇 리눅스(RHEL)에 업데이트를 반영하는 방식으로 운영되고 있음
- 데비안(Debian)
: GNU의 후원을 받는 리눅스 배포판
: 패키지 설치 및 업그레이드가 단순함(패키지 관리 - dpkg, apt)
: 데비안 계열 리눅스 배포판 : 우분투, Linux Mint, Elementary OS
- 우분투(Ubuntu)
: 데비안 계열
: 영국 회사인 캐노니컬의 지원을 받음
: 유니티(Unity)라는 고유한 데스크톱 환경을 사용
- 슬랙웨어(Slackware)
: 초창기에 나온 배포판으로 현재까지 살아있는 가장 오래된 배포판
: 패트릭 볼커딩에 의해 만들어짐
: 구조가 간결하지만 설치과정이 어렵고 패키지 관리가 어려워 많이 사용되지는 않음
: 슬랙웨어 계열 리눅스 배포판 : Vector Linux
- 오픈 수세(open SUSE)
: 대표 기능으로 YaST 유틸리티가 있음 (오프라인)
: 여러가지 데스크탑 환경(KDE, GNOME 등)의 버전이 있으며, KDE 판이 가장 유명함
- 맨드레이크(Mandrake)
: RPM 기반
: 단순함을 추구하며 다양한 데스크탑 환경을 제공함
: 우리나라의 리눅스 배포판
: SU Linux, 안녕 리눅스 아시아눅스 등
- Chrome OS
: 구글에서 개발한 리눅스 기반 OS
: 인터페이스는 웹 브라우저인 크롬과 비슷함
2) 리눅스 커널이 사용된 모바일 OS
- 안드로이드(Android)
: C /C++ 라이브러리들을 포함하는 오픈소스 플랫폼
: 가상머신은 Java 가상머신이 아니라 구글에서 자체 개발한 달빅(Dalvik) 가상머신을 사용
- 바다(Bada) OS
: 삼성에서 개발한 리눅스 커널 기반의 OS
: 미고(MeeGo)와 리모(LiMo)가 통합된 타이젠(Tizen)과 통합되었음
- 타이젠(Tizen) OS
: 삼성과 인텔의 주축으로 개발된 오픈소스 OS
: HTML5 기반으로 만들어졌으며, 자바스크립트 CSS와 같은 웹 표준을 지원
해당 블로그를 참고하여 정리했습니다.
'자격증 & 공부 > 리눅스마스터 1급' 카테고리의 다른 글
[리눅스마스터1급 - 1차] 2과목 - 4-2. 파일시스템 관리 (1) | 2024.06.13 |
---|---|
[리눅스마스터1급 - 1차] 2과목 - 4-1. 사용자 관리 (0) | 2024.06.13 |
[리눅스마스터1급 - 1차] 1과목 - 3-2. 네트워크의 이해 (0) | 2024.06.13 |
[리눅스마스터1급 - 1차] 1과목 - 3-1. 네트워크 기초 (0) | 2024.06.13 |
[리눅스마스터1급 - 1차] 1과목 - 2. 리눅스 시스템의 이해 (1) | 2024.06.13 |