Chap1 Linux Overview

Similar documents
Microsoft PowerPoint - 01_Overview

Microsoft PowerPoint - chap01-C언어개요.pptx

제1장 Unix란 무엇인가?

Microsoft PowerPoint - 00_(C_Programming)_(Korean)_Computer_Systems

PowerPoint 프레젠테이션

Unix & Linux 개요 Company 서울대학교통계학과 2010년 2학기컴퓨터의개념및실습 ( Thanks to: cancho & facewhite from SPARC/KAIST, Bruce La Plante fro

Windows 8에서 BioStar 1 설치하기

Microsoft PowerPoint - 권장 사양

lecture01

[Brochure] KOR_TunA

歯J PDF

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

슬라이드 1

Microsoft PowerPoint - 02_Linux_Fedora_Core_8_Vmware_Installation [호환 모드]

untitled

리눅스 프로세스 관리

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.


PowerPoint 프레젠테이션

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

Raspbian 설치 라즈비안 OS (Raspbian OS) 라즈베리파이 3 Model B USB 마우스 USB 키보드 마이크로 SD 카드 마이크로 SD 카드리더기 HDM I 케이블모니터

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

Contributors: Myung Su Seok and SeokJae Yoo Last Update: 09/25/ Introduction 2015년 8월현재전자기학분야에서가장많이쓰이고있는 simulation software는다음과같은알고리즘을사용하고있다.

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

SIGIL 완벽입문

Studuino소프트웨어 설치

Cisco FirePOWER 호환성 가이드

ESP1ºÎ-04

쉽게 풀어쓴 C 프로그래밍

Cloud Friendly System Architecture

1 처리능력 (Throughput) : 일정시간내에시스템이처리하는일의양 2 반환시간 (Turnaround time) : 시스템에작업을의뢰한시간부터처리가완료될때까지걸리는시간 3 사용가능도 (Availability) : 시스템을사용할필요가있을때즉시사용가능한정도 4 신뢰도

Microsoft PowerPoint - 03.OS.pptx

52 l /08

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

3차시.ppt

Level 학습 성과 내용 1수준 (이해) 1. 기본적인 Unix 이용법(명령어 또는 tool 활용)을 습득한다. 2. Unix 운영체계 설치을 익힌다. 모듈 학습성과 2수준 (응용) 1. Unix 가상화 및 이중화 개념을 이해한다. 2. 하드디스크의 논리적 구성 능력

Microsoft PowerPoint - 01_Linux_Introduction.ppt [자동 저장]

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

PowerPoint 프레젠테이션

Microsoft Word - Korean_뷰어 메뉴얼_공용_ADVR&SWi_.doc

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

비디오 / 그래픽 아답터 네트워크 만약에 ArcGolbe를 사용하는 경우, 추가적인 디스크 공간 필요. ArcGlobe는 캐시파일을 생성하여 사용 24 비트 그래픽 가속기 Oepn GL 2.0 이상을 지원하는 비디오카드 최소 64 MB 이고 256 MB 이상을 메모리

<464B4949B8AEC6F7C6AE2DC0AFBAF1C4F5C5CDBDBABBEABEF7C8AD28C3D6C1BE5FBCD5BFACB1B8BFF8BCF6C1A4292E687770>


C 언어와 프로그래밍 개요

Microsoft PowerPoint APUE(Intro).ppt

Windows 10 General Announcement v1.0-KO

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i postfix spf-filter 년 6 월

컴퓨터관리2번째시간

Microsoft Word - src.doc

서현수

네이버블로그 :: 포스트내용 Print VMw are 에서 Linux 설치하기 (Centos 6.3, 리눅스 ) Linux 2013/02/23 22:52 /carrena/ VMware 에서 l

H3250_Wi-Fi_E.book

< FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770>

PowerPoint 프레젠테이션

라우터

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Visual Studio online Limited preview 간략하게살펴보기

Microsoft Word - PLC제어응용-2차시.doc

Microsoft PowerPoint - linux intro.pptx

<4D F736F F F696E74202D E20BFEEBFB520C3BCC1A6BFCD20C0CEC5CDC6E4C0CCBDBA2E707074>

Agenda 오픈소스 트렌드 전망 Red Hat Enterprise Virtualization Red Hat Enterprise Linux OpenStack Platform Open Hybrid Cloud

SANsymphony-V

PowerPoint Presentation

슬라이드 1

ThinkVantage Fingerprint Software


*2008년1월호진짜

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

소개 Mac OS X (10.9, 10.10, 10.11, 10.12) 와 OKI 프린터호환성 Mac OS X 를사용하는 PC 에 OKI 프린터및복합기 (MFP) 제품을연결하여사용할때, 최고의성능을발휘할수있도록하는것이 OKI 의목 표입니다. 아래의문서는 OKI 프린터및

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

1. 기술배경 NFV는 Consortium of Service Provider들에의해서만들어졌다. 현재 Network Operation은규모가큰전용 Hardware appliances가계속해서증가하고있다. 새로운 Network Service를 Launching할때마다에

<BFACBDC0B9AEC1A6C7AEC0CC5F F E687770>

PDF_Compass_32호-v3.pdf

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - qmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i qmail 1.03 spf-filter 년 6 월

1,000 AP 20,000 ZoneDirector IT 5, WLAN. ZoneFlex AP ZoneDirector. WLAN. WLAN AP,,,,,,., Wi-Fi. AP. PSK PC. VLAN WLAN.. ZoneDirector 5000 WLAN L

API 매뉴얼

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

tiawPlot ac 사용방법

RHEV 2.2 인증서 만료 확인 및 갱신

PowerPoint 프레젠테이션

Office 365, FastTrack 4 FastTrack. Tony Striefel FastTrack FastTrack

SBR-100S User Manual

<4D F736F F D20C0CCBEBEC1A6BEEE5FC3A5BCD2B0B35F >

<43656E744F5320B8AEB4AABDBA20B0B3BFE42E687770>

A SQL Server 2012 설치 A.1 소개 Relational DataBase Management System SQL Server 2012는마이크로소프트사에서제공하는 RDBMS 다. 마이크로소프트사는스탠다드 standard 버전이상의상업용에디션과익스프레스 exp

View Licenses and Services (customer)

학습목표 ü 01_ 소개 ü 02_ 운영체제란무엇인가 ü 03_ 초기역사 : 1940, 1950년대 ü 04_1960년대 ü 05_1970년대 ü 06_1980년대 ü 07_ 인터넷과월드와이드웹의역사 ü 08_1990년대 ü 09_2000년이후 ü 10_ 응용프로그램기

취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환

메일서버등록제(SPF) 인증기능적용안내서 (AIX - sendmail) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 AIX 5.3 sendmail spf-filter 년 6 월

810 & 는 소기업 및 지사 애 플리케이션용으로 설계되었으며, 독립 실행형 장치로 구성하거 나 HA(고가용성)로 구성할 수 있습니다. 810은 표준 운영 체제를 실행하는 범용 서버에 비해 가격 프리미엄이 거의 또는 전혀 없기 때문에 화이트박스 장벽 을

Microsoft PowerPoint UNIX Shell.pptx


Solaris Express Developer Edition

Microsoft PowerPoint UNIX Shell.ppt

설치 순서 Windows 98 SE/Me/2000/XP 1 PC를 켜고 Windows를 시작합니다. 아직 컴퓨터에 프린터를 연결하지 마십시오. 2 PC에 P-S100 CD-ROM(프 린터 드라이버)을 삽입합니다. 3 설치 프로그램을 시작합니다. q CD-ROM의 PS1

Transcription:

제 1 장 목차 1. 리눅스소개... 1 1.1. 유닉스와리눅스의역사... 1 1.1.1. 유닉스의태동... 1 1.1.2. 유닉스의성장과보급... 2 1.1.3. GNU 프로젝트의시작... 3 1.1.4. 리눅스의등장... 4 1.2. 유닉스와리눅스의특징... 5 1.2.1. 유닉스시스템의특징... 5 1.2.2. 리눅스의특징... 7 1.3. 리눅스의구성... 10 1.3.1. 운영체제개념구조... 10 1.3.2. 리눅스커널구조와기능... 13 1.3.3. 서비스및유틸리티... 15 1.3.4. 응용소프트웨어... 17 Copyright 2009 All rights reserved by 윤현주 2009. 03. 27. 1 판 2011. 09. 01. 1 차개정 2012. 09. 01. 2 차개정 1

1. 리눅스소개 리눅스 (Linux) 는리눅스커널 (kernel) 에기반한유닉스 (UNIX) 계열운영체제 (OS: operating system) 를통틀어일컫는용어다. 운영체제란 CPU, 메모리, 보조기억장치, 입출력장치등으로구성된컴퓨팅시스템에서사용자들이편하고효율적으로하드웨어를사용하고응용프로그램을수행할수있도록하는기본환경을제공하는소프트웨어다. 컴퓨팅시스템은우리가흔히접할수있는개인용컴퓨터와서버외에도모바일기기, 임베디드기기등종류가매우다양하며, 리눅스또한다양한컴퓨팅시스템에광범위하게사용되고있다. 많은사람들이개인용데스크톱의리눅스환경에서문서를편집하고, 음악을듣고비디오를보며, 친구와메일이나메시지를주고받고웹서핑을한다. 스프레드시트를사용해업무를처리하고프레젠테이션슬라이드를만들기도하며, 디지털카메라로찍은사진을보정하고 3차원애니메이션을제작하기도한다. PMP나 PDA, 내비게이션장비또는플레이스테이션같은게임기에서도리눅스가탑재되어있으며, 라우터나스위치, 계측장비등에도리눅스가사용된다. 최근핫이슈가되고있는스마트폰의안드로이드운영체제도리눅스에기반한것이다. 이렇듯컴퓨터가아니지만컴퓨팅하드웨어와소프트웨어가내장되어다양한기능을수행하는것을임베디드시스템이라고하며, 점점영역을넓혀가고있는임베디드시스템에서리눅스의역할도커지고있다. 한편, 전통적으로유닉스계열운영체제가수행하던서버기능또한리눅스가가장많이활용되는분야중하나이다. 웹서버, 메일서버, 데이터베이스서버, 파일서버등다양한기관의다양한업무요구와많은수의사용자접속에대응하여작업을수행한다. 리눅스의가장큰특징중하나는공개된형태의자유로운개발과배포로, 자유소프트웨어재단 (Free Software Foundation) 이표방하는 GNU GPL(General Public License) 을따른다는것이다. 리눅스커널의모든요소는소스코드까지사용자에게공개되고, 이를활용해누구나자유롭게버그를수정하거나기능을추가할수있다. 또한이러한수정본을같은 GPL을따르는형태로배포또는판매할수있다. 커널외의유틸리티나응용프로그램도대부분 GNU에서개발되고 GPL을따르고있어공개소프트웨어만으로완벽한작업환경을구축하는것이가능하다. 1.1. 유닉스와리눅스의역사 1.1.1. 유닉스의태동 1964년에미국방성에서지원하고 AT&T Bell Labs, General Electric, MIT 등이함께참여한 MULTICS(Multiplexed Information and Computing Service) 프로젝트가시작되었다. 목표는당시로서는대형컴퓨터인 GE-645에동적링킹, 안정성있는시분할시스템등새로운운영체제개념을도입하고실현하는것이었다. 프로젝트는도중에 AT&T Bell Labs이빠지고 Honeywell이 GE 컴퓨 1

터사업부를인수하여기종을바꾸는등우여곡절을겪으며 15년이상진행되었고, 별로인기는없었지만상업용버전으로출시되어 2000년까지운용되었다. 1969년여기에참여했던 Bell Labs의연구원인 Ken Thomson과 Dennis Ritchie는중형컴퓨터인 DEC PDP-7에서사용하기에적합한단순하고가벼운운영체제개발을시도하였고, 회사의지원없이재미를느낀사람들이동참하여팀을구성하였다. 그중한명인 Brian Kernighan은복잡한 MULTICS에대비되는의미로이운영체제를 Unics로명명하였고, 이것이나중에 UNIX로변하게된다. 초기에목표로한것은 단순하고간결하지만강력한 운용프로그램으로, 하나의거대하고복잡한소프트웨어보다는작은프로그램들을여러개연결한다는개념으로구성하였다. 최초의유닉스는어셈블러 (assembler), 셸 (shell), 편집기등을포함하였으며 PDP-7 어셈블리어로구현되었다. 1970년에는양식화된문서제작기능을구현하여최초의상업용버전으로서 PDP/11-20에포팅하였으며, 이때부터는정식으로회사의지원을받게된다. 한편, Thomson은고급언어로운영체제개발을시도하기시작하였으며, Fortran 등의기존언어로는불가능함을깨닫고새로운언어를개발하게된다. 이것이 B이며 1971년 Ritchie가 C로발전시킨다. 그리고 1973년, 고안된 C 언어를사용해대부분의유닉스코드를다시작성하였다. 1.1.2. 유닉스의성장과보급 운영체제가고급언어인 C로작성되었다는것은이식성을높여서로다른하드웨어에쉽게설치될수있다는것을의미하며, 이는유닉스가널리사용될수있게된중요한요소이다. 거기에더해 AT&T는대학이나회사, 정부기관등에유닉스를배포하며소스코드까지라이선스에포함시켰으며, 많은대학에서이를바탕으로연구와개선을거듭할수있게되었다. 1975년 Bell Labs 에서버전 6을내놓을무렵, 최초의 non-pdp 유닉스인 Interdata 7/32를비롯한많은버전들이 Bell Labs 내 외부에서개발되었다. 1977년에는 Bell Labs의외부에서또다른중요한유닉스버전이개발되었다. UC Berkeley 대학원생인 Bill Joy가유닉스버전 6에 Pascal 컴파일러, ex 편집기등을포함한 BSD(Berkeley Software Distribution) 배포판을만들어판매하기시작한것이다. 1978년에는 vi 편집기와 csh이추가되었으며, 1983년 4.2BSD에서최초로 TCP/IP 프로토콜코드가커널에구현되고소켓 (socket) 개념이도입되어네트워크구성과프로그래밍이용이하게되었다. 이후 1980년대동안유닉스는 AT&T의 System V 계열과버클리의 BSD 계열, 두양대산맥을축으로하여상업용 / 비상업용으로많은버전이개발되었다. SunOS(Sun Microsystems), Xenix(SCO), AIX(IBM), HP-UX(Hewlett-Packard) 등이대표적인상업용유닉스이다. 같은유닉스라는이름을사용하지만시간이갈수록두계열의차이가점점커지게되었고, 이는응용개발자나새로운사용자들에게좋은일이아니었다. 같은계열안에서도상업용과비상업용의형태는많이달라졌으며호환성과이식성은점점더떨어지게되었다. 이에양계열의장 2

점을통합하고호환성을제공하고자하는노력이시작되었다. 먼저 AT&T와 Sun이제휴하여 Sytem V Release 4 (SVR4) 를발표하였고, IBM, DEC, HP 등이주축이되어결성한 OSF(Open Software Foundation) 에서 OSF/1 시스템을통합버전으로내놓았다. 90년대와 2000년대를거치며두계열은유닉스시장에서우위를점하기위해 유닉스전쟁 (Unix Wars) 이라고까지일컬어지는개발전을경쟁적으로진행하였으며, 한편으로는최초개발사인 AT&T가여러번의합병과분사를반복했고, 유닉스라이선스소유권자도바뀌고, 리눅스와오픈소스소프트웨어의영향으로공개버전의유닉스도나타나는등많은변화가있었다. 이많은변화에도불구하고, 또한 30년이넘는수명에도불구하고유닉스는여전히기업이나학교에서가장많이사용되고연구되는운영체제이며, 특히엔터프라이즈서버시장에서유닉스의지위는아직도확고하다. 한편표준화노력의가장성공적인결과는 IEEE 표준인 POSIX(Portable Operating System Interface for Unix) 라하겠다. 버전에상관없이공통된인터페이스를제공하여운영체제사용의편의성과프로그램이식성을높이자는목적으로개발이진행되어, 1988년에처음 POSIX.1이제정되었다. POSIX에는커널에대한시스템호출과 C 표준라이브러리를포함하는공통 API(Application Programming Interface) 가지정되어있어이들을사용한응용프로그램은 POSIX를따르는시스템이라면어디서든지같은동작을하게되며, 셸 (shell) 과유틸리티 (utility) 인터페이스를표준제정하여사용자들이같은방식, 같은명령으로운영체제를접할수있도록되어있다. 이후, 실시간성 (real-time), 쓰레드 (thread), 유니코드등운영체제의새로운개념이도입되고기술이발전할때마다 POSIX도갱신을거듭하여현재 POSIX:2008 (IEEE Std 1003.1-2008) 까지나와있다. Solaris, HP- UX, AIX, MacOS X10 등많은상업용유닉스들이 100% POSIX-compatible로알려져있으며, 리눅스도거의 POSIX-compatible로인정받고있다. 1.1.3. GNU 프로젝트의시작 1980년대초, MIT의인공지능연구소에서는 PDP-10에탑재하기위한시분할운영체제인 ITS를개발하였는데, 연구내용을상업화하려는움직임이있었고이로인해분열의조짐이보이면서, 몇몇핵심연구원들은상업적인것을목적으로하는회사로떠났다. 때마침, DEC이 VAX와 PDP-11 을주력제품으로삼으면서 PDP-10을단종시킴으로써더이상 ITS의개발은이루어질수없었다. 1984년 1월, MIT 인공지능연구소의연구원으로 ITS 프로젝트에참여하였던 Richard Stallman은, 소스를공개하지못하도록하는분위기와기술을상업화하려는조류에반감을갖게되었고새로운시스템을구상하게되었다. 그모델이된것은유닉스였다. 그는 C로작성된, 그리고모두에게공개된유닉스시스템을위해 GNU(GNU is Not Unix) 프로젝트를시작하게되었는데, 그는 GNU 프로젝트의결과물들이자신이몸담았던 MIT로부터저작권과관련한어떤제약을받게될것을우려하여 MIT 연구원직을사직할만큼, 완전히자유로운운영체제를원하고있었다. 1985년에 GNU 프로젝트로개발된에디터인 Emacs에대한사용자들의관심이높아지면서, 3

Stallman은 GNU프로젝트운영을위해 FSF(Free Software Foundation, 자유소프트웨어재단 ) 을설립하였다. 개발이진행된프로그램들은 GNU 프로그램들의배포라이선스인 GPL (General Public License) 하에서판매되었으며, 판매수익은프로젝트를운영하는데사용되었다. 모든 GNU프로젝트는 FSF를중심으로진행되어갔다. 1990년 GNU 프로젝트는거의완성단계에이르렀으나, 운영체제에서핵심이되는커널이빠져있는상태였다. Stallman은 Carnegie Mellon 대학에서마이크로커널 (microkernel) 개념으로개발한새로운운영체제인 Mach를기반으로 'Hurd' 라는이름의커널을개발하기시작하였으나, 이미공개된프로그램들에대한지원에시간을뺏기는등여러가지이유로 GNU 커널의개발은좀처럼진척되지않았다. 1.1.4. 리눅스의등장 이즈음, 핀란드의헬싱키에서는한대학생에의해 GNU 시스템에적합한커널이개발되고있었는데, 이것이바로 Linus Torvalds의리눅스였다. 당시 21살의대학생이었던 Linus Torvalds는네덜란드의 Andy Tanenbaum 교수가학생들의학습을주목적으로개발한 MINIX를사용하던중, 유닉스와호환되는공개된운영체제의개발계획을 MINIX 사용자모임에발표하였다. 그는개발할운영체제가 " 단지취미이며 GNU처럼거대하거나전문적인것은아니다 " 라고프로젝트초기의의도를밝혔다. 그래서, 초기의리눅스는이식성이고려되지않은, 다만 i386계열에서운영되는유닉스호환운영체제를목표로하는프로젝트였다. 초기버전 0.01은가장기본적인커널만을포함하고있었으며실행조차되지않는수준이었다. 얼마후리눅스공식버전인 0.02가발표되었는데, bash(gnu Bourne Again Shell) 와 gcc(gnu C 컴파일러 ) 정도가실행될수있는수준이었다. 1992년 3월리눅스는 0.95로버전업되었는데인텔 x86칩에서사용할수있었고그래픽사용자인터페이스가추가된것이었다. GNU 커널로개발중이던 Hurd의개발이순조롭지않았던 Stallman과 FSF는유닉스커널과호환가능한커널인리눅스를 GNU 시스템의커널로채택하기로하였다. 이로써리눅스는강력한 GNU C 컴파일러인 gcc로컴파일된많은응용프로그램들을가지게되었고, 둘의결합으로 GNU 시스템은완전한구조를갖추게되었다. 리눅스의커널부분은 Linus Torvalds 주도하에계속개발되었는데, Linus는최대한확장가능한, 즉사용자에게제어권이있으며어떠한인터페이스에도종속되지않도록개발을이끌고자하는의지가있었다. Linus는그의글을통해서리눅스의성공의원인을 훌륭한설계원칙과좋은개발모델 이라고밝힌바있다. 1994년 1년 6개월여만에버전 1.0이발표되었고, 이버전에는네트워킹기능이추가되었다. 이즈음, 리눅스에확실한수익모델이있다고판단한 Bob Young과 Marc Ewing은 Red Hat 사를설립하고, 최초로자사에서패키징한 Red Hat의최초배포본을발표하게된다. 1995년리눅스는더이상 i386계열에서만돌아가는학습용운영체제가아니라인텔, 디지털, 썬 4

스팍 (Sun SPARC) 프로세서에도포팅됨으로서그영역을넓혔으며알파프로세서용의 64비트리눅스도등장하였다. 1996년버전 2.0이발표되었는데, 여러프로세서를한번에사용할수있는컴퓨팅파워가추가되었으며, 1999년에는 SMP(shared memory multiprocessor) 기능을공식지원할수있게되어최대 16개까지의 CPU장착이가능해지고최대동시접속사용자수 2048명까지지원하는시스템이되었다. 2000년대들어서서모바일기기나임베디드분야등더욱다양한분야에리눅스가도입되고있으며, IBM과 SUN(Oracle에인수됨 ) 이라는거대기업의지원을받으면서서버분야에서는유닉스와, 개인용컴퓨터분야에서는 Microsoft와경쟁하는운영체제로성장하고있다. 그림 1.1 UNIX 계통도 * http://en.wikipedia.org/wiki/image:unix_history-simple.svg 참조 1.2. 유닉스와리눅스의특징 1.2.1. 유닉스시스템의특징 유닉스시스템은많은수의프로그래머가동시에하나의컴퓨터에접속하여시간과자원을공 유하며효율적으로사용할수있도록지원하는것을목적으로만들어졌다. 유닉스가처음개발되 던당시새로운개념이고기술이었던이요소는이제컴퓨터하드웨어의발전으로용량과능력이 5

엄청나게커진현대의컴퓨터를지원하는운영체제들에게너무나당연시되고있어간과되기쉬운특징이다. 그러나일부개인용컴퓨터에사용되는운영체제나휴대기기에탑재되는운영체제에서는아직도이기능이미비한경우가있으므로다음의유닉스특징들을살펴보며비교해보기바란다. 다중태스킹 (multitasking) 다중태스킹은동시에여러개의작업을진행할수있는기능을말한다. 음악을켜놓고, 웹브라우저를열어인터넷에접속하여검색을하고필요한파일을다운로드받으면서, 문서를편집한다. 대부분의컴퓨터에 CPU가하나이기때문에실제이런작업은 동시에 이루어질수없다. 운영체제의개입으로이들작업에대한순서와자원배분이제어되고 CPU가번갈아가며이일저일을수행할수있게되어, 사용자는많은작업이동시에진행되는것처럼느끼는것이다. 진행중인작업간에영역을침범한다거나특정작업이제대로수행되지않는다거나사용자의체감성능이떨어지게되는등의일이없도록안정성과효율성을제공하는것이운영체제의큰역할이다. 때로는작업들간에서로통신이나데이터공유가필요한경우도발생하며, 엉키지않고효율이떨어지지않으면서이런작업들간의인터페이스가처리될수있도록해준다. 다중사용자 (multi-users) 하나의시스템에많은사용자들이접속하여각자자신의작업을진행하지만각사용자가컴퓨터를독점사용하고있는것처럼느끼도록지원하는운영체제기능이다. 멀티태스킹에서요구되는작업들간의독립성과연계성을지원함과동시에사용자들간의독립성과효율, 공평성등을제공해주어야한다. 컴퓨터자원의사용우선순위, 소유관계, 보안과보호기법등도다중사용자시스템에서필요하다. 유닉스는처음부터다중사용자를목적으로설계되었기때문에단일사용자중심의운영체제에비해훨씬강력하면서도유연한사용자지원체계를가진다. 이식성 (portability) 유닉스를 C로작성할때부터이식성은유닉스의기본특징으로인식되었다. 즉, 컴퓨터하드웨어가변경되더라도운영체제의소스코드를거의수정하지않고새로운하드웨어에탑재할수있도록하는것이다. 이는운영체제뿐만아니라운영체제에서수행되던많은응용프로그램들도하드웨어변경에크게영향을받지않고설치될수있다는것을의미한다. 또한 POSIX 표준이개발되면서많은유닉스버전에대한응용프로그램이식성도역시매우높다는특징을가진다. 6

강력한유틸리티와도구프로그램 1.1.1절에소개한바와같이유닉스는여러개의작은프로그램을연결해복잡한기능을처리한다는개념으로개발되었다. 다중태스킹과다중사용자를지원하기위한운영체제의핵심부분인커널 (kernel) 과별도로, 셸과같이운영체제에필수적으로포함되는유틸리티를비롯해커널과는분리되어삽입과삭제가가능한여러가지도구프로그램들로구성되어있다. 특히오랜세월프로그래머들과고급사용자들을지원하며다양하고풍부한유틸리티와도구들이개발되어웬만한기능은모두제공할수있다. 네트워킹 (networking) 불과십수년전만해도이메일과인터넷은일반화된기능이아니었다. 유닉스는인터넷이개발되던초창기부터 TCP/IP 프로토콜을탑재하여이를사용하던학계와업계사용자들에게강력하고편리한통신수단을제공하였으며, 현재도대부분의메일서버나웹서버가유닉스로지원되고있다. 운영체제로서네트워킹을지원하기위해서는단지프로토콜서비스뿐만아니라수많은사용자의네트워크접속요구를안정적이고효율적으로처리해주어야하며, 유닉스는오랜기간의개선과발전으로매우뛰어난서버로인정받고있다. 1.2.2. 리눅스의특징 리눅스는유닉스를계승하여만들어졌으므로앞에서소개한유닉스의구조적이고기능적인특징을모두공유한다. 그에더하여리눅스는공개소프트웨어로서의독자적인특징을가진다. 아래에나열한특징은최근들어리눅스를적극지원하고있는 IBM 사에서정리한내용을약간보충, 수정한것으로, 서버소프트웨어로서의리눅스의장점과더불어다재다능한리눅스의특징을설명한다. 오픈소스소프트웨어리눅스의가장큰특징이자장점은오픈소스방식으로개발되고유지된다는것이다. 리눅스소스코드는수정한내용을소스코드와함께배포할것을전제로누구나소스코드를마음대로수정할수있도록허용하는 GNU 공개라이선스 (GPL) 에따라보호되며자유롭게배포할수있다. 또한전세계에분포하는여러개발자들과공동작업을통해신속하게문제를해결하고새로운기능을추가할수있다. 일반적인커널의개정작업에는개인을포함하여수백개회사에서수천명의개발자가참여한다. 7

표 1-1 오픈소스소프트웨어의장점 특정집단소유의소프트웨어폐쇄형개발개발자중심소스코드없이사용만가능제품정보는개발업체가제공하는것이전부저작권에대한비용지불서로다른환경의시스템통합또는이식이어렵고문제발생가능버그수정은저작권소유자에의해서만가능소프트웨어의존속이저작권소유자에의존 오픈소스소프트웨어개방형개발사용자중심소스코드가공개되어변형가능개발자및사용자들에의한자발적문서화저작권비용없음소스코드를이용하여시스템통합과이식이자유로움버그수정에사용자와개발자모두참여사용자가있는한소프트웨어존속보장 유연성에따른선택의폭확대개방형개발방법에힘입어리눅스상에서모든 x86 계열프로세서, Alpha, SPARC 및 PowerPC 칩을비롯하여무수한프로세서와아키텍처가지원된다. 또한시스템에부속되는여러하드웨어를지원하는드라이버도매우많고광범위한파일시스템을지원하기때문에, 특별한하드웨어나소프트웨어를구입하지않아도같은네트워크에서다양한제조업체와모델의컴퓨터시스템을사용할수있다. 또한커널을중심으로어떤도구와소프트웨어를결합할것인가에따라매우다양한기능과크기의운영체제를만들수있기때문에유닉스와마찬가지의서버급컴퓨터용운영체제에서부터일반개인이사용하는데스크톱이나랩톱을위한개인용운영체제, 또는 PDA나네트워크용스위치, 셋톱박스등임베디드기기용운영체제를구성하는것도가능하다. 클러스터링 (clustering) 기능도뛰어나이전에슈퍼컴퓨터에서만가능하던대량의데이터계산이나검색작업과같은프로세스를처리할수있도록확장구성할수있다. 신뢰성리눅스운영체제는수백만개발자들이참여하여패치와소스코드작업을수행하는방식으로개발 / 운영되므로철저한테스트와디버깅과정을거치게되며, 만약버그가발견될경우에도단시간내에해결책이나오게된다. 새로운서비스팩이나패치가나올때까지몇개월을기다릴필요가없다. 강력한보안기능리눅스는비즈니스에적합한커널수준보안과네트워크및어플리케이션방화벽구축방법론기능을제공하는운영체제로, 시스템운영자가사용하는네트워킹보안프로시저와더불어개방형소스제품에서만제공할수있는커널수준의보안방법론이사용자에게도제공되는반면, 타 8

운영체제는사용자가커널수준에서직접코드를작성할수있도록허용되지않는다. 커널수준보안으로침입자에게약점을제공하고침투를허용할수있는서비스나기능을운영체제내부에서완전히차단하도록사용자가직접처리할수있는이점이있다. 또한다른운영체제는실행하는대부분의보안소프트웨어가커널위에자리하여이를통과하는프로세스를모니터링하는하향접근방식이지만, 리눅스는시스템운영자가보안문제처리에있어서커널의약점을커널수준에서해결하는상향접근방식을지원한다. 이방식으로보안상의약점을겉만패치로가리는것이아니라, 완전히보완해서근본적인문제를해결할수있다. 리눅스는커널수준에서강력한암호화를통해네트워크트래픽을보호할수있으므로가상사설네트워크구현에매우적합하다고하겠다. 안정성안정성은신뢰성과약간다른개념으로운영체제의제어를벗어난문제를처리하는능력을말한다. 잘못된커널수준코딩이나정합성손상, 즉운영체제자체의오류로인한시스템중지는신뢰성에관한문제인반면, 시스템에서실행중인다른프로세스로인한시스템중지나성능저하는안정성에관한문제라볼수있다. 시스템운영자에게운영체제의안정성은매우중요한관심사항이다. 리눅스에서는시스템안정성향상에기여할수있는보호메모리와선점형 (preemptive) 멀티태스킹이제공된다. 보호메모리하에서는하나의응용프로그램에오류가발생하여도전체시스템이중지되지않는다. 각응용은메모리에서고유한개별위치를차지하며사용자프로세스는운영체제의커널프로세스와완전히분리되어있어, 응용에서오류가발생하더라도운영체제는전혀영향을받지않는다. 선점형멀티태스킹기능은한응용에서발생한병목현상으로인해시스템전체가악영향을받지않도록보호하고, 사용자의응용이커널에서사용되는시스템자원을잠식함으로써발생되는여러문제를피하기위하여사용자프로세스와커널프로세스간을명확하게분리운영되도록한다. 따라서리눅스는연속가동시간면에서매우뛰어난운영체제로서, 오랜시간켜둔채로운영하는경우에도자원관리가효율적으로이루어져시스템이느려지는현상이없다. 저렴한총소유비용초기에리눅스는무료운영체제라는이유로신뢰성면에서오해를사기도했지만, 비즈니스환경에서리눅스의매력은저렴한비용이아니라낮은유지보수비용, 뛰어난안정성, 다른운영체제를능가하는성능에있다. 리눅스는다른운영체제에서할수없는많은작업을수행할수있다는점에다저렴한비용이라는장점을동반하고있다. 리눅스에는사용자단위라이선스나사용료가없고구형펜티엄시스템에서도잘실행되기때문에적은예산으로고성능네트워킹인프라를구축할수있다. 9

풍부한기술인력전세계적으로오픈소스커뮤니티를구성하는수많은개발자들이인터넷상에서활동하고있다는것은매우큰강점이다. 커널뿐만아니라응용프로그램에서도날마다새로운프로그램과기술들이발표되고있고, 이들은또한같은관심을가지는수많은사용자와개발자에의해검증되고오류가수정되고있어어느소프트웨어보다도풍부한기술인력의지원을받고있다고하겠다. 다양한응용프로그램많은인터넷서비스사업자들이리눅스를기본플랫폼으로포팅하고있으며, 새로운소프트웨어개발자들도리눅스상에서개발을하고있다. 그에따라서소규모서버에서대용량서버에이르기까지사용할수있는솔루션이다른플랫폼보다다양해지고있으며, 사용에따른비용도상대적으로낮으므로솔루션구현이용이하다. 세계에서가장빠른속도로성장하는운영체제앞에서든많은장점들로인해리눅스를기본환경으로채택하는사업자와새로운소프트웨어를개발할플랫폼으로선택하는프로그래머들이빠른속도로늘고있다. 또한강력하고편리한데스크톱지원환경과저렴한비용 ( 무료!) 때문에리눅스를기본운영체제로사용하는개인사용자도최근증가하고있는추세다. 우리나라에서는행정과금융소프트웨어등에서특정플랫폼에종속된정책을채택하는바람에리눅스사용자의비율이다른나라에비해현저하게낮은것이오히려특이한일이라하겠다. 1.3. 리눅스의구성 1.3.1. 운영체제개념구조 리눅스는다른모든운영체제와마찬가지로하드웨어와사용자사이에위치하여관리와서비스를제공할수있는구조로이루어져있다. 운영체제는대체적으로그림 1.2와같은계층구조로나타낼수있다. 일반사용자나대부분의프로그래머는하드웨어를직접건드릴일이없으며운영체제가제공하는서비스를이용해시스템을사용하게된다. 10

그림 1.2 운영체제계층구조 운영체제기능에대한직접명령 (command) 은명령해석기 (interpreter) 를통해운영체제핵심부, 즉커널에전달되고, 커널은이를직접처리하거나필요한하드웨어를구동시켜사용자에게응답을주게된다. 우리가일반적으로 프로그램 이라고하는것은명령을포함해시스템서비스, 유틸리티, 일반응용프로그램등으로분류될수있다. 서비스는대부분운영체제구동과함께시작되어대기상태에있다가사용요청이올때자신의기능을수행하는특성을갖는것으로, 네트워킹, 프린팅, GUI 등이여기에속한다. 별도의중단명령이없는한운영체제가살아있는동안서비스도계속제공된다. 유틸리티와응용프로그램은별도로실행을명령할때, 예를들어프로그램아이콘을더블클릭하는등의사용자입력이있을때실행을시작하고, 기능을다하거나사용자명령이있을때실행을마친다. 그중, 시스템기능에가까워일반적으로운영체제커널과함께배포되는종류를대개유틸리티로본다. 일반사용자는명령이나프로그램을이용해운영체제와대화하는반면, 프로그래머는프로그램을위해만들어진 API(Application Programming Interface) 를이용해운영체제기능을사용하게된다. 대부분의응용프로그램은 C/C++, Java 등고급언어에서제공하는표준라이브러리 (library) 를이용해작성되고, 일부시스템의존적인기능이나보다효율적인구현을위해커널이제공하는 API 시스템호출, system call이라고도한다 가직접사용되기도한다. 11

그림 1.3 리눅스커널요소 * http://www.makelinux.net/kernel_map 참조 12

1.3.2. 리눅스커널구조와기능 운영체제가수행하는가장핵심적인기능이구현된부분을 커널 (kernel) 이라한다. 계속해서언급했듯이운영체제의기본기능은하드웨어등의자원을관리하고사용자에게시스템사용의편의성을제공하는것이다. 실제로어떤기능들이커널에서동작하고있는지간단하게살펴보자. 그림 1.3은리눅스커널이포함하고있는요소들을기능과계층에따라나누어표현한그림이다. 커널의기능은크게프로세스관리, 메모리관리, 하드디스크등에저장되는파일관리, 네트워킹, 입출력장치관리등으로나누어진다. 각기능은그림 1.2에서나타난것과같은계층에따라세부적인기능을하는요소들로구현되어있다. 가상 (virtual) 계층과논리 (logical) 계층은매우다양한실제하드웨어와시스템기능에대하여사용자및프로그래머에게일관된형태의인터페이스를제공하기위한것이다. 그래서새로운장치가개발되더라도계층의맨아랫부분만변경하는것으로운영체제나기존응용프로그램의작동을보장할수있다. 각기능과계층은최대한독립적이면서도상호협동하는방식으로구현되어있으며보다구체적인기능과그들의관계는그림 1.3에부기된사이트를참조하기바란다. 일반사용자나프로그래머는 사용자공간인터페이스 계층에서정의되거나제공되는기능만이해하고사용할수있으면되고, 본서에서도그이상은다루지않는다. 프로세스관리프로세스 (process) 란실행중인프로그램또는작업단위를의미한다. 컴퓨터에서프로그램의실행은 CPU가담당하며운영체제의프로세스관리기능은 CPU 사용이공평하고효율적으로오류없이이루어지도록관리하는것을담당하고있다. 소스코드로작성된프로그램이나컴파일된실행가능한파일들은일반적으로하드디스크로대표되는보조기억장치에 파일 형태로저장된다. 어떤프로그램을실행하도록명령하면프로세스는 생성 단계로들어가게되는데, 운영체제가해당하는실행파일을열어서그내용을메모리로적재하고실행및관리에필요한여러가지환경을준비하는것이다. 멀티태스킹환경에서는여러개의프로세스가동시에메모리에적재되어실행준비를할수있고, 운영체제는 CPU 스케줄링정책과자원의상황에따라 준비 상태의프로세스중하나가실제실행상태에들어가도록, 즉 CPU 사용권한을부여해준다. 메모리추가, 파일사용, 입출력장치사용등프로세스실행중요구되는각종지원기능도운영체제가대행하며, 이로인해대기가필요한경우프로세스의 CPU 사용을중단시키고다른프로세스가실행되도록교체한다. 대기 상태에들어간프로세스는기다리던작업이이루어진후다시 CPU를할당받을수있는 준비 상태로전환되고, 작업이모두끝나면운영체제는프로세스가사용했던메모리, 파일등의자원을청소하고정리하여프로세스를 종료 시킨다. 또한프로세스관리기능에서는여러프로세스가협력하거나통신을원할경우필요한기능도제공한다. 13

주기억장치관리보통 RAM으로구현되는주기억장치는 CPU가유일하게접근할수있는기억장치로서현재 CPU가실행하고있는작업에서필요한자료는모두주기억장치에저장되어있어야한다. 운영체제도하나의프로세스로서시스템이부팅하면주기억장치일부분을항상차지하고있으며, 새로운프로그램이실행되거나입력장치로부터새로운자료가들어올때도항상주기억장치에적재된후에사용이나다른기억장치로저장이가능하다. 주기억장치의크기는한정되어있기때문에운영체제는이것을적절히나누어사용할수있도록, 누가현재기억장치를사용하고있는지관리하고, 새로운기억장치에대한요구가발생했을때어느부분을할당할것인지에대한정책등을가지고관리기능을수행한다. 파일및보조기억장치관리파일 (file) 은컴퓨터에서다루는정보의논리적 (logical) 저장단위로정의될수있다. 주기억장치는전원이꺼지면그내용을모두잃어버리기때문에정보를저장하기위한보조기억장치가필수적으로사용된다. 자기테이프, 자기디스크, 플래시메모리, CD-ROM 등다양한형태와저장방식의장치들이존재하지만, 하드웨어형태가무엇이든간에같은방식으로정보를구조화, 조직화해서사용자에게일관된인터페이스를제공하는것이운영체제의파일관리기능이다. 논리적인디렉터리구조와파일을만들거나변경, 삭제하고, 이들을실제하드웨어에저장하고입출력할수있도록하는모든기능을지원한다. 입출력시스템관리그림 1.3에서는컴퓨터시스템에내재된입출력버스및포트 (port) 와사용자가직접접하는키보드, 마우스등의입출력기기에대한관리가따로나타나있지만이들을통틀어입출력시스템관리기능으로분류하기도한다. 입출력시스템관리에서도역시사용자편의성과효율성을제공하는것이주목적이다. 사용자편의성을위해특정하드웨어장치의특성에관계없이공통된방식으로입출력기능을사용하거나프로그램에활용할수있도록하는논리적모델과인터페이스를제공한다. 효율성은입출력시스템에서매우중요한요소인데, 이는 CPU나메모리등컴퓨터를구성하는다른전자장치에비해속도나기능에서현저한차이를보이는여러입출력기기들로인해전체시스템효율이떨어지는경우가많기때문이다. 버퍼 (buffer), 인터럽트 (interrupt) 등 CPU의시간을최대한낭비하지않도록하는기법들이사용된다. 네트워킹 인터넷이일반화된이후네트워킹기능은운영체제의일부분이되었다. 네트워크상의다른컴 퓨터및프로그램, 사용자와통신하기위해서는정해진규약 (protocol) 을따라야하며, 이규약이 14

운영체제내에구현되어있다. 인터넷의기본규약은 TCP/IP 이다. 기본규약외에이규약을사용 하여네트워크상의자원을공유하기위한요소 예를들어 NFS(Network File System) 들도일 부운영체제에포함되기도한다. 보호및보안보호 (protection) 와보안 (security) 기능은각기능요소마다별도로구현되기도하고, 독립적으로구현되는부분도있다. 커널을일반사용자로부터보호하는기능, 각사용자의파일접근권한관리, 메모리의사용영역제한, 사용자별패스워드등이전통적으로운영체제에서제공해온보호기법이며, 네트워크로시스템의개념이확장된후보안프로토콜, 암호및인증기법등으로구성된네트워크보안기능의제공이필요하게되었다. 보호및보안은시스템기능과시스템에저장된정보를언제나안정적이고신뢰성있게관리하고서비스를제공해야하는운영체제의중요요소이다. 1.3.3. 서비스및유틸리티 대부분의컴퓨터시스템은커널만으로동작시키기어렵다. 예외적으로임베디드시스템같은경우는커널중필요요소만설치하고그기기의기능을수행할수있도록특화시킨프로그램을그위에장착함으로써사용이가능하기는하다. 리눅스커널에기반한게임기, 라우터, 네비게이션기기등이그예다. 그러나범용컴퓨터에서는사용자의요구가매우다양하며, 보편적인시스템기능을편리하게제공할필요가있다. 문서를편집하거나멀티미디어데이터를처리하는등별도의주기능을위해개발되고사용되는응용소프트웨어와달리, 유틸리티는시스템의기능자체를더잘활용하는것을주요목적으로하는시스템소프트웨어로분류할수있다. 주택이나건물에서전기나상하수도시설, 중앙냉난방시설등을유틸리티라고하는것과비교해보자. 동굴이나초가집등유틸리티시설이없는주거공간에도사람들이살수있지만, 시설이잘갖추어진주택이훨씬더편리하고안락하다고할수있다. 컴퓨터시스템에서유틸리티프로그램들은바로이런역할을하는것이다. 유틸리티의종류는매우많으며운영체제배포판에포함된프로그램중커널을제외한다른모든프로그램을유틸리티로간주하기도한다. 파일시스템탐색, 프로세스관리, 디스크검사, 시스템성능모니터링이나분석, 데이터백업, 압축, 안티바이러스, 소프트웨어설치및제거, 네트워크설정및분석등의작업과관련된프로그램들이있으며, 셸도유틸리티의한범주로넣을수있다. 또한소프트웨어를만드는소프트웨어인컴파일러를유틸리티에포함시키기도한다. 일반적인리눅스배포판에서커널과함께설치되는서비스와유틸리티중대표적인것들을간단하게살펴보자. 15

셸 (shell) 과명령 (command) 유닉스 / 리눅스에서는명령해석및기본사용자인터페이스역할을하는셸이라는프로그램이운영체제와사용자를 1차적으로연결해준다. 텍스트입력방식으로명령을내릴수있으며, 여러가지옵션과기능을이용해유틸리티와프로그램들을서로연결해사용할수있도록해준다. 또한스크립트언어로된독자적인프로그래밍방식을제공하여고급사용자나프로그래머가원하는기능을쉽게프로그램으로작성하여활용할수있다. Bourne shell(sh), C shell(csh), Korn shell(ksh), Bourne Again shell(bash) 등다양한종류가있으며, 익숙한것을선택해사용할수있다. 리눅스에서는 bash가기본으로사용된다. 컴퓨터시스템을운영하는커널의많은기능중일부는사용자가직접시스템을조작하거나관찰할수있도록커널에통합된명령어또는별도의유틸리티프로그램으로구현되어제공된다. 대표적으로파일이나디렉터리를생성, 삭제, 조작하거나디렉터리구조를따라돌아다니기, 프로세스를생성하고실행상태를모니터링하거나조작하기, 텍스트파일을편집하고그내용을검색하거나여러파일들을함께조작하기등이있다. 또한시스템관리의목적으로사용되는많은유틸리티가있는데, 사용자계정관리, 프로그램설치및업그레이드, 로그관리, 장치연결, 작업스케줄링등의기능을수행할수있다. 새로운외부입출력장치를연결하고설정하여사용할수있도록하는프로그램들도물론제공된다. GUI (Graphical User Interface) 셸은텍스트를이용해운영체제에명령을내릴수있기때문에어떤환경에서도운영체제를사용할수있도록해주는매우유용한프로그램이다. 그러나명령어를익히고기억해야하므로초보사용자에게는일종의장벽이되기도한다. 윈도우환경에익숙한사용자도부담없이시스템을사용할수있도록리눅스에서도그래픽사용자인터페이스가잘지원된다. 리눅스의그래픽환경은 X-Window라고하는기본 GUI 지원시스템을기반으로하고있으며, GTK+ 라이브러리를이용한 GNOME, Qt 라이브러리를이용한 KDE, 경량급인 Xfce 등다양한형태의윈도우매니저와데스크톱환경이있다. MS Windows와달리리눅스는커널과 GUI를별도로설치하는것이가능하며, 취향에따라선택해서사용할수도있는것이다. GNOME이나 KDE 데스크톱환경에서는기본적으로그림형태의인터페이스를이용하여사용자가마우스를이용해프로그램을실행하고드래그앤드롭으로여러가지기능을편리하게사용할수있도록한다. 그외에도셸에서명령어를입력하여실행할수있는여러가지기본기능을 GUI 형태로제공하는데파일관리자, 검색기능, 제어센터등이자주사용되는것들이다. 그외에도 GTK+ 또는 Qt 라이브러리를이용해 GUI 형태로구현된많은응용소프트웨어들이추가로설치될수있으며, 주로이름앞에 G 또는 K가붙어어떤라이브러리를사용했는지구분한다. 데스크톱환경과응용소프트웨어가사용한라이브러리가다른경우에도대부분상관없이실행가능하며다만화면에나타나는기본모양이다를뿐이라고생각해도무방하다. 16

네트워킹서비스일반사용자를위한네트워크관련소프트웨어는웹브라우저, 메일, 인스턴트메시징, FTP 클라이언트등기본적인기능의프로그램이다수존재한다. 리눅스와마찬가지로대부분오픈소스로개발되고배포되는것이므로원하는것을선택하여설치해서사용할수있다. 시스템수준의유틸리티프로그램으로는 Windows 시스템과파일을공유하거나프린터를공유할수있게해주는 Samba, 여러시스템의파일을하나처럼인식하고관리하게해주는 NFS, 원격서버에접속해서 GUI 환경을사용할수있게해주는 Xming 등이자주사용된다. 네트워크를모니터링하고분석하기위한도구로 ping, traceroute, dig 등의기본명령이있으며, Ethereal과같은고급분석도구도오픈소스로있어설치하여사용할수있다. 또한웹서버, FTP 서버, 데이터베이스서버등서버프로그램을설치하여자신의시스템을서버로활용할수있다. 프로그래밍환경리눅스는애초유닉스사용자와같은전문적인컴퓨터엔지니어에의해컴퓨터엔지니어를위한시스템으로개발되었기때문에풍부한프로그래밍환경을갖추고있다. C/C++, Java, Perl, PHP, Python, Ruby 등근래에많이사용되는언어뿐만아니라, Pascal, Tcl, Lisp, Prolog, Fortran, Ada, ML 등매우다양한언어의컴파일러와인터프리터가존재하며, 최근에는.NET 스타일의프로그램이가능한 C# 컴파일러와런타임환경을포함하는 Mono 플랫폼도개발되었다. 프로그래밍언어번역기능에더해 make, gdb, cvs, svn 등보다편리하게프로그래밍과디버깅, 버전관리등을할수있는도구도많이있으며, 이들이모두어우러진통합개발환경 (IDE: Integrated Development Environment) 도상업용소프트웨어못지않게훌륭하게갖추어져있다. 1.3.4. 응용소프트웨어 운영체제와는별도로사용자의다양한요구에부응하는응용소프트웨어들이리눅스와함께혹은따로설치되어사용될수있다. 리눅스에설치되는응용소프트웨어는상업목적으로만들어진유료소프트웨어도많지만그에대응하는오픈소스소프트웨어가거의대부분존재한다고생각해도된다. 이러한응용소프트웨어는리눅스뿐만아니라 MS Windows나 MacOS 등다른운영체제환경에서도실행가능한버전이제공되는경우가많으므로, 여러종류의플랫폼에서동일한작업을수행할수도있다. 리눅스를사용하지않더라도원하는기능을가진응용소프트웨어가너무고가라불법소프트웨어에의존하고있다면오픈소스에서잘찾아보고선택하여사용해보자. 오픈소스소프트웨어와관련프로젝트에대한정보는 http://www.sourceforge.net 사이트에가장풍부하게담겨있고, http://linuxappfinder.com, http://ubuntulinuxhelp.com과같이응용에대한검색서비스를제공하는사이트도많이있으니참조하도록하자. 17

오피스및개인사무용소프트웨어워드프로세서, 스프레드시트, 프레젠테이션, 플로차트, 벡터그래픽등의도구를묶어놓은오피스스위트로는 LibreOffice, OpenOffice, KOffice, GNOME Office 등이있으며, 그외에도각기능별로여러가지소프트웨어가있다. 이들은대부분 XML에기반한 OASIS Open Document를따르고있기때문에상호호환이가능하고, MS Windows에서도사용가능한버전들이존재하며 MS Office 양식과호환이가능한것도있다. 오피스소프트웨어외에도 PDA 동기화를하는 Kpilot, 그룹웨어인 Kolab, OpenGroupware, 재무관리소프트웨어인 GnuCash 등이있어개인의여러가지업무를처리할수있는환경을제공한다. 멀티미디어현대의컴퓨터에서멀티미디어관련기능을수행할수없다면거의쓸모없는비싼기계밖에되지않을것이다. 그런데멀티미디어관련된외부기기및시스템장치, 즉사운드카드, 그래픽 / 비디오카드등은종류가매우다양하고제조사가제공하는드라이버소프트웨어가제대로운영체제와결합되어야만사용이원활하기때문에전통적으로리눅스개발자와사용자들이고전해온분야였다. 특히초기리눅스는서버나전문적인사용자위주로개발되었기때문에일반사용자를위한편의기능은종종무시되거나연기되었다. 기능을설치하려면하드웨어에대한약간의지식과정보를가지고별도의프로그램설치나설정을수행해야했다. 그러나최근개인용컴퓨터를위한배포판이많이만들어지고사용자층이넓어지면서멀티미디어관련기능도더이상골칫거리가아니다. 대부분의멀티미디어하드웨어들이자동으로인식되고설정이되어아무런추가노력없이사용가능하게되었다. 그에더해많은종류의멀티미디어관련오픈소스소프트웨어들이개발되어다양한작업을수행할수있다. 기본적으로사운드카드의볼륨등을설정할수있는사운드믹서로 KMix가있고, mp3, wav, mp4 등을재생할수있는 Xmms, Xine, MPlayer 같은소프트웨어가있다. 음성합성으로텍스트를읽어주는 Rsynth, Emacsspeak 등이있고, 음성합성소프트웨어를직접만들수있는소프트웨어프레임워크인 Festival이있다. CD/DVD를굽기위해서는 KDE나 GNOME에서제공하는파일관리자를그대로이용할수도있고, X-CdRoast, GCombust, K3b 등의별도프로그램을사용할수도있다. 이미지를다루기위해서는 GIMP, Inkscape 등이 Adobe 사의상용소프트웨어인 Photoshop과 Illustrator 못지않은기능을제공하고, 그외에 Audacity와같은녹음도구, Freevo, LiVES와같은비디오도구, Brahms와같이 MIDI를이용한작곡도구등수많은소프트웨어가있다. 18

1 장마무리 시스템사용법이나기술만공부하면되지, 역사야아무려면어때 라고생각할수도있겠다. 그러나역사를살펴봄으로써어떤개념들이어떤철학으로구현되었는지더잘이해할수있는계기가된다. 그리고세부적인기술로들어가기전에전체로서의운영체제를한번조망해보는것도필요하다. 1장에소개된내용들이정확히어떤의미인지아직은잘모를수도있지만, 앞으로하나하나공부해가면서그리고나중에 운영체제 라는과목에서다양한형태의운영체제와그내부를살펴볼기회를가지면리눅스의철학과장점을더잘이해할수있을것이다. 응용소프트웨어의경우그기능과종류가매우다양하고항상새로운응용들이나타나고있기때문에아주간략하게소개했다. 자신의관심사에따라자신의리눅스사용환경을풍성하게만들어보자. 19