프로그램이 실행되기 위해서는 먼저 프로그램이 메모리에 로드(load)되어야 한다.

또한 프로그램에서 사용되는 변수들을 저장할 메모리도 필요하다.

따라서 컴퓨터의 운영체제는 프로그램의 실행을 위해 다양한 메모리의 공간을 제공하고 있는데

프로그램이 운영체제로부터 할당받는 대표적인 메모리공간(RAM)으로는 

코드(Code)영역, 데이터(Data)영억, 스택(Stack)영역, 힙(Heap)영역이 있다.

 

코드영역은 실행할 프로그램의 코드가 저장되는 영역으로 텍스트영역이라고도 부르낟.

CPU는 코드영역에 저장된 명령어를 하나씩 가져가서 처리하게 된다.

 

데이터영역은 프로그램의 전역변수와 정적(Static)변수가 저장되는 영역이다.

데이터영역은 프로그램의 시작과 함께 할당되며, 프로그램이 종료되면 소멸한다.

 

스택영역은 함수의 호출과 관계되는 지역변수와 매개변수가 저장되는 영역이다.

스택영역은 함수의 호출과 함께 할당되며, 함수의 호출이 완료되면 소멸한다.

이렇게 스택영역에 저장되는 함수의 호출정보를 스택 프레임(Stack Frame)이라고 한다.

 

힙영역은 사용자가 직접 관리할 수 있는 그리고 해야만 하는 영역이다.

사용자에 의해 메모리공간이 동적으로 할당되고 해제되며 메모리의 낮은 주소에서

높은 주소의 방향으로 할당된다.

DataBase란 여러사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는 데이터의 집합을

말한다.

자료항목의 중복을 없애고 자료를 구조화하여 저장함으로써 자료 검색과 갱신의 효율을

높이게 된다.

몇개의 자료파일을 조직적으로 통합하여 자료항목의 중복을 없애고 자료를 구조화하여 

기억시켜 놓은 자료의 집합체가 데이터베이스라고 할 수 있다.

 

프로그램을 만들다보면 프로그램 사용자들에 의해 생성된 데이터 등 필연적으로 많은

데이터들이 생성되어지게 되는데 데이터베이스를 사용하지 않으면 이 데이터들은

프로그램을 종료하는 순간 전부 날아가게 된다.

이러한 현상을 방지하기 위해 데이터들을 데이터베이스에 넣고 보관하는 방법을 사용한다.

 

데이터베이스 용어로는 식별자(identifier), 튜플(Tuple), 어트리뷰트(Attribute)가 있으며

식별자는 여러개의 집합체를 담고있는 관계형 데이터베이스에서 각각의 구분할 수 있는

논리적인 개념이며 특성으로는 유일성, 최소성의 특성을 갖고 있다.

 

유일성은 하나의 릴레이션에서 모든 행은 서로 다른 키 값을 가져야 한다는 것이고

최소성은 꼭 필요한 최소한의 속성들로만 키를 구성해야 한다는 것이다.

 

튜플은 테이블에서 행을 의미한다.

레코드(Record) 혹은 로우(Row)라고 불리기도 하며 튜플은 릴레이션에서 같은값을

가질 수 없다. 튜플의 수는 카디널리티(Cardinality)라고 한다.

 

어트리뷰트는 테이블에서 열을 의미한다. 같은말로 칼럼(Columm)이라고도 하며,

어트리뷰트의 수를 의미하는 단어는 디그리(Degree)라고 한다.

 

쿼리문법의 종류는 세종류로 분류 해 볼 수 있다.

 

첫번째로 데이터 정의언어(DDL)는 관계형 데이터베이스의 구조를 의미한다.

쌍, 속성, 관계 인덱스 파일 위치 등 데이터베이스 고유의 특성을 포함한다.

 

두번째로 데이터 조작언어(DML)는 데이터베이스 검색, 등록, 삭제, 갱신을 하기 위해 사용하는

데이터베이스 언어이며 데이터베이스의 검색 및 업데이트 등 데이터 조작을 위해 사용한다.

 

세번째로 데이터 제어언어(DCL)는 데이터베이스에서 데이터에 대한 엑세스를 제어하기 위한

데이터베이스 언어 또는 데이터베이스 언어 요소이다.

컴파일은 프로그래밍 언어를 런타임 이전에 기계어로 해석하는 작업방식이다.

런타임 이전에 어셈블리어로 변환하기 때문에 구동시간이 오래 걸리지만 구동된 이후는 하나의

패키지로 매우 빠르게 작동하게 된다.

구동시에는 코드와 함께 시스템으로부터 메모리를 할당 받으며, 할당받은 메모리를 사용하게 된다.

런타임 이전에 이미 해석을 마치고 대개 컴파일 결과물이 바로 기계어로 전환되기 때문에

OS 및 빌드환경에 종속적이다.

컴파일 언어는 대표적으로 C와 C++가 있고 자바도 ByteCode로 바꾸기 위한 과정에서 컴파일을

수행하게 된다.

 

 

인터프리터 방식은 런타임 이전에 기계어로 프로그래밍 언어를 변환하는 컴파일 방식과는 다르게,

런타임 이후에 Row 단위로 해석하며 프로그램을 구동시키는 방식이다.

프로그래밍 언어를 기계어로 바로 바꾸지 않고 중간단계를 거친 뒤, 런타임에 즉시 해석하기 때문에

컴파일 방식에 비해 낮은 퍼포먼스를 보이게 된다.

런타임에 직접 코드를 구동시키는 특징이 있기 때문에 실제 실행시간은 느리며,

대신 런타임에 실시간 Debugging 및 코드 수정이 가능하다.

컴파일 방식과 다르게 메모리는 별도로 할당받아 수행하지 않으며, 필요할 때 할당해서 사용한다.

대표적인 언어로는 javascript같은 스크립팅 언어들이 있지만, 스크립트 언어 뿐 아니라

컴파일 이후의 동작에서 인터프리트를 수행하는 언어들도 많이 존재한다.

 

 

 

file의 종류는 마스터파일, 트랜잭션파일, 보고서파일, 작업파일, 프로그램파일, 텍스트파일로

분류된다.

 

마스터파일은 어느 한 시점에서 조직체의 업무에 관한 정적인 면을 나타내는 데이터의 집합이다.

비교적 영구적인 데이터이고 한번 생성시 변화가 거의 없다.

보통 파일이라고 하면 마스터파일을 의미한다.

 

트랜잭션 파일은 마스터파일의 변경내용을 모아 둔 파일이며 마스터파일과 반대로 자주

바뀌고 마스터파일을 변경하기 위한 데이터파일이다.

 

보고서 파일은 사용자에게 정보검색의 결과를 보여주기 위해 일정한 형식을 갖춘 데이터를

저장하고 있는 파일을 말한다.

 

작업파일은 어느 한 프로그램에서 생성된 출력데이터를 다른 프로그램의 입력데이터로

사용하기 위해 임시로 만드는 파일로 Temporary file 이라고 한다.

 

프로그램파일은 데이터를 처리하기 위한 명령어들을 저장하고 있는 파일이며,

 

텍스트 파일은 문자, 숫자와 그래픽 데이터를 포함하고 있는 파일이다.

 

'JAVA' 카테고리의 다른 글

연산자 사용 및 프레임워크, tools, IDE 의 차이점  (1) 2020.04.28
빌드(Build)  (1) 2020.04.28
변수, 상수, 연산자, 초기화, 대입, 선언  (0) 2020.04.28
메모리구조  (0) 2020.04.28
DataBase란?  (0) 2020.04.28

+ Recent posts