반응형

CS 56

[홍정모의 그래픽스 새싹코스 Part1] 구 만들기

앞서 이 포스팅은 홍정모의 그래픽스 Part1을 수강하고 작성한 내용입니다. 강의의 세부 코드는 첨부하지 않고, 결과와 이론 위주로 포스팅했습니다. 구와 직선의 방정식 구를 스크린 좌표에 나타내기 위해서는 먼저 구의 방정식을 알아야한다. x를 구 위의 점, c를 중점, r을 반지름이라고 했을 때 구의 방정식은 다음과 같다. 그리고 점 x를 지나고 o에서 시작하는 방향벡터가 u인 직선의 방정식은 다음과 같다. 구와 직선의 교점관계 먼저 구와 직선이 만날 때는 3가지 관계로 분류할 수 있는데 1. 만나지 않는 경우 2. 한 점에서 접하는 경우 3. 두 점에서 만나는 경우가 있다. 직선과 구의 교점을 x라고 하자. 구의 방정식 x에 직선의 방정식을 대입하면 다음과 같다. 내적을 전개하면 아래와 같다. 여기서 ..

CS/그래픽스 2023.12.06

[홍정모의 그래픽스 새싹코스 Part1] 원 만들기

앞서 이 포스팅은 홍정모의 그래픽스 Part1을 수강하고 작성한 내용입니다. 강의의 세부 코드는 첨부하지 않고, 결과와 이론 위주로 포스팅했습니다. Case 1 : Screen 좌표 2차원 원을 그리고자 한다. 원은 중심과 그 반지름을 알면 2차원에서의 원을 그릴 수 있다. 모든 픽셀을 순환하면서 해당 픽셀이 원의 반지름보다 가깝거나 같으면 색칠을 해주고, 반지름보다 크면 색칠해주지 않으면 된다. IMGUI로 원의 중심, 반지름, 색칠할 RGB값이 미리 세팅되어 있다. 원을 그리는 코드는 Update에 있는데, 여기서 모든 픽셀을 순환하면서 원의 영역 안에 있으면 픽셀을 색칠해 주면 되었다. "영역 안에 있다"는 Circle.h 안의 IsInside 함수를 사용했는데, 해당 점의 좌표가 원 안에 있으면 ..

CS/그래픽스 2023.12.05

면접 대비... (작성 중)

