02. unix 시작 - kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 page 3 unix system...

18
1 2006 2006봄학기 봄학기 문양세 문양세 강원대학교 강원대학교 컴퓨터과학과 컴퓨터과학과 컴퓨터 컴퓨터 특강 특강 (UNIX System Programming) (UNIX System Programming) UNIX UNIX 시작 시작 Page 2 UNIX System Programming by Yang-Sae Moon 운영체제 운영체제 (1/2) (1/2) 운영체제(Operating System) 이론적으로 상당히 복잡하며, 여러 상용 및 시험 제품들이 존재 가장 중요한 제어 프로그램 (아무리 사소한 컴퓨터도 운영체제는 있어야…) 하드웨어를 가장 효율적으로 제어할 수 있도록 하는 것이 목적 하드웨어와의 중요한 인터페이스로서 동작 (Device Driver) 사용자의 작업을 도우며, 다른 프로그램이 실행되는 것을 지원 (일반 사용자는 운영체제가 있는지조차 의식할 필요가 없으나, 실제로 System Programmer는 운영체제의 이해가 프로그램 작성에 중요한 요소임) UNIX 시작

Upload: others

Post on 09-Sep-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

1

20062006년년 봄학기봄학기

문양세문양세

강원대학교강원대학교 컴퓨터과학과컴퓨터과학과

컴퓨터컴퓨터 특강특강 (UNIX System Programming)(UNIX System Programming)

UNIX UNIX 시작시작

Page 2UNIX System Programmingby Yang-Sae Moon

운영체제운영체제 (1/2)(1/2)

운영체제(Operating System)

• 이론적으로 상당히 복잡하며, 여러 상용 및 시험 제품들이 존재

• 가장 중요한 제어 프로그램 (아무리 사소한 컴퓨터도 운영체제는 있어야…)

• 하드웨어를 가장 효율적으로 제어할 수 있도록 하는 것이 목적

• 하드웨어와의 중요한 인터페이스로서 동작 (Device Driver)

• 사용자의 작업을 도우며, 다른 프로그램이 실행되는 것을 지원

(일반 사용자는 운영체제가 있는지조차 의식할 필요가 없으나, 실제로 System Programmer는 운영체제의 이해가 프로그램 작성에 중요한 요소임)

UNIX 시작

Page 2: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

2

Page 3UNIX System Programmingby Yang-Sae Moon

운영체제운영체제 (2/2)(2/2)UNIX 시작

운영체제

컴퓨터 하드웨어

사용자1

사용자2

사용자n

응용 프로그램

UNIX,Windows,Linux….

컴파일러 어셈블러 문서 편집기

Page 4UNIX System Programmingby Yang-Sae Moon

UNIX UNIX 개요개요 (1/5)(1/5)

UNIX?

• 1969년 AT&T의 지부인 벨 연구소(Bell Lab.)에서 Ken Thompson에 의해 개발

• 운영체제가 곧 UNIX다? (Windows 출현 이전에는 절반 이상 Yes, 현재는 No!)

• UNIX 운영체제의 쓰임: 중대형 컴퓨터, 산업계(은행, 통신 등)

UNIX History

• 1969년

- Bell Lab.의 연구원인 Ken Thompson이 어셈블리 언어로 개발

- 어원: 기존에 사용하던 운영 체제였던 “MULTICS”는 그 명칭만큼의 원하는 성능을

갖지 못함 한가지 일이라도 잘한다는 의미를 함축하고 있는 “UNI”라는 부분을 넣

어 UNIX라는 운영체제가 개발됨

- 처음 버전은 단일 사용자 시스템으로서 네트워크 능력이 없고 프로 세스간 메모리 능

력이 매우 빈약한 메모리 관리 기능을 가지고 있는 원시적 운영체제

UNIX 시작

Page 3: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

3

Page 5UNIX System Programmingby Yang-Sae Moon

UNIX UNIX 개요개요 (2/5)(2/5)

UNIX History (계속)

• 1972년

- 같은 연구소(Bell Lab.)에서 연구원으로 근무 하고 있던 동료인 Dennis Ritchie 가 C언어 개발 C언어를 이용하여 유닉스를 다시 만들 것을 제안

- 유닉스 시스템은 다른 운영체제에 대해 커다란 장점을 가지게 됨 High Level Language로 작성되어 소스 코드 이해하기가 매우 쉬움

• UNIX의 진화

- 처음의 유닉스는 상업용이 아니었고 연구용으로 개발되었기 때문에 소스 코드와 함

께 대학에 무상으로 제공

- UC Berkeley 대학의 대학원생들은 이 소스를 연구하여 독자적인 BSD 유닉스라 불리

