STUDY/CS(6)
-
어셈블리어에 대한 개념 정리
어셈블리어어셈블리어 : 컴퓨터 언어는 0과 1로 구성된 기계어이다. 이를 사람이 이해하긴 어렵다. 예를 들어 '01001100 00001000 10000001 10010000' 같은 기계어 명령어를 어셈블리어에서는 'MOV'라고 하면 된다. 물론 컴퓨터는 'MOV' 라는 명령어를 전혀 이해하지 못한다. 컴퓨터는 0과 1만 알아듣기 때문이다. 그래서 이 어셈블리어는 일종의 번역 과정을 거쳐 컴퓨터가 이해하는 기계어 코드로 변환되는데, 이것을 컴파일 이라고 한다.프로그래머가 어셈블리어로 프로그램 코드를 작성한 후 컴파일러라는 소프트웨어를 이용하여 실행 파일을 만들어내는데, 이 실행 파일이 바로 프로그램이다. 어셈블리어처럼 프로그램을 작성하기 위해 만들어진 인공 언어 체계를 '프로그래밍 언어'라고 한다. 어..
2024.09.28 -
객체 지향 프로그래밍이란
[객체 지향]객체 지향 프로그래밍이란?(OPP : Object Oriented Programming)객체 지향 프로그래밍은 컴퓨터 프로그래밍 페러다임 중 하나로 프로그래밍에서 필요한 데이터를 추상화시켜 상태의 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 말 그대로 객체 지향은 기능이 아닌 객체가 중심이 되어 "누가 어떤 일을 할 것인가?" 가 핵심이 된다. 즉 객체를 도출하고 각각의 역할을 정의해 나가는 것에 초점을 맞춘다.객체 지향에 대한 이해를 위해 절차 지향 프로그래밍과 비교하면서 설명하겠다.객체 지향 프로그래밍은 객체가 중심이 된다면 절차 지향 프로그래밍은 무엇이 중심이 될까?절차 지향은 기능 중심으로 바라보는 방식으로 "무엇을 어떤 절..
2022.08.17 -
C# GC(Garbage Collector) 가비지 컬렉터
[GC(Garbage Collector)]C#에서 객체 생성 시 메모리 할당 방식-> 첫 영역부터 차곡차곡..-> 메모리 할당이 가능한 영역을 찾는 과정이 없기 때문에 속도가 빠름 *C#에서 GC에 의한 메모리 해제 방식GC Root 라는 것이 있다. 루트는 힙에 있는 객체를 가리키는 참조를 말한다.-> 여기서 a가 루트 루트 목록을 순회하면서 루트가 참조하는 힙 객체와 관계를 조사한다. 어떤 루트와도 관계가 없다면 쓰레기로 간주한다쓰레기 객체가 차지하는 메모리는 해제한다.남은 객체들은 다시 비어있는 공간에 재배치 시켜준다.위 과정이 GC의 큰 틀이다. C#은 메모리 관리를 용이하게 하기 위해 세대별 GC를 지원한다. 그 이유는 아래와 같다.GC는 파편화를 방지하기 위해 메모리를 압축하는데 한번에 전체를..
2022.08.17 -
dll, lib
라이브러리 : 함수, 데이터 타입 등 여러가지 프로그래밍 요소들의 집합을 말한다. 라이브러리를 왜 사용해야하는가?자주 사용하는 함수들을 쉽게 사용할 수있다.모든 코드를 직접 만들 수는 없다.dll(Dynamic Link Library) 특징 :그로 인해 프로그램 로딩 시간이 단축된다.dll파일만 수정해서 dll파일만 배포하면 된다.메인 실행 파일의 사이즈가 작아진다. lib(Static Link Library) : 특징 : 즉, 라이브러리 파일이 따로 없더라도 실행 파일 자체가 모든 라이브러리를 가지고 다닌다.만약 어떤 수정사항이 생기면 소스를 수정해서 다시 배포해야한다.실행 파일의 크기가 커진다. dll을 쓰는 이유는 무엇일까? Lib는 실행파일에 직접 포함되기 때문에 라이브러리에 문제가 생기면 수정된..
2022.07.01 -
닷넷 프레임 워크 구조
[닷넷 프레임워크의 실행 구조]CIL(Common Intermediate Language) : 공통 중간 언어로 속칭 'IL코드'라 한다. C# 기준으로 C# 컴파일러가 만들어내는 중간 언어로 '런타임'이 이해할 수 있는 언어다. 뿐만 아니라 모든 닷넷 호환 언어는 IL코드로 컴파일이 가능하다.닷넷 호환 언어 : 어떤 언어의 컴파일러든 결과물로 중간 언어로 생성해 낸다면 CLR이 그것을 실행할 수 있다. 닷넷 호환 언어는 코드의 결과물을 공유하기 때문에 상호 호출이 가능하다. C#에서 F#클래스를 상속받는등CTS(Common Type System) : 공용 타입 시스템으로 닷넷 호환 언어가 지켜야할 타입의 표준 규격을 정의한것이다. 만약에 새로운 언어를 만든다면 CTS 규약을 만족하는 한도 내에서만 구현..
2022.07.01 -
메모리 구조, 바이트 정렬
[메모리 구조]메모리 영역에 관해 공부하기 전에 프로그램이 어떤식으로 실행되는지 과정을 살펴 보자. 위 이미지는 프로그램의 정보를 읽어 메모리에 로드되는 과정을 보여준다. 프로그램이 실행하게 되면 OS는 메모리에 공간을 할당해준다. 할당해주는 메모리 공간은 4가지가 있다.*메모리 구조코드 영역텍스트 영역은 코드를 실행하기 위해 저장되어 있는 영역을 말한다. 흔히 코드 영역이라고도 하는데 프로그램을 실행시키기 위해 구성되는 것들이 저장되는 영역이다. 한마디로 명령문들이 저장되는 것인데, 제어문, 함수, 상수들이 이 영역에 저장된다.데이터 영역데이터 영역은 우리가 작성한 전역변수, 정적변수 등이 저장되는 공간이다. 이들의 특징을 보면 보통 메인함수 전에 선언되어 프로그램이 끝날 때까지 메모리에 남아있는 변수..
2022.07.01