1. 개요

C언어는 1972년 켄 톰슨과 데니스 리치가 벨 연구소에서 일할 당시 새로 개발된 유닉스 운영체제에서 사용하기 위해 개발한 프로그래밍 언어이다. 하지만 지금은 게임이나 서버용 응용프로그램 뿐만 아니라 임베디드 시스템을 위한 프로그래밍에도 함께 쓰이고 있다.


2. 발전과정

ALGOL 60 → CPL → BCPL → B언어 → C언어 순으로 발전해 왔다.

C언어는 어셈블리어가 가진 많은 연산기능과 함께 고급언어가 가진 제어구조나 기능적인 모듈을 제공하기 때문에 유연하고 막강한 기능제공이 가능했다. 

1980년대 미국 표준을 제정하는 ANSI에서 ISO(국제표준화기구)와 함께 C의 준화작업을 시작했고, 1990년에 공식적으로 C90이라는 표준을 발표했다. 


3. C언어의 특징

- 이식성이 뛰어나다.

C언어는 운영체제와 같은 시스템 프로그래밍을 작성하기에 적합한 언어이므로 프로그램의 이식성이 높고 하드웨어에 대한 제어가 가능하다.

한 컴퓨터에서 C언어로 작성된 프로그램은 소스코드를 변경하지 않고 다른 컴퓨터나 운영체제에서 실행할 수 있다. 이는 모든 컴퓨터에서 동일하게 동작하는 표준 라이브러리 함수를 프로그래머에게 제공하기 때문이다. 즉, 특정 CPU를 가진 컴퓨터 시스템에서만 실행되는 기계 종속적인 프로그램이 아닌 어떤 하드웨어든지 지원이 가능흔 기계 독립적인 프로그램 개발이 가능한 언어다.


- 고급언어와 저급언어의 특징을 모두 가지고 있다.

저급언어인 어셈블리어가 가진 많은 연산 기능과 함께 고급언어가 가진 제어구조나 기능적인 모듈을 제공하기 때문에 저급언어 특성의 논리적 구조를 가진 고급언어이다.


- 논리적이고 구조적이며 함축적인 프로그래밍 가능

C언어는 하나 이상의 함수로 구성된 언어이기 때문에 함수를 활용한 논리적이고, 구조적이며, 함축척 프로그래밍 작성이 가능하다.

함수란 공통된 기능을 수행하기 위한 명령어들을 하나의 독립된 단위로 모아 놓은 모듈이라 할 수 있으며 복잡한 소스코드를 기능에 따라 함수 단위로 나누어 세분화시킴으로써 소스코드에 대한 중복사용을 최소화하고 재사용 가능성을 개선시킨 것을 모듈화라고 한다. 이렇게 모듈화된 기능을 각종 저에문들과 함께 사용함으로써 구조화된 프로그래밍 기법을 지원한다. 모듈화되고 구조화된 소스코드는 프로그램의 크기도 작고, 프로그램의 실행속도도 빠를 뿐만 아니라, 소스에 대한 이해가 쉽기 때문에 유지/관리가 편하다.


- 포인터를 이용한 메모리 관리

포인터는 자료가 저장된 메모리의 주소를 의미하는데 이러한 포인터는 C언어의 대표적인 기능이다. 포인터를 잘 활용하면 메모리 주소를 직접 제어할 수 있으므로 효율적인 메모리 관리와 더불어 실행속도를 향상시킬 수 있다. 하지만 포인터를 잘못 사용하면 디버깅하기 어려운 런타임오류가 발생하여 오히려 처리능력을 저하시킬 수 있다.


- 절차지향적 언어

프로그램 작성 순서에 따라 프로그램 내부를 순차적으로 실행한다.


4. C언어의 구조

C언어의 구조는 다음과 같다.


#include <헤더파일>

전역변수 선언부;

함수 선언부;

int main() {

    프로그램 처리부;

}


void 사용자함수부() {


}


Posted by Imp3rio
NCS보안3기2017. 3. 14. 22:11

리눅스는 CLI(Command Line Interface)를 기반으로 하지만 근래에는 GUI(Graphical User Interface)를 지원한다.

일단 CLI와 GUI에 대해 알아보자.


1. GUI(Graphical User Interface)

GUI는 그래픽을 통해 사용자와 컴퓨터간 인터페이스를 구현하는 것이다. GUI는 실제 생활에서 잘 알려진 하나 또는 그 이상의 객체들을 비유적으로 사용하는데, 그 예로는 바탕화면, 창(윈도우)를 통해 보는것 또는 건물 내에 물리적인 배치 등이 있다.

GUI 요소들은 윈도우, 풀다운 메뉴, 단추, 스크롤바, 아이콘 이미지, 마우스 같은 것들이 포함된다.


2. CLI(Command Line Interface)

명령어 인터페이스는 텍스트 터미널을 통해 사용자와 컴퓨터가 상호작용하는 방식을 뜻한다. 즉, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다.

GUI의 단추 또는 메뉴와는 달리, 명령줄은 그 자체로 사용자가 원하는 작업을 정확히 표현할 수 있다.


리눅스 기본 명령어


sudo

(super user do)

 root 권한으로 실행

man

(manual)

 명령어의 사용법을 보는 명령어

ls

(list)

 현재 디렉토리에 있는 파일 및 폴더의 리스트 보기