는 독자적인 유닉스 버전을 만들어 일반인에게 공개함

- UNIX가 여러 곳에서 연구, 발전하는 반면에 많은 버전의 UNIX가 개발되는 혼란을 초

래 표준화의 필요성 대두

UNIX 시작

Page 6UNIX System Programmingby Yang-Sae Moon

UNIX UNIX 개요개요 (3/5)(3/5)

UNIX History (계속)

• UNIX의 표준화 (POSIX: Portable Operating System Interface)

- IEEE(Institute Of Electrical and Electronic Engineer)에서 제안

- 소스레벨에서 호환성을 보장하는 유닉스

- 대부분의 단체, 회사들이 POSIX를 지원하며, 현재 사용되는 대부분의 UNIX들도

POSIX를 따르고 있음

• UNIX의 두 가지 버전

1. AT&T사가 상품화한 SYSTEM V 계열

2. BSD(Berkeley Software Distribution)사가 만든 BSD 계열

- 유닉스는 개발 당시부터 다중 사용자와 자원 공유를 큰 목적으로 개발했기 때문에 네

트워킹 기능이 강력 오늘날의 인터넷 서버로서의 각광 받는 이유

- 유닉스의 이전 버전들은 System V와 BSD 4.3으로부터 각각 유래, 새로운 버전들은

양쪽 유닉스의 특성들을 대부분 포함

UNIX 시작

Page 4: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

4

Page 7UNIX System Programmingby Yang-Sae Moon

UNIX UNIX 개요개요 (4/5)(4/5)

UNIX 시스템 구조

• 커널 (Kernel)

- UNIX가 처음 부팅될 때 메모리로 로딩(loading)

- 컴퓨터 시스템 자원들(디스크, 테이프,프린터 등)을 관리하는 운영체제의 핵심적인

부분

- 항상 주기억 장치(main memory)에 상주하면서 프로세스 관리, 네트워크 관리, 프로

세스간의 통신 등을 관리함

- 10,000줄 이상의 C언어와 1000줄 정도의 어셈블리어로 구성 이식성이 좋음

• 쉘 (Shell)

- UNIX 명령어를 해석하는 명령어 해석기로 사용자와 UNIX OS간의 인터페이스와

Shell Programming 언어를 해석

- 단말장치(키보드, 마우스 등)를 통하여 명령을 받고 커널이나 다른 여러 유틸리티 프

로그램을 실행

- 사용자는 Shell을 통하여 컴퓨터와 대화를 나눌 수 있음

UNIX 시작

Page 8UNIX System Programmingby Yang-Sae Moon

UNIX UNIX 개요개요 (5/5)(5/5)

UNIX 시스템 구조 (계속)

UNIX 시작

단말기 제어기단말기

메모리 제어기실제 메모리

장치 제어기디스크와 테이프

하드웨어에 대한 커널 인터페이스

커널에 대한 시스템 호출 인터페이스

쉘과 명령어들컴파일러와 인터프리터들

시스템 라이브러리들

Users

shell

kernel신호단말기 처리단말기 구동기

파일 시스템디스크와 테이프 구동기

Cpu 스케쥴링가상 기억장치

Page 5: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

5

Page 9UNIX System Programmingby Yang-Sae Moon

UNIX UNIX 제품제품 종류종류

UNIX는 단일 제품이 아니라, 제품群을 의미하며 다음과 같은 두 가지 특

징을 공통으로 포함함

• 멀티태스킹(Multitasking): 유닉스 시스템이 한번에 하나 이상의 프로그램을 동시에 실행

할 수 있음을 의미

• 멀티유저(Multiuser): 유닉스 시스템이 한번에 한 명 이상의 사용자를 동시에 지원할 수

있음을 의미

UNIX 시작

IBMBerkeley Software Design(BSDI)Hewlett-Packard(HP)Silicon GraphicsDigital Equipment Corporation(DEC)Sun MicrosystemsSun MicrosystemsHP Alpha Server Series Digital Equipment Corporation(DEC)Novell

AIXBSD/OSHP-UXIrixOSF/1SolarisSunOSTru64UltrixUnixware

제조회사유닉스명

FreeBSDLinuxNetBSD

유닉스명

상용 UNIX 제품

무료 UNIX 제품

Page 10UNIX System Programmingby Yang-Sae Moon

UNIX UNIX 시작시작 (1/8)(1/8)

사용자 명과 패스워드

• 시스템 관리자(System Manager, System Administrator):

유닉스 시스템의 관리와 유지/보수를 수행하는 사람

• 사용자명(User Id): 사용자를 구분할 수 있는 고유한 이름

• 계정(Account): 시스템을 사용할 허가 (각 사용자는 계정을 부여 받음)

• 패스워드(Password)

