본문 바로가기

학위공부

(53)
방송통신대학교 컴퓨터과학 4학년 후기(4.5, 4.25) 원래 졸업장 나오면 졸업 후기로 한번에 쓰려고 했는데, 매번 블로그 올 때 마다 컴과 후기 글이 인기가 많길래 4학년 글도 후딱 작성해봐야겠다. 이전 한 학기에 7과목을 수강했는데, 이번엔 학점이 널널해서 1년동안 7과목을 수강했다. 이번에 3학년때 보다는 더 열심히 공부하기도 했고.. 특히 2학기때는 일이 너무 바빴어서 한 과목씩 줄이다가 결국 졸업에 필요한 학점만 받고 졸업하게 되었다. 졸업에 관련된 내용은 다음에 더 자세히 쓰고 이번에는 4학년에 수강한 과목들의 한줄평 정도만 작성해보도록 하겠다. C++프로그래밍 커리큘럼상 C언어 다음으로 배우는 프로그래밍 언어. 사람들에게 악명이 높은 언어라 그런지 Java는 듣더라도 C++은 듣지 않는 사람들이 좀 있는듯 하다. 둘다 해본 입장에서는 둘 다 크게..
[기술면접]C# 델리게이트와 이벤트 델리게이트와 이벤트 Delegate 메소드에 대한 참조, 변수가 아닌 메소드 자체를 넘기고 싶을 때 델리게이트를 사용한다. 델리게이트 체인 델리게이트에 메소드를 등록할 떄 += 연산자 또는 Delegate.Combine()메소드를 이용하여 델리게이트 실행시 실행될 메소드를 등록할 수 있다. 이 때 여러개의 메소드를 동시에 참조할 수 있는데 이를 델리게이트 체인이라고 한다. 델리게이트 체인은 참조된 순서대로 함수들을 호출하며, -= 연산자 또는 Delegate.Remove()메소드를 이용하여 체인을 끊을 수 있다. 익명 메소드 델리게이트로 참조할 메소드가 다시 사용할 일이 없다고 판단되면 익명 메소드를 통해 메소드를 연결시켜주는것이 효율적일 수 있다. 익명 메소드는 아래와 같은 형식으로 선언할 수 있다. ..
[기술면접]C# 가비지콜렉션(GC) Garbage Collection 메모리 관리 기법 중의 하나로, 프로그램이 동적으로 할당했던 메모리 영역 중에서 필요없게 된 영역을 해제하는 기능. 할당된 힙 안의 객체들의 크기가 임계치를 넘어가는 순간 GC(Garbage Collection)을 수행하여 힙 메모리를 관리함. GC가 수행되는 순간 현재 수행중인 Thread들을 모두 중단시키고 GC Thread를 활성화한다. GC Thread는 힙 상에서 사용 중인 객체 참조 그래프를 생성하고 사용 중인 객체의 위치를 재조정함으로써 사용하지 않는 객체들을 모두 힙 상에서 제거한다. 장점 유효하지 않은 포인터 접근 방지 포인터 이중 해제 방지 메모리 누수 방지 단점 어떤 메모리를 해제할 지 결정하는 데 비용이 든다 GC가 일어나는 타이밍이나 점유 시간을 ..
[기술면접]메모리 관리 전략 메모리 관리 전략 프로세스는 독립된 메모리 공간을 갖고 있고, 운영체제 혹은 다른 프로세스의 메모리 공간에 접근할 수 없는 제약이 걸려 있다. 오로지 운영체제 만이 운영체제 메모리 영역과 사용자 메모리 영역의 접근에 제약을 받지 않는다. Swapping: 메모리의 관리를 위해 사용되는 기법. 표준 Swapping 방식으로는 round-robin과 같은 스케줄링의 다중 프로그래밍 환경에서 CPU 할당 시간이 끝난 프로세스의 메모리를 보조 기억장치(하드디스크)로 내보내고 다른 프로세스의 메모리를 불러 들일 수 있다. swap에는 큰 디스크 전송시간이 필요하기 때문에 현재에는 메모리 공간이 부족할때 Swapping이 시작된다. 단편화(Fragmentation) 프로세스들이 메모리에 적재되고 제거되는 일이 반복..
[기술면접]프로세스와 스레드 프로세스와 스레드 프로세스: 프로그램 메모리 상에서 실행중인 작업 스레드: 프로세스 안에서 실행되는 여러 흐름 단위 기본적으로 프로세스마다 최소 1개의 스레드 소유(메인 스레드 포함) 메모리 영역 Code: 코드 자체를 구성하는 메모리 영역(프로그램 명령) Data: 전역변수, 정적변수, 배열 등data: 초기화 된 데이터가 저장되는 영역bss: 초기화 되지 않은 데이터가 저장되는 영역 Heap: 동적 할당 시 사용 Stack: 지역변수, 매개변수, 리턴 값 등 임시 메모리 영역 스레드데이터영역 (연두색: Heap, Data, 파란색: thread, 노란색: stack) 스레드는 Stack만 따로 할당 받고 나머지 영역은 서로 공유 하나의 프로세스가 생성될 때, 기본적으로 하나의 스레드가 같이 생성됨 프..
[기술면접]크자이공부 SRTRP(스자이공부) 월드 스페이스에서 물체를 월드 좌표에 배치할 때 행렬을 연산하는 순서 이때 하나의 연산을 표현하기 위해 4X4 행렬을 사용하며, 이를 변환행렬이라고 한다. (맨 앞의 S를 '크기'라고 발음하여 크자이공부라고 부르기도 한다) 4X4 행렬을 사용하는 이유 3차원 벡터의 Translation을 표현하기 위해서는 4x4행렬이 필요하다. 왜냐하면 행렬은 위치와 무관하게 오직 방향과 크기만 서술하기 때문이다. 이를 이용하기 위해 3차원 벡터를 (x,y,z,1)과 같은 형태의 4차원 벡터로 가정하고 연산을 진행하며 이를 동차 좌표계라고 한다. 4차원 벡터의 w값을 0으로 설정하는 경우 이동 변환은 적용되지 않는다. 이동 행렬 이동행렬 회전 행렬 회전행렬 스케일 행렬 스케일 행렬 행렬의 연산 순..
[기술면접]렌더링 파이프라인 Rendering Pipeline 3차원의 가상 세계를 2차원의 이미지로 생성하는데 필요한 일련의 단계들을 렌더링 파이프라인(Rendering Pipeline)이라고 부른다. 그래픽스 파이프라인 과정 입력 조립기 버텍스 셰이더 테셀레이션 지오메트리 셰이더 레스터라이저 픽셀 셰이더 출력 병합기 입력 조립기(Input Assembler) 메모리에서 기하 자료(정점, 인덱스)를 읽어서 기본 도형을 조립한다. Primitive topology 정점들을 어떻게 엮어서 구조를 형성할 것인지 알려주는 수단이 Primitive topology이다. 정점을 두개 씩 엮어서 선분을 형성할 수도 있고, 세 개씩 엮어서 삼각형을 형성할 수도 있다. 거의 대부분 Trianglelist을 Primitive topology로 사용..
방송통신대학교 컴퓨터과학 3학년 1학기 후기(4.5) 7전공 99.4점 정도의 점수를 받아서 4.5(A+)학점을 얻게 되었다. 이번 학기는 지난 학기보다 불확실성이 컸던 학기로, 몇몇 과목이 시험으로 변경되면서 기존 기출문제의 출제 유형을 따라가지 않는 과목들도 있었다. 이로 인해 기출문제만 공부하셨던 분들이 큰 피해를 입은 것으로 알고있다. 그래도 강의 듣고 교재로 꼼꼼히 공부하면 점수받기 힘들 과목은 없었던것 같다. C프로그래밍 첫 프로그래밍 과목으로 추천하는 과목답게 난이도가 낮게 측정되어있다. 시험도, 과제도 모두 쉬운편에 속한다고 생각한다. 초보자가 C언어를 공부하면서 헷갈릴만한 내용들을 전부 제외하고 커리큘럼을 구성했다는 생각이 들 정도였다. 그래도 프로그래밍 과목인만큼 처음 프로그래밍을 접한 사람은 시간을 많이 투자해서 꼼꼼히 공부해야한다고 말..