1 장 유닉스 소개 1
강의 목적 및 내용 2 강의 목적 유닉스 / 리눅스 시스템의 체계적 이해 및 활용 시스템 프로그래밍 능력 향상 강의 내용 유닉스 / 리눅스의 효과적 사용 명령어, 파일 시스템, 네트워킹, X- 윈도우, 쉘 프로그래밍 유닉스 / 리눅스 시스템 프로그래밍 시스템 호출을 이용한 C 프로그래밍 파일, 프로세스, 네트워크 관련 프로그래밍
1.1 왜 유닉스인가 ? 3
동기 4 유닉스 운영체제 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)
유닉스의 특징 5 단순성 MIT MULTICS 에 반대해서 최소한의 기능만 제공 자원에 대한 일관된 관점 제공 이식성 이식성을 위해 C 언어로 작성 다양한 플랫폼에 이식 가능 스마트폰, PC, 서버, 슈퍼컴퓨터 등 개방성 소스 코드 공개와 같은 개방성
유닉스의 특징 6 다중 사용자, 다중 프로세스 운영체제 여러 사용자가 동시에 사용 가능 여러 프로그램이 동시에 실행 관리자 슈퍼유저가 있음. 쉘 프로그래밍 명령어나 유틸리티 등을 사용하여 작성한 프로그램 훌륭한 네트워킹 유닉스에서부터 네트워킹이 시작 ftp, telnet, WWW, X-window 등
1.2 유닉스 시스템 구조 7
유닉스 운영체제 구조 8 운영체제 컴퓨터의 하드웨어 자원을 운영 관리하고 프로그램을 실행할 수 있는 환경을 제공. 커널 (kernel) 운영체제의 핵심으로 하드웨어 운영 및 관리 시스템 호출 (system call) 커널이 제공하는 서비스에 대한 프로그래밍 인터페이스 역할 쉘 (shell) 사용자와 운영체제 사이의 인터페이스 사용자로부터 명령어를 입력 받아 해석하여 수행해주는 명령어 해석기
커널 9 커널의 역할 하드웨어를 운영 관리하여 프로세스, 파일, 메모리, 통신, 주변장치 등을 관리하는 서비스를 제공한다.
1.3 유닉스 역사 및 버전 10
유닉스 역사 및 표준 11 AT&T 벨 연구소 (Bell Lab) 에서 개발됨 Ken Thompson 이 어셈블리어로 개발함 D. Ritchie 가 C 언어로 다시 작성함 C 언어는 Unix 를 작성하기 위한 언어로 밀접하게 관련되어 있음 이론적으로 C 컴파일러만 있으면 이식 가능 소스 코드를 대학에 개방함 유닉스의 큰 흐름 시스템 V(System V) BSD(Berkeley Standard Distribution) 유닉스 리눅스 (Linux)
유닉스 버전 트리 [ 위키백과 ] 12
유닉스 시스템 V 13 벨 연구소에서 개발된 버전이 발전하여 시스템 V 가 됨 유닉스 버전 중의 최초의 대표적인 성공 사례 여러 유틸리티가 공개되면서 일반 사용자들에 확산 다양한 상업용 버전으로 발전 IBM 의 AIX, Sun 의 Solaris, HP 의 UP-UX
BSD 유닉스 14 공개 소스코드를 기반으로 버클리대학교에서 개선 지속적으로 발전하여 BSD 4.3 버전이 개발됨 주요 기능 개선 메모리 관리 기능 향상 네트워킹 기능 추가 TCP/IP 네트워킹, 소켓 (Socket) 등 상업용 운영체제의 기초 썬 OS(Sun OS), 맥 OS(Mac OS) 등
리눅스 15 PC 를 위한 효율적인 유닉스 시스템 1991 년 헬싱키 대학의 Linus B. Torvalds 에 의해 개발됨 소스코드가 공개 인터넷 상에서 자원자들에 의해서 기능 추가 및 확장됨 공용 도메인 상의 무료 OS 다양한 플랫폼에 포팅 가능 PC, 워크스테이션, 서버 등 GNU 소프트웨어와 함께 배포
리눅스 장점 16 풍부하고 다양한 하드웨어를 효과적으로 지원 대부분의 하드웨어를 지원하는 추세임 PC, 워크스테이션, 서버 등 놀라운 성능 및 안정성 Pentium 으로도 충분히 빠르며 안전하게 수행 인터넷에 맞는 강력한 네트워크 구축 다양한 응용 프로그램 개발됨 무료 배포판 레드햇 (RedHat): 상업용 우분투 (Ubuntu) 페도라 (Fedora) CentOS
솔라리스 (Solaris) 17 썬 (SUN) 에서 개발한 시스템 V 기반의 운영체제 썬 워크스테이션에서 전문가들이 주로 사용
맥 OS(Mac OS) 년 애플 매킨토시 컴퓨터용 운영체제로 개발 개인용 컴퓨터에 GUI 를 처음으로 도입 맥 OS X 2002 년에 NeXTSTEP 운영체제와 BSD 유닉스를 기반으로 개발 문서편집, 그래픽, 멀티미디어 등의 분야에서 많이 사용됨
모바일 기기용 운영체제 19 안드로이드 (Android) 리눅스 기반 모바일 기기용 주로 스마트폰, 태블릿 PC 등 개방형 운영체제로 소스 코드 등 공개 iOS 맥 OS X 를 기반으로 개발된 모바 일 기기용 운영체제 애플사의 iPhone, iPad, iPod
1.4 리눅스 설치 20
리눅스 설치 21 다양한 배포판 커널은 공유하고 배포판마다 조금씩 다른 데스크톱 환경이나 응용 프로그램 제공 레드햇 (RedHat) : 상업용 우분투 (Ubuntu), 데비안 (Debian), 페도라 (Fedora), CentOS 등 교재 참조 데스크톱 환경 사용하는 데스크톱 환경에 따라 사용방법이나 사용 가능한 응용 프 로그램이 조금씩 다르다. GNOME, KDE, Unity
리눅스 배포판 22 우분투 (Ubuntu) 데스크톱에서 쉽게 사용할 수 있 는 리눅스 배포판 MS 윈도우즈 상에서 인터넷으로 쉽게 직접 설치도 가능 CentOS RedHat Enterprise 배포판을 기반으 로 하는 무료 운영체제 주로 서버용으로 많이 사용되며 데스크톱용, 워크스테이션용도 제공
1.5 사용 환경 23
직접 로그인 24 사용 가능한 유닉스 / 리눅스 시스템이 있는 경우 X- 윈도우 (X-window) 로 직접 로그인하여 바로 X- 윈도우 시스템을 사용할 수 있다. 우분투 /CentOS 터미널 화면
원격 로그인 25 MS 윈도우에서 telnet 이용 C:\> telnet cs.sookmyung.ac.kr
원격 로그인 26 PuTTy 사용 telnet, ssh 등 이용하여 원격 로그인
1.6 사용자 계정 관리 27
시스템 관리자 28 슈퍼유저 (superuser) 시스템을 관리할 수 있는 사용자로 슈퍼유저가 사용하는 계정이 root 이다 슈퍼유저 로그인 직접 root 계정으로 로그인 다른 계정으로 로그인 후 $ su [ 사용자명 ]
사용자 계정 추가 29 사용자 추가 / 삭제 # useradd [ 옵션 ] 사용자명 # userdel 사용자명 # passwd 사용자명 관련 파일 : /etc/passwd, /etc/shadow 사용자 관리자 도구 [ 시스템 ] -> [ 관리 ] -> [ 사용자 및 그룹 ]
그룹 추가 30 그룹 추가 / 삭제 # groupadd [-g gid] 그룹명 # groupdel 그룹명
핵심 개념 유닉스 시스템의 가장 큰 특징은 단순성과 이식성과 개방성이다. 운영체제는 컴퓨터의 하드웨어 자원을 운영 관리하고 프로그램을 실 행할 수 있는 환경을 제공한다. 커널은 하드웨어를 운영 관리하여 프로세스, 파일, 메모리, 통신, 주변 장치 등을 관리하는 서비스를 제공한다. 31