1 1 장유닉스 / 리눅스소개
강의목적및내용 강의목적 유닉스 / 리눅스시스템의체계적이해 시스템프로그래밍능력향상 강의내용 리눅스시스템프로그래밍 시스템호출을이용한 C 프로그래밍 주요프로그래밍주제 파일 프로세스 메모리 프로세스사이의통신 2
3 1.1 왜리눅스인가?
동기 유닉스 / 리눅스운영체제 1970 년대초에 AT&T 벨연구소에서개발된이후로지속적으로발전 스마트폰, PC, 서버시스템, 슈퍼컴퓨터에까지사용되고있음 소프트웨어경쟁력의핵심이되고있다. 유닉스 / 리눅스기반운영체제 1. 안드로이드 (Android) OS 2. ios 3. 맥 (Mac) OS X 4. 리눅스 (Linux) 5. BSD 유닉스 (Unix) 6. 시스템 V 7. Sun 솔라리스 (Solaris) 8. IBM AIX 9. HP HP-UX 10. Cray 유니코스 (Unicos) 4
유닉스의설계철학 단순성 MIT MULTICS에반대해서최소한의기능만제공 자원에대한일관된관점제공 이식성 이식성을위해 C 언어로작성 다양한플랫폼에이식가능 스마트폰, PC, 서버, 슈퍼컴퓨터등 개방성 소스코드공개와같은개방성 5
유닉스의특징 다중사용자, 다중프로세스운영체제 여러사용자가동시에사용가능 여러프로그램이동시에실행 관리자슈퍼유저가있음. 쉘프로그래밍 명령어나유틸리티등을사용하여작성한프로그램 훌륭한네트워킹 유닉스에서부터네트워킹이시작 ftp, telnet, WWW, X-window 등 6
7 1.2 유닉스시스템구조
유닉스운영체제구조 운영체제 컴퓨터의하드웨어자원을운영관리하고 프로그램을실행할수있는환경을제공. 커널 (kernel) 운영체제의핵심으로하드웨어운영및관리 시스템호출 (system call) 커널이제공하는서비스에대한프로그래밍인터페이스역할 쉘 (shell) 사용자와운영체제사이의인터페이스 사용자로부터명령어를입력받아해석하여수행해주는명령어해석기 8
커널 커널의역할 하드웨어를운영관리하여 프로세스, 파일, 메모리, 통신, 주변장치등을 관리하는서비스를제공한다. 9
커널의역할 프로세스관리 (Process management) 여러프로그램이실행될수있도록 프로세스들을 CPU 스케줄링하여동시에수행되도록한다. 파일관리 (File management) 디스크와같은저장장치상에파일시스템을구성하여파일을관리한다. 메모리관리 (Memory management) 메인메모리가효과적으로사용될수있도록관리한다. 통신관리 (Communication management) 네트워크를통해정보를주고받을수있도록관리한다. 주변장치관리 (Device management) 모니터, 키보드, 마우스와같은장치를사용할수있도록관리한다. 10
11 1.3 유닉스역사및버전
유닉스역사및표준 AT&T 벨연구소 (Bell Lab) 에서개발됨 Ken Thompson이어셈블리어로개발함 D. Ritchie가 C 언어로다시작성함 C 언어는 Unix 를작성하기위한언어로밀접하게관련되어있음 이론적으로 C 컴파일러만있으면이식가능 소스코드를대학에개방함 유닉스의큰흐름 시스템 V(System V) BSD(Berkeley Standard Distribution) 유닉스 리눅스 (Linux) 12
유닉스버전트리 [ 위키백과 ] 13
유닉스시스템 V 벨연구소에서개발된버전이발전하여시스템 V가됨 유닉스버전중의최초의대표적인성공사례 여러유틸리티가공개되면서일반사용자들에확산 다양한상업용버전으로발전 IBM 의 AIX, Sun 의 Solaris, HP 의 UP-UX 14
BSD 유닉스 공개소스코드를기반으로버클리대학교에서개선 지속적으로발전하여 BSD 4.3 버전이개발됨 주요기능개선 메모리관리기능향상 네트워킹기능추가 TCP/IP 네트워킹, 소켓 (Socket) 등 상업용운영체제의기초 썬 OS(Sun OS), 맥 OS(Mac OS) 등 15
리눅스 PC 를위한효율적인유닉스시스템 1991 년헬싱키대학의 Linus B. Torvalds 에의해개발됨 소스코드가공개 인터넷상에서자원자들에의해서기능추가및확장됨 공용도메인상의무료 OS 다양한플랫폼에포팅가능 PC, 워크스테이션, 서버등 GNU 소프트웨어와함께배포 GNU/Linux 운영체제 16
리눅스장점 풍부하고다양한하드웨어를효과적으로지원 대부분의하드웨어를지원하는추세임 PC, 워크스테이션, 서버등 놀라운성능및안정성 Pentium 으로도충분히빠르며안전하게수행 인터넷에맞는강력한네트워크구축 다양한응용프로그램개발됨 무료배포판 레드햇 (RedHat): 상업용 우분투 (Ubuntu) 페도라 (Fedora) CentOS 17
솔라리스 (Solaris) 썬 (SUN) 에서개발한시스템 V 기반의운영체제 썬워크스테이션에서전문가들이주로사용 18
맥 OS(Mac OS) 1984 년애플매킨토시컴퓨터용운영체제로개발 개인용컴퓨터에 GUI 를처음으로도입 맥 OS X 2002년에 NeXTSTEP 운영체제와 BSD 유닉스를기반으로개발 문서편집, 그래픽, 멀티미디어등의분야에서많이사용됨 19
모바일기기용운영체제 안드로이드 (Android) 리눅스기반모바일기기용 주로스마트폰, 태블릿 PC 등 개방형운영체제로소스코드등공개 ios 맥 OS X 를기반으로개발된모바일기기용운영체제 애플사의 iphone, ipad, ipod 20
21 1.4 리눅스설치
리눅스설치 다양한배포판 커널은공유하고배포판마다조금씩다른데스크톱환경이나응용프로그램제공 레드햇 (RedHat) : 상업용 우분투 (Ubuntu), CentOS, 데비안 (Debian), 페도라 (Fedora) 등 데스크톱환경 사용하는데스크톱환경에따라사용방법이나사용가능한응용프로그램이조금씩다르다. GNOME, KDE, Unity 22
리눅스배포판 우분투 (Ubuntu) 데스크톱에서쉽게사용할수있는리눅스배포판 MS 윈도우즈상에서인터넷으로쉽게직접설치도가능 http://www.ubuntu.com CentOS RedHat Enterprise 배포판을기반으로하는무료운영체제 주로서버용으로많이사용되며 데스크톱용, 워크스테이션용도제공 http://www.centos.org 23
우분투설치 우분투데스크탑다운로드 http://www.ubuntu.com/download/desktop 디스크굽기 (Burning) 배포판파일을빈 DVD 에복사하는과정 디스크이미지버너 ( 그림 1.10) 이용 배포판파일을다운받아클릭하면시작 우분투데스크톱설치 Install Ubuntu alongside Windows 7 혹은 Replace Windows 7 with Ubuntu 선택 24
Wubi 를이용한우분투설치 DVD 설치디스크없이설치하는간단한방법 Wubi 이용하면거의모든설치과정이자동 Wubi(Window-based Ubuntu Installer) 기존의 MS 윈도우즈운영체제를그대로유지하면서 우분투리눅스를새로설치할수있다. 원하는배포판의 Wubi를다운로드 http://releases.ubuntu.com 25
레드햇리눅스와 CentOS 레드햇리눅스 (Red Hat Linux) 레드햇사가개발한리눅스배포판 레드햇엔터프라이즈리눅스 (RHEL) 기업용엔터프라이즈컴퓨팅플랫폼을제공하는유료배포판 CentOS(Community ENTerprise Operating System) 레드햇엔터프라이즈배포판 (RHEL) 기반의무료운영체제 웹서버용, 데스크톱용, 워크스테이션용등도제공 26
CentOS 설치 CentOS 설치 배포판을다운받아 DVD 형태로구운후에설치할수있다. CentOS 홈페이지 http://www.centos.org 국내미러사이트 http://ftp.daum.net/centos/6.5/isos/x86_64/ 배포판 완전버전 ( 권장 ) CentOS-6.5-x86_64-bin-DVD.iso 최소버전 CentOS-6.5-x86_64-minimal.iso 네트워크설치버전 CentOS-6.5-x86_64-netinstall.iso 완전버전설치할때옵션 서버용, 데스크톱용, 워크스테이션용, 최소용등선택가능 자세한설치과정 27 http://linuxmoz.com/how-to-install-centos-6-linux-for-servers-desktops
28 1.5 사용환경
직접로그인 사용가능한유닉스 / 리눅스시스템이있는경우 X-윈도우 (X-window) 로직접로그인하여 바로 X-윈도우시스템을사용할수있다. 우분투 /CentOS 터미널화면 29
원격로그인 MS 윈도우에서 telnet 이용 30
원격로그인 PuTTy 사용 http://www.chiark.greenend.org.uk/~sgtatham/putty telnet, ssh 등이용하여원격로그인 31
32 1.6 사용자계정관리
시스템관리자 슈퍼유저 (superuser) 시스템을관리할수있는사용자로 슈퍼유저가사용하는계정이 root이다 슈퍼유저로그인 직접 root 계정으로로그인 다른계정으로로그인후 $ su [ 사용자명 ] 33
사용자계정추가 사용자추가 / 삭제 # useradd [ 옵션 ] 사용자명 # userdel 사용자명 # passwd 사용자명 관련파일 : /etc/passwd, /etc/shadow 사용자관리자도구 [ 시스템 ] -> [ 관리 ] -> [ 사용자및그룹 ] 34
그룹추가 그룹추가 / 삭제 # groupadd [-g gid] 그룹명 # groupdel 그룹명 35
핵심개념 유닉스시스템의가장큰특징은단순성과이식성과개방성이다. 운영체제는컴퓨터의하드웨어자원을운영관리하고프로그램을실행할수있는환경을제공한다. 커널은하드웨어를운영관리하여프로세스, 파일, 메모리, 통신, 주변장치등을관리하는서비스를제공한다. 36