제1장 Linux Overview
1.1 Linux 운영체제의 역사
오픈 소스 기반의 운영체제로서 여러 분야에서 각광 받기 시작한 리눅스는 GNU의 GPL(General Public License) 기반의 무료 소프트웨어 개념을 지원하는 운영체제이다.
여러 리눅스 공동체의 활성화와 특히 FSF(Free Software Foundation)의 GNU 프로젝트 및 각 산업체 콘소시움 또는 국가에서 지원하는 수 많은 공개 소프트웨어 프로젝트들을 통해 많은 무료 소프트웨어의 지원과 다양한 하드웨어 지원의 특징을 가지고 있는 리눅스는 서버 및 임베디드 시스템 분야 에서의 약진을 발판 삼아 데스크톱 영역의 진출까지 도모하고 있다.
1.2 리눅스 운영체제의 특징
1) 다중 사용자 시스템(Multi User System)
서버 및 데스크톱 환경에서 다중 사용자의 응용 프로그램의 수행 환경 제공
사용자들의 응용은 보호(protection) 모드가 동작하는 사용자 모드에서 실행되어 커널과 사용자 프로그램 상호 간의 침범에 의한 오동작이 방지된다.
다중 사용자는 로그인의 과정을 거쳐 시스템에 접근할 수 있으며, 일반 사용자의 응용 프로그램의 수행에 대한 권한은 보호 시스템에 의해 제한된다.
2) 프로세스 및 쓰레드 기반의 다중 태스킹(multi-tasking)
프로세스(process)와 쓰레드(thread) 수준의 선점형(preemption) 다중 태스킹(multi-tasking)을 제공한다.
* 선점형 멀티 태스킹 preemptive multitasking
다른 작업에게 운영체제를 사용할 기회를 주기 전에, 한 작업에 얼마나 오랫동안 작업 시간을
할당할 것 인지를 결정하는데 있어서, 어떤 기준을 사용하는 멀티태스킹이다.
프로세스는 fork 시스템 호출로 생성되는 전통적 유닉스의 중량급 프로세스(heavy weight process)이고,
쓰레드는 텍스트 및 자료 영역을 공유하는 경량급 프로세스(light weight process)로서 시스템의 측면 및 응용 프로그램의 측면에서 다중 프로세스 또는 다중 쓰레드 프로그램이 가능하다.
쓰레드 프로그래밍을 위해서는 LSB 표준의 Pthread 실행을 위한 Pthread 라이브러리가 주로 사용된다.
3) 선점 및 비 선점 스케줄링
실행되는 일반 다중 프로세스나 쓰레드들에 대해서는 CPU 독점 방지와 형평성을 위해 선점(preemptive) 스케줄링 SCHED_OTHERS가 제공된다. 실시간 프로세스 및 쓰레드를 위해서는 선점 스케줄링인 SCHED_RR와 비선점 스케줄링인 SCHED_FIFO 정책들이 제공된다.
즉 SCHED_OTHERS와 SCHED_RR은 타임 슬라이스(Time slice)가 적용되는 시분할 스케줄링이다. SCHED_OTHERS가 적용되는 일반 태스크에는 시스템의 효율적 운용을 위해 동적 우선순위가 적용되고, 실시간 태스크에는 고정 우선순위 기법이 적용된다.
4) 다중 CPU 환경의 제공(SMP와 NUMA)
다중 프로세스나 쓰레드 환경의 효율성을 높이기 위해 대칭형 다중 처리(SMP, Symmetric Multi Processor) 형태와, NUMA(Non-Uniform Memory Access) 형태의 다중 CPU 시스템을 지원한다. 또한 CPU 1개 당 2개 CPU의 효과를 발휘하는 hyper-threading도 지원한다.
5) 하드웨어에 대한 높은 이식성
리눅스 커널의 코드 중, 하드웨어에 종속적인 부분이 매우 작고, 이러한 부분들도 하드웨어 독립적인 부분과 잘 분리되어 있어 이종 하드웨어의 이식이 쉽다. 또한, 넓은 개발 층을 바탕으로 다양한 하드웨어를 지원한다.
6) 가상 메모리(Virtual Memory) 시스템 지원
실제의 물리적 메모리 공간보다 매우 큰 프로그램을 실행시킬 수 있는 가상 메모리 환경을 제공한다.
demand-paging, page-caching, swap-caching, copy-on-write, pre-loading 등의 가상 메모리 관리 기법을 사용하여 효율적인 메모리 환경을 제공한다.
7) 가상 파일 시스템(Virtual File System)
한 시스템에서 여러 가지 운영체제의 파일 시스템을 사용할 수 있는 가상 파일 시스템을 제공한다.
이러한 파일 시스템에는 보호 시스템이 적용되어 파일의 접근 권한, 실행 권한 등이 통제된다.
또한, 파일을 메모리로 사상하여 편리하게 사용할 수 있는 메모리 사상 파일 시스템도 제공된다.
리눅스의 파일 시스템은 자기 디스크뿐만 아니라, 다양한 저장 매체에 대해서도 같은 인터페이스의 파일 시스템을 제공한다.
8) Dynamic cache
buffer cache, page cache 등의 소프트웨어적 캐시 기법을 사용하여 파일 입출력, 가상 메모리의 요구 페이징(demand paging)이나 스와핑(swapping)에서 발생하는 디스크 입출력을 최소화한다.
9) Shared libraries(ELF)
메모리 활용을 극대화 하기 위해 여러 프로세스가 사용하는 같은 라이브러리 함수들을 메모리에 한 카피(copy)만 적재하고 공유할 수 있는 공유 라이브러리 기능을 제공한다.
10) 네트워킹(Networking)
TCP/IP, UDP/IP, SLIP, PPP 등 다양한 통신 프로토콜과 다양한 통신 장치를 위한 하위 드라이버들을 제공한다. 또한 웹 서버, FTP 서버, NFS 서버, 프린터 서버, 팩스 서버, 디렉토리 서버, 뉴스 서버 등, 네트워크 환경에서 다양한 서비스를 제공한다. 또한 VPN 장치, 라우터 등의 통신 장치로 사용하기 위한 기본 기능들을 제공한다.
11) 기반 언어 GNU C
리눅스 자체는 GNU C를 기반으로 작성되어 있다. 사용자는 기본적으로 GNU C 컴파일러와 C++ 컴파일러인 gcc, g++ 등을 사용할 수 있다. 그 외에도 대부분의 프로그래밍 언어에 대한 컴파일러가 제공된다.
12) Part of POSIX 1003.1-2001, BSD, SysV 표준에 정의된 대부분의 기능을 제공한다.
13) 다양한 실행 파일 포맷(ELF, a.out 등) 을 제공한다.
14) 국제적 키보드와 폰트를 제공한다.
15) 풍부한 응용 프로그램(서버, 데스크 탑, 임베디드)
16) 다양한 배포판 : 레드헷, 데비안, 우분투, 등
17) 오픈 소스 소프트웨어 : 라이선스 요금이 무료
'Linux' 카테고리의 다른 글
프로세스와 쓰레드 (0) | 2015.12.19 |
---|---|
리눅스 활용을 위한 기본 지식 (0) | 2015.12.19 |
01 서론 (0) | 2015.08.18 |
System Mangement (0) | 2015.01.27 |
Shall Script (0) | 2015.01.26 |