UNIX 시작

Page 6: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

6

Page 11UNIX System Programmingby Yang-Sae Moon

로그인 (유닉스로 작업 시작하기)

• 사용자명(login name)을 입력하고 RETURN 키

• 패스워드를 입력하고 RETURN 키

UNIX 시작UNIX UNIX 시작시작 (2/8)(2/8)

login:

password:

Page 12UNIX System Programmingby Yang-Sae Moon

로그인 예제 (실제 해 봅시다.)

UNIX 시작UNIX UNIX 시작시작 (3/8)(3/8)

Page 7: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

7

Page 13UNIX System Programmingby Yang-Sae Moon

로그인 후에 일어나는 일은?

• 시스템을 설명하는 간단한 정보메시지 출력

• 시스템 관리자가 어떻게 시스템을 설정했는가에 따라 다름

• 공지사항(Message of the Day)

- 시스템 관리자가 업데이트 하는 정보를 담고 있는 메시지 (/etc/motd)

- 사용자는 로그인 할 때 마다 자동으로 가장 최근에 새로이 추가된 항목을 볼 수 있음

UNIX 시작UNIX UNIX 시작시작 (4/8)(4/8)

Page 14UNIX System Programmingby Yang-Sae Moon

로그인 후에 일어나는 일은? (계속)

UNIX 시작UNIX UNIX 시작시작 (5/8)(5/8)

System Information

Message of the Day

Page 8: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

8

Page 15UNIX System Programmingby Yang-Sae Moon

Shell Prompt

• Shell: 사용자의 명령을 읽고 해석하는 프로그램

• Shell이 다음 명령을 받아들일 준비가 되면, Prompt를 보여줌

• Prompt는 사용하고 있는 Shell에 따라 차이가 있음

− Default Prompt: C Shell(%, $), Korn Shell($), Bourne Shell, …

− User Defined Prompt: 사용자가 지정(.cshrc)하여 변경 가능함

• 끝내고자 할 때는 Shell Prompt 상에서 “logout” 또는 “exit”를 입력

UNIX 시작UNIX UNIX 시작시작 (6/8)(6/8)

Page 16UNIX System Programmingby Yang-Sae Moon

Shell Prompt (계속)

UNIX 시작UNIX UNIX 시작시작 (7/8)(7/8)

Page 9: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

9

Page 17UNIX System Programmingby Yang-Sae Moon

로그 아웃 (유닉스 작업 마치기)

• 유닉스에서 작업을 마치려면 로그 아웃(Log out) 명령으로 세션을 마친다.

• 로그아웃:유닉스에게 현재 사용자명으로 로그인한 사용자가 작업을 마친다고 알리는 것

• 로그아웃 방법

− Shell Prompt 상에서 CTRL-D 키를 누름

− logout 명령어를 사용

− exit 명령어를 사용

UNIX는 대소문자를 구별한다.

• 도스(DOS)와 같은 운영체제와 달리, 유닉스는 대문자와 소문자를 구별함

• 사용자명, 패스워드 입력 시 대소문자 구별에 유의

UNIX 시작UNIX UNIX 시작시작 (8/8)(8/8)

Page 18UNIX System Programmingby Yang-Sae Moon

날짜 및 시각 확인하기 (date)

현재 로그인한 사용자 확인하기 (who)

디렉토리/파일 목록 보기 (ls)

파일 내용 보기 (cat, more)

패스워드 변경하기 (passwd)

과거 로그인한 이력 보기 (last)

명령어 매뉴얼 보기 (man)

자신의 호스트 이름 보기 (hostname, uname)

배너 명령어 (banner)

UNIX 시작간단한간단한 유닉스유닉스 작업작업 (1/11)(1/11)

Page 10: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

10

Page 19UNIX System Programmingby Yang-Sae Moon

날짜 및 시각 확인하기 (date)

UNIX 시작간단한간단한 유닉스유닉스 작업작업 (2/11)(2/11)

Page 20UNIX System Programmingby Yang-Sae Moon

UNIX 시작간단한간단한 유닉스유닉스 작업작업 (3/11)(3/11)

현재 로그인한 사용자 확인하기 (who)

Page 11: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

11

Page 21UNIX System Programmingby Yang-Sae Moon

UNIX 시작간단한간단한 유닉스유닉스 작업작업 (4/11)(4/11)

디렉토리/파일 목록 보기 (ls)

Page 22UNIX System Programmingby Yang-Sae Moon

UNIX 시작간단한간단한 유닉스유닉스 작업작업 (5/11)(5/11)

파일 내용 보기 (cat)

Page 12: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

12

Page 23UNIX System Programmingby Yang-Sae Moon

