UNIX Unbounded A Beginning Approach

Download Report

Transcript UNIX Unbounded A Beginning Approach

UNIX Unbounded
A Beginning Approach
이성현
Home : nimilx2.hannam.ac.kr
E-mail : [email protected]
Tel : +82-42-629-7559
HANNAM Univ.
Network Lab.
목차
 프로그램 개발
 프로그래밍 언어
 프로그래밍 기술
 간단한 C 프로그램
 UNIX 프로그램 트래킹 유틸리티
 요약
 질의 및 응답
 실습
유닉스 이론 및 실습
HANNAM Univ.
2
Network Lab.
프로그램 개발
 프로그램
컴퓨터가 기본적인 산술, 논리 연산을 수행함에 있어서 컴퓨터에게 지시하기
위한 일련의 명령어 집합
■ 연산자 + 피 연산자로 구성
■
▶ 연산자 : 수행되어야 할 기능을 지시
▶ 피 연산자 : 처리되어야 할 위치와 데이터 요소를 지칭
■
프로그래밍
▶ 프로그램을 만들기 위한 과정
▶ 프로그래밍 언어가 필요하며, 현재 다양한 프로그래밍 언어가 존재
 C/C++, Java, Basic, Fortran, Cobol, Pascal, Binary Code 등
유닉스 이론 및 실습
HANNAM Univ.
3
Network Lab.
프로그래밍 언어
 프로그래밍
■
컴퓨터가 문제를 해결하기 위한 명령어들을 작성하는 절차
 저급 언어
■
기계어(machine language)
▶ 연속적인 0과 1로 코드화
▶ 기초적 수준의 컴퓨터 연산어로 사용하며, 컴퓨터만이 이해하고 실행할 수 있는 유일한 언어
▶ 컴파일러는 프로그래밍 언어로 작성된 코드를 기계어로 번역
■
어셈블러 언어(assembler language)
▶ 기계어와 같이 특정 컴퓨터에 한정적이지만 명령어들이 기계어와 다르게 표현
▶ mnemonics라는 공인된 기호를 사용
▶ assember라는 프로그램을 실행시켜 언어를 번역
■
교재 그림 10.2 참고
유닉스 이론 및 실습
HANNAM Univ.
4
Network Lab.
프로그래밍 언어
 고급언어
■
COBOL(Common Business Oriented Language)
▶ 1959년에 소개됨
▶ 메인프레임 컴퓨터에서 대량의 자료를 처리하기 위해서 제공
■
FORTRAN(FORmula TRANsaltor)
▶ 과학/공학 프로그래밍에 적합하며 가장 인기 있는 과학용 언어
▶ 최신 버전은 FORTRAN77
■
Pascal
▶ 1969년에 개발
▶ 구조적 프로그래밍 개념을 적용
■
BASIC(Beginners All-purpose Symbolic Instruction Code)
▶ 1964년에 개발
▶ 교육적 목적으로 가장 효율적인 프로그래밍 언어로 인식
유닉스 이론 및 실습
HANNAM Univ.
5
Network Lab.
프로그래밍 언어
 고급 언어
■
C
▶ 1972년에 개발
▶ 시스템 프로그래밍, 운영체제, 컴파일러 등에 초점을 맞춤
▶ 대부분의 UNIX 운영체제는 C언어로 개발
▶ 비교적 기계에 독립적
■
C++
▶ 1980년대에 개발
▶ C 언어에 객체지향언어의 개념을 도입
▶ 객체지향 프로그래밍 구현에 대한 언어 메커니즘을 제공
■
JAVA
▶ 1990년에 선 마이크로시스템에서 개발
▶ 1995년에 배포
▶ 텔레비전, 마이크로웨이브 오븐 등과 같은 고객의 전자 장치를 제어하기 위해 설계
▶ 웹 페이지를 위한 프로그램과 인터넷 브라우저에 내장
▶ C++ 문장 구조와 비슷하지만 혼동되는 특징을 제거
유닉스 이론 및 실습
HANNAM Univ.
6
Network Lab.
프로그래밍 기술
 실행 프로그램을 만들기 위한 단계