shared_ptr 문제점, 해결 방안 깊은복사 얕은복사 메모리 단편화 원인, 해결책 메가 인티저(비트 밀림?) 포인터에서 const 위치 쓰레드 데드락 발생 상황 멀티스레드 임계영역, 스레드 무한 대기상태 컨텍스트 스위칭 시스템 콜 branch prediction instruct pipelining push_back, emplace_back 맵, 해시맵(map, unoreded_map) 트리 순회 gcd 문제[ (최대공약수, 최소공배수) 사원수 짐벌락 벡터 내적, 외적 사용처 렌더링 파이프라인 NDC 알파테스팅, 알파 블렌딩, 알파소팅 깊이버퍼 arctam(x), arctan2(y, x) 메모리 영역 프로세스 스레드 캐시 메모리의 존재 이유 float에서 오차가 생기는 이유 메모리풀 call by po..

CS 2023.03.20

Blocking, Non-Blocking I/O와 Asynchronous, synchronous I/O

개요 Blocking I/O와 Non-Blocking I/O의 차이, Asynchronous I/O와, synchronous I/O의 차이점에 대해 설명한다. 예전부터 좀 헷갈리던 개념인데 차근차근 정리해보고자 한다. Blocking I/O와 Non-blocking I/O Blocking I/O : I/O 작업이 완료될 때까지 프로그램이 멈추고 대기하는 방식, 데이터 전송이 완료될 때까지 프로그램이 멈추기 때문에 다른 작업을 수행할 수 없음. I/O 작업이 오래 걸리는 경우 전체 시스템 성능이 저하될 수 있음. Non-blocking I/O : I/O 작업이 완료되지 않았더라도 프로그램이 계속 실행되는 방식, I/O 작업이 완료되지 않았더라도 다른 작업을 수행할 수 있으므로, 여러 작업을 동시에 처리할 ..

CS 2023.03.18

컴퓨터에서 음수 표현하기(1의 보수, 2의 보수)

개요 컴퓨터에서 음수를 표현하는 방법에 대해 서술한다. 본문 컴퓨터에서는 숫자를 이진법으로 표기한다. 음수를 표현하려면 다음과 같은 방법들을 쓸 수 있다. (bit 수는 4bit로 가정한다.) 1. sign bit 추가 제일 앞 비트를 sign bit로 사용해 0이면 양수, 1이면 음수로 취급하는 방법이다. 예를 들어 0001을 1이라고 하면 1001은 -1이 된다. sing bit에는 문제점이 있다. 1 - 1은 1 + (-1)로 볼 수도 있는데, 위의 예시에서 1 + (-1)은 1010으로 0이 나오지 않고 -2가 나온다. 이를 해결하기 위해 고안된 방법이 1의 보수이다. 2. 1의 보수 특정 수에 더해서 모든 bit가 1이 되게 만드는 수를 특정 수의 1의 보수라고 한다. 1의 보수는 0을 1로, ..

CS/컴퓨터 구조 2023.01.13

[OS] 프로세스 간 통신 (IPC)

개요 실행중인 프로세스가 다른 실행중인 프로세스들과 데이터를 공유하지 않는다면 그 프로세스는 독립적인 프로세스이고, 다른 프로세들에 영향을 주거나 받는다면 협력적인 프로세스이다. 협력적인 프로세스들은 데이터를 교환할 수 있어야 하므로 프로세스 간 통신 기법(InterProcess Communication, IPC)가 필요하다. 프로세스 간 통신에는 공유 메모리와 메시지 전달의 두 가지 모델이 있다. 공유 메모리 방식 협력 프로세스들에 의해 공유되는 메모리 영역이 구축된다. 프로세스들은 영역 안에 데이터를 읽고 쓰면서 정보를 교환한다. 공유 메모리 영역은 공유 메모리 세그먼트를 생성하는 프로세스의 주소 공간에 위치한다. 통신하고자 하는 다른 프로세스들은 세그먼트를 자신의 주소 공간에 추가해야 한다. 그런 ..

CS/OS 2022.08.04

[OS] 프로세스

개요 디스크에 있는 데이터 파일을 프로그램이라고 하고, 메모리에 올라와 실행 중인 프로그램을 프로세스라고 한다. 프로세스는 현대 컴퓨팅 시스템에서 작업의 단위를 뜻한다. 프로세스 메모리 배치 Text(Code) 영역 : 실행 코드가 저장된다. Data 영역 : 전역 변수들이 저장된다. Heap 영역 : 프로그램 실행 중에 동적으로 할당되는 메모리이다. Stack 영역 : 함수를 호출할 때 데이터(함수 매개변수, 복귀 주소 및 지역 변수)를 임시로 저장하는 메모리이다. Text, Data 영역의 크기는 고정되어 있어 프로그램 실행 시간 동안 크기가 변하지 않는다. Heap, Stack 영역은 프로그램 실행 중에 동적으로 줄어들거나 커질 수 있다. 운영체제는 Stack과 Heap 영역이 서로 겹치지 않도록 ..

CS/OS 2022.08.02

[OS] 시스템 프로그램

개요 프로그램은 응용 프로그램과 시스템 프로그램으로 나눌 수 있다. 시스템 프로그램은 응용 프로그램을 실행하기 위한 플랫폼을 제공하고, 컴퓨터 하드웨어를 동작, 접근할 수 있게 해 준다. 사용자의 문제를 직접 해결하는 응용 프로그램과는 반대의 개념을 가지고 있다. 시스템 서비스, 시스템 유틸리티라고도 한다. 역할 시스템 프로그램의 역할은 다음과 같다. 파일 관리 파일과 디렉토리를 생성, 삭제, 복사, 개명(Rename), 인쇄, 조작한다. 상태 정보 날짜, 시간, 사용 가능한 메모리, 디스크 공간의 양, 사용자 수 등등의 상태 정보를 제공한다. 파일 변경 디스크나 다른 저장 장치에 저장된 파일의 내용을 생성하고 변경한다. 프로그래밍 언어 지원 컴파일러, 어셈블러, 디버거 및 인터프리터 등을 제공한다. 프..

CS/OS 2022.08.01

[컴퓨터 구조] SMP와 NUMA

개요 Mutilprocessor System의 종류 중 하나인 SMP와 NUMA에 대해 서술한다. 먼저, 컴퓨터 시스템 구성요소의 용어 정의를 할 필요가 있다. CPU : 명령을 실행하는 하드웨어 프로세서(processor) : 하나 이상의 CPU를 포함하는 물리적 칩 코어(core) : CPU의 기본 계산 단위 다중 코어 : 동일한 CPU에 여러 컴퓨팅 코어를 포함하는 것 다중 처리기(multiprocessor) : 프로세서가 여러 개 있는 것 SMP(Symmetric multiprocessing) 두 개 이상의 프로세서가 한 개의 공유된 메모리를 사용하는 다중 프로세서 컴퓨터 아키텍처이다. 각 프로세서에 개별 레지스터, 또는 캐시가 존재한다. 메인 메모리는 시스템 버스를 통해 공유한다. 한 번의 한 ..

CS/컴퓨터 구조 2022.07.30

[DB] 회복

개요 트랜잭션이 버퍼에는 갱신 사항을 반영했지만, 버퍼의 내용이 디스크에 기록되기 전에 고장이 발생할 수 있다. 고장이 발생하기 전에 트랜잭션이 완료 명령을 수행했다면 회복 모듈은 이 트랜잭션의 갱신 사항을 재수행(REDO)하여 트랜잭션의 갱신이 지속성을 갖도록 해야 한다. 고장이 발생하기 전에 트랜잭션이 완료 명령을 수행하지 못했다면 원자성을 보장하기 위해서 이 트랜잭션이 데이터베이스에 반영했을 가능성이 있는 갱신 사항을 취소(UNDO)해야 한다. 저장 장치의 유형 주기억 장치와 같은 휘발성 저장 장치에 들어 있는 내용은 시스템이 다운된 후에 모두 사라진다. 디스크와 같은 비휘발성 저장 장치에 들어 있는 내용은 디스크 헤드 등이 손상을 입지 않는 한, 시스템이 다운된 후에도 유지된다. 안전 저장 장치는..

CS/DB 2022.06.15
반응형