UNIX 시작간단한간단한 유닉스유닉스 작업작업 (6/11)(6/11)

파일 내용 보기 (more)

Page 24UNIX System Programmingby Yang-Sae Moon

UNIX 시작간단한간단한 유닉스유닉스 작업작업 (7/11)(7/11)

패스워드 변경하기 (passwd)(Password는 최소 6문자 이상이어야 하며, 사전상의 단어나 고유명사는 피하는 것이 좋음)

Page 13: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

13

Page 25UNIX System Programmingby Yang-Sae Moon

UNIX 시작간단한간단한 유닉스유닉스 작업작업 (8/11)(8/11)

과거 로그인한 이력 보기 (last)

Page 26UNIX System Programmingby Yang-Sae Moon

UNIX 시작간단한간단한 유닉스유닉스 작업작업 (9/11)(9/11)

명령어 매뉴얼 보기 (man)

Page 14: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

14

Page 27UNIX System Programmingby Yang-Sae Moon

UNIX 시작간단한간단한 유닉스유닉스 작업작업 (10/11)(10/11)

자신의 호스트 이름 보기 (hostname, uname)

Page 28UNIX System Programmingby Yang-Sae Moon

UNIX 시작간단한간단한 유닉스유닉스 작업작업 (11/11)(11/11)

배너 명령어 (banner)

Page 15: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

15

Page 29UNIX System Programmingby Yang-Sae Moon

개요

• UNIX명령어 라인상에서 어떠한 명령어를 잘못 입력한 경우에 그 잘못된 명령어

를 수정하는 방법

• 일부 문자들은 유닉스 터미널에 입력되었을 때 특수하게 해석

• 이러한 문자들은 때때로 메타 문자라 호칭

$ stty –a 터미널 입력 환경(특히, 메타 문자 목록) 얻기

UNIX 시작잘못잘못 입력한입력한 명령어명령어 수정하기수정하기 (1/3)(1/3)

옵션 의 미

intr

erase

kill

werase

susp

인터럽트 (프로그램의 실행 중지)

한문자를 지움(backspace)

현재 작업중인 줄을 모두 지움

마지막 단어를 지움

프로세스를 일시 중지

Page 30UNIX System Programmingby Yang-Sae Moon

“stty –a”의 출력 예

UNIX 시작잘못잘못 입력한입력한 명령어명령어 수정하기수정하기 (2/3)(2/3)

Page 16: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

16

Page 31UNIX System Programmingby Yang-Sae Moon

실습 하기 (다음과 같은 순서로 실습해 볼 것)

$ stty erase ^h backspace(^h)로 지정

$ stty erase ^g 한문자를 지우는 것을 ^g로 지정

$ stty –a erase에 대한 변경된 메타 문자 확인

$ stty kill j 한라인 삭제를 j 로 설정

$ dlfsdfsd j키로써 삭제 확인

$ stty kill ^u 다시 ^u로 설정

$ stty werase q q키로써 단어 삭제

$ test test test q키로써 단어 삭제 확인

$ stty werase ^w 원래 설정 값으로 복귀

UNIX 시작잘못잘못 입력한입력한 명령어명령어 수정하기수정하기 (3/3)(3/3)

Page 32UNIX System Programmingby Yang-Sae Moon

로그인(C Shell 가정)할 때 자동적으로 실행되는 파일

자신의 환경(Prompt 형식, 명령어 Alias 등)을 설정하기 위해서 사용

Prompt 상에서 .cshrc 파일 실행하는 명령어(source)

$ source .cshrc

UNIX 시작..cshrccshrc 파일파일 (1/3)(1/3)

Page 17: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

17

Page 33UNIX System Programmingby Yang-Sae Moon

UNIX 시작..cshrccshrc 파일파일 (2/3)(2/3)

Page 34UNIX System Programmingby Yang-Sae Moon

내 .cshrc 파일을 어떻게 작성하고 수정하지?

UNIX 시작..cshrccshrc 파일파일 (3/3)(3/3)

Page 18: 02. UNIX 시작 - Kangwonysmoon/courses/2006_1/us/02.pdf · 2016. 6. 2. · 2 Page 3 UNIX System Programming by Yang-Sae Moon 운영체제(2/2) UNIX 시작 운영체제 컴퓨터하드웨어

18

Page 35UNIX System Programmingby Yang-Sae Moon

Homework #0Homework #0

실습 및 숙제를 위하여 UNIX 환경을 구축할 것

• 학과의 서버 활용(계정 받아서 활용)하거나

• 자신이 Access 가능한 다른 서버를 활용해도 무관

제출물: 없음

이후 실습과 숙제를 위해 필수적 요소이므로, 꼭 스스로 실천하세요.

UNIX 시작