■
프로그래밍 언어의 선택은 응용 프로그램의 특성에 의존
■
실행 프로그램을 만들기 위한 단계
▶ 소스 코드 생성(source code)
▶ 목적 파일 생성(object code/object module)
▶ 실행 파일 생성(execue code/load module)
■
소스 코드
▶ 파일 편집기 등을 통해 작성한 코드
▶ 사용자가 선택한 프로그래밍 언어로 작성
■
목적 코드
▶ 기계가 이해 가능하도록 기계어로 번역된 코드
▶ 컴파일러와 인터프리터를 통해 목적코드 생성
■
실행 코드
▶ 링커(linker)와 링크 편집기(link editor)를 통해 프로그램 간 참조 모듈을 작성
▶ 모든 코드가 결합된 실행 가능한 프로그래밍을 로드 모듈이라 함
유닉스 이론 및 실습
HANNAM Univ.
7
Network Lab.
프로그래밍 기술
 컴파일러/인터프리터
■
컴파일러/인터프리터의 기능
▶ 소스 코드를 컴퓨터가 명령들을 이해할 수 있도록 기계 코드로 번역하는 것
■
컴파일러(Compiler)
▶ 고급 언어로 작성된 프로그램 명령을 컴퓨터가 해석하고 실행할 수 있는 기계어로 번역하는 시스
▶
▶
▶
▶
■
템 소프트웨어 프로그램
전체적인 프로그램을 한번에 컴파일하고 전체를 컴파일 할 때까지 아무런 응답을 주지 않음
각 언어에 따른 별도의 컴파일러가 필요
인터프리터 보다 더 좋고 효율적인 객체 코드를 생성
컴파일된 프로그램은 더 빨리 수행되며 보다 적은 공간을 필요
인터프리터(Interpreter)
▶ 상위 레벨 언어 프로그램을 기계어로 번역
▶ 한번에 한 라인만 번역하므로 즉각적인 응답이 가능
▶ 코드에 오류가 있을 경우 즉각적인 오류 검출
▶ 분리된 목적 코드 파일을 생산하지 않으며 프로그램이 실행될 때 번역 절차를 수행
▶ 컴파일러에 의해 수행된 것보다 효율적이지 못함
유닉스 이론 및 실습
HANNAM Univ.
8
Network Lab.
간단한 C 프로그램
 C 코드의 작성
유닉스 이론 및 실습
HANNAM Univ.
9
Network Lab.
간단한 C 프로그램
 컴파일 및 실행
유닉스 이론 및 실습
HANNAM Univ. 10
Network Lab.
간단한 C 프로그램
 출력 파일의 생성
출력 재지정에 의한 파일 생성
■ 파이프 연산자에 의한 파일 생성
■
유닉스 이론 및 실습
HANNAM Univ. 11
Network Lab.
간단한 C 프로그램
 오류 정정하기
■
구문 오류에 의한 오류 코드와 컴파일 결과
유닉스 이론 및 실습
HANNAM Univ. 12
Network Lab.
간단한 C 프로그램
 표준 오류 재지정
>를 활용하여 오류의 재지정 작업을 수행
■ 파일 기술자 번호를 할당하여 에러 코드를 생성
■ 컴파일시 발생하는 오류코드를 파일로 저장하여 추후 디버그할 때 활용
■
유닉스 이론 및 실습
HANNAM Univ. 13
Network Lab.
UNIX 프로그램 트래킹 유틸리티
 유틸리티
■
make 유틸리티
▶ 하나 이상의 파일을 구성할 때 유용
▶ 자동으로 변경되어지고 재 컴파일이 필요한 소스 파일에 대한 정보를 유지
▶ 필요할 경우 프로그램을 재 링크
▶ 제어 파일로부터 해당 정보를 가져옴
▶ 제어 파일(control file)은 소스 파일 종속성과 다른 정보를 포함
■
SCCS 유틸리티
▶ Source Code Control System
▶ 프로그램의 개발을 유지, 관리하도록 도움
▶ 프로그램이 SCCS 통제하에 있을 프로그램의 다양한 버전을 생성할 수 있음
유닉스 이론 및 실습
HANNAM Univ. 14
Network Lab.
요약
 프로그래밍 언어의 특징
 간단한 C 프로그램의 작성
유닉스 이론 및 실습
HANNAM Univ. 15
Network Lab.
질의 및 응답
유닉스 이론 및 실습
HANNAM Univ. 16
Network Lab.
실습
 first.c 코드의 작성과 컴파일
 파일의 실행
 오류 코드의 생성
유닉스 이론 및 실습
HANNAM Univ. 17