cd

(change directory)

 디렉토리 변경

cp

(copy)

 파일 또는 디렉터리를 복사

mv

(move)

 파일 또는 디렉터리의 위치 변경

mkdir

(make directory)

 디렉터리 생성

rm

(remove)

 파일 또는 디렉터리 삭제

pwd

(print working directory)

 현재 작업 디렉터리 출력

cat

(concatenate)

 파일의 내용을 화면에 출력

touch

 빈 파일 생성

chmod

(change mode)

 파일의 permission 변경

chown

(change owner)

 파일의 소유자 변경


'NCS보안3기' 카테고리의 다른 글

우분투 리눅스  (0) 2017.03.14
기초지식  (0) 2017.03.14
Posted by Imp3rio
NCS보안3기2017. 3. 14. 17:48

먼저 우분투에 대해 알아보기 전에 리눅스에 대해 알아보고자 한다.

우분투는 리눅스에서 파생된 운영체제이기 때문에 리눅스를 알고나면 이해하기가 더 쉬울것이라 생각한다.


리눅스

      

                             Tux.svg

                        <리눅스의 마스코트인 턱스(Tux)>


리눅스는 컴퓨터 운영체제의 하나이며, 그 커널을 뜻하기도 한다. 

리눅스는 다중 사용자, 다중 작업(멀티태스킹), 다중 스레드를 지원하는 네트워크 운영체제이다.

리눅스는 리처드 스톨만(Richard Stallman)의 GNU 프로젝트와 함께 한다.


GNU 프로젝트

GNU : GNU is Not UNIX!

GNU 프로젝트는 1990년까지 운영체제에 필요한 문서 편집기, 컴파일러, 라이브러리와 유틸리티가 있었다. 하지만 주요 구성요소인 커널이 완성되지 않았었다. 그러던 중 1991년에 핀란드의 프로그래머인 리누스 토발즈(Linus Torvalds)가 사용자와의 인터페이스를 담당하는 리눅스 커널을 발표하였다. 이후에 GNU 시스템과 통합되어 GNU/Linux라는 운영체제가 탄생하게 된다.


리눅스의 특징

1. 유닉스 기반

리눅스 커널은 유닉스 계열 운영체제의 커널이다.

유닉스는 교육 및 연구 기관에서 즐겨 사용되는 범용 다중 사용자 방식의 시분할 운영체제이다. 1970년대 초 벨 연구소 직원인 켄 톰슨, 데니스 리치, 더글러스 매클로리 등이 처음 개발하였다. 유닉스는 처음부터 다양한 시스템 사이에서 서로 이식할 수 있고, 멀티 태스킹과 다중 사용자를 지원하도록 설계되었다.

리눅스는 이러한 유닉스를 기반으로 만들어졌기 때문에 리눅스는 유닉스와 완벽하게 호환이 가능하다. 따라서 개발자들에게도 익숙한 환경이었고 결국 많은 사람들에게 빠르게 확산될 수 있었다.


2. 공개된 운영체제

리눅스는 인터넷이 연결되어 있는 공간이라면, 어디서든지 무료로 FTP를 통해 쉽고 빠르게 구할 수 있다. 또한 운영체제의 커널을 비롯한 모든 프로그램의 소스가 공개되어 있어 자신이 원하는 데로 프로그램을 변형하여 사용할 수 있으며, 이 변형한 프로그램을 다시 배포할 수 있다.


3. 네트워킹

리눅스는 이더넷(Ethernet), 토큰링(Token Ring), 아크넷(Arcnet) 등 3대 주요 랜 표준을 지원하며 ISDN, FDDI, ATM, X.25, Frame Relay 등의 주요 네트워크 장비를 리눅스에서 사용 가능하다. 또 리눅스 PC에 적절한 하드웨어를 결합하면 기존 제품보다 훨씬 저렴한 가격으로 브리지, 라우터, 게이트웨이를 만들 수 있다.



우분투란 ?


우분투는 데비안(Debian) GNU/Linux를 기반으로 만들어졌으며 고유한 데스크탑 환경을 사용하는 리눅스 배포판이다. 


우분투의 특징

1. 개인용, 데스크탑 환경에 최적화

대부분의 리눅스 배포판은 서버용으로 사용되고 있는 것에 반하여, 우분투는 개인 사용자와 데스크탑 환경에 최적화되도록 사용자 편의를 중점으로 개발되고 있다.


2. 자유 소프트웨어 기반

리눅스의 특징을 그대로 물려 받으며 자유 소프트웨어에 기반하기 때문에 누구나 무료로 다운받아서 사용할 수 있다.


우분투의 역사

우분투는 일년에 두 차례 새로운 버전을 릴리즈 하는데 나온 연도와 달로 번호를 매긴다. 예를 들어 7.10은 2007년 10월, 8.04는 2008년 4월에 나온 버전이다.

버전 번호 뒤에 LTS는 Long Term Support의 약어로 장기적으로 지원하는 버전임을 뜻하며 가장 안정적인 버전이라고 생각할 수 있다. 이러한 LTS 버전은 2년에 한 번씩 배포된다.

'NCS보안3기' 카테고리의 다른 글

리눅스 명령어  (0) 2017.03.14
기초지식  (0) 2017.03.14
Posted by Imp3rio