C#(111)
-
닷넷 프레임 워크 구조
[닷넷 프레임워크의 실행 구조] CIL(Common Intermediate Language) : 공통 중간 언어로 속칭 'IL코드'라 한다. C# 기준으로 C# 컴파일러가 만들어내는 중간 언어로 '런타임'이 이해할 수 있는 언어다. 뿐만 아니라 모든 닷넷 호환 언어는 IL코드로 컴파일이 가능하다. 닷넷 호환 언어 : 어떤 언어의 컴파일러든 결과물로 중간 언어로 생성해 낸다면 CLR이 그것을 실행할 수 있다. 닷넷 호환 언어는 코드의 결과물을 공유하기 때문에 상호 호출이 가능하다. C#에서 F#클래스를 상속받는등 CTS(Common Type System) : 공용 타입 시스템으로 닷넷 호환 언어가 지켜야할 타입의 표준 규격을 정의한것이다. 만약에 새로운 언어를 만든다면 CTS 규약을 만족하는 한도 내에서만..
2022.07.01 -
Static, 싱글톤
[static] static 키워드는 변수나 함수, 클래스에 정적 속성을 부여하는 것으로 클래스로부터 객체를 생성하지 않고 변수나 함수를 호출할 수 있도록 해주는 것이다. 클래스의 일반 멤버 변수는 클래스의 객체가 생성될 때, 각 객체마다 따로 생기지만, 정적 변수는 해당 클래스가 처음으로 사용되는 때에 한번만 초기화되어 계속 동일한 메모리를 사용하게 된다. 도식으로 보면 위의 그림과 같다. 정적 변수를 포함한 클래스 A의 객체를 두 개를 생성하여 각 이름을 object1, object2라고 했을 때, 각 인스턴스에는 정적 변수가 포함되지 않으며, 일반 멤버 변수만 포함된다. 클래스 A의 정적 변수는 클래스 A가 처음 사용되는 시점에 별도의 메모리 공간에 할당된다. -> 생성된 객쳉 정적 변수가 포함되지..
2022.07.01 -
메모리 구조, 바이트 정렬
[메모리 구조] 메모리 영역에 관해 공부하기 전에 프로그램이 어떤식으로 실행되는지 과정을 살펴 보자. 위 이미지는 프로그램의 정보를 읽어 메모리에 로드되는 과정을 보여준다. 프로그램이 실행하게 되면 OS는 메모리에 공간을 할당해준다. 할당해주는 메모리 공간은 4가지가 있다. *메모리 구조 코드 영역 텍스트 영역은 코드를 실행하기 위해 저장되어 있는 영역을 말한다. 흔히 코드 영역이라고도 하는데 프로그램을 실행시키기 위해 구성되는 것들이 저장되는 영역이다. 한마디로 명령문들이 저장되는 것인데, 제어문, 함수, 상수들이 이 영역에 저장된다. 데이터 영역 데이터 영역은 우리가 작성한 전역변수, 정적변수 등이 저장되는 공간이다. 이들의 특징을 보면 보통 메인함수 전에 선언되어 프로그램이 끝날 때까지 메모리에 남..
2022.07.01 -
[운영체제] 메모리 관리, 페이징기법, 세그멘테이션, 가상메모리
[메모리 관리] *Logical address vs Physical address Physical address : 물리 메모리에 실제 올라가는 위치 Logical address : 각 프로세스마다 독립적으로 가지는 주소공간 -> CPU가 보는 주소는 logical address -> 프로그램을 실제 메모리에 올리기 위해 Logical address를 Physical address로 바꿔주는 과정이 필요한데 이를 Address binding이라고 한다. *Address binding 어떤 프로그램이 메모리의 어느 위치에, 즉 어떤 물리적 주소에 load 될지를 결정하는 과정이다. Compile Time binding 이미 컴파일 때 물리적 메모리 주소로 변환되므로 컴파일에 존재하는 주소를 그대로 사용한다..
2022.07.01 -
[운영체제] OS, 스케쥴링
[OS] 운영체제의 가장 주된 목적은 컴퓨터 하드웨어를 관리하는 것이다. 컴퓨터에는 수많은 하드웨어가 존재한다. CPU, 메모리, 키보드, 마우스 등이 있으며 이를 잘 관리해줘야 컴퓨터를 효율적으로 사용할 수 있다. 운영체제는 사용자에게 편의를 제공하는 목적도 가지고 있다. 운영체제가 없다면 위에서 말한 하드웨어에 관한 모든 관리를 사용자가 직접 해야하기 때문에 컴퓨터를 사용하는데 매우 불편할 것이다. 하지만 지금의 컴퓨터는 사용자가 매우 편하게 사용할 수 있다. 운영체제의 기능에는 CPU, 메모리등의 자원관리, 스케줄링 기능 제공, 각종 하드웨어의 관리 및 제어등이 있으며 이론적으로 운영체제의 목적은 다음과 같은 4가지다. 쉽게 정의하자면 운영체제는 컴퓨터의 성능을 높이고, 사용자에게 편의성을 제공하는..
2022.07.01 -
[async/await]
[async/await] *async 컴파일러에게 이 메서드의 내부에 await가 사용되고 있으므로 코드를 비동기 호출 형태로 변환하라는 지시 라고 이해하면 편하다 async메서드는 void 또는 Task 또는 Task를 반환한다. 대부분 Task 혹은 Task를 반환한다. -> void는 await를 하지 않기 때문 보통 비동기 이벤트 핸들러를 만들 때 사용함 *await 비동기 작업의 흐름을 제어하는 키워드라고 할 수 있다. 일반적으로 Task 혹은 Task 객체와 함께 사용된다. -> 내부적으로 타이머를 도는 동안 메인스레드는 block하지 않고 계속해서 실행된다. 만약 Delay앞에 await를 빼면 어떻게 될까? 5초를 기다리지 않고 "TaskTest Done" 이 바로 출력된다. 여기서 알 수..
2022.07.01