
총 46개
-
소프트웨어 보안 CWE Top 25 보안 약점 과제2025.01.121. Use After Free (UAF) UAF는 해제된 메모리 영역을 재사용할 때 발생하는 보안 약점으로, Heap 영역에서 일어나는 문제입니다. 해제된 메모리 공간이 새로운 포인터에 할당될 경우 그 포인터가 해당 영역의 값과 주소 값을 사용할 수 있게 되어 발생합니다. 이를 악용하여 공격자가 해당 영역을 공격 코드로 덮으면 개발자가 의도치 않게 공격 코드를 실행할 수 있습니다. 2. Server-Side Request Forgery (SSRF) SSRF는 서버 측에서 피해자에게 위조된 요청을 보내도록 하는 공격입니다. 웹 서버...2025.01.12
-
컴퓨터구조_컴퓨터 내부에서 사용하는 명령어 사이클의 4가지 단계에 대해서 비교 설명하시오.2025.01.291. 명령어 인출 단계 (Fetch) 명령어 사이클의 첫 번째 단계는 명령어 인출(fetch) 단계이다. 이 단계는 CPU가 메모리에서 실행할 명령어를 불러오는 과정이다. 현대 컴퓨터에서 CPU는 프로그램 카운터(PC)를 통해 다음에 실행할 명령어의 위치를 추적한다. 프로그램 카운터는 메모리 주소를 가리키며, 이를 바탕으로 명령어를 메모리에서 인출하여 명령어 레지스터(IR)에 저장한다. 이때 CPU는 주소 버스를 통해 명령어가 저장된 메모리 주소를 지정하고, 데이터 버스를 통해 해당 명령어를 인출하여 명령어 레지스터로 전달한다. 2...2025.01.29
-
C언어 - 포인터에 관련한 다음 물음들에 대한 답을 제시하시오2025.01.271. 포인터의 개념과 기능 포인터의 개념은 '주소를 저장하는 변수'로 여기에는 두 가지 중요한 점이 있습니다. 하나는 '주소를 저장한다'는 것이고 다른 하나는 '변수'라는 것입니다. 포인터는 정의할 때 *를 붙이며, 포인터에 어떤 주소를 넣느냐에 따라 정수형 포인터, 문자 포인터, 함수 포인터 등의 이름이 지정됩니다. 포인터는 메모리를 저장할 수 있는 특징이 있지만, 변수이기 때문에 생성만 해놓은 상태만으로는 아무것도 할 수 없습니다. 다른 변수의 메모리 주소를 대입하거나 메모리를 할당하는 함수를 사용하여 메모리를 할당받은 후, 해...2025.01.27
-
병렬프로그래밍 CUDA 프로그래밍 과제1 - Vector Addition2025.05.061. CPU를 이용한 벡터 덧셈 계산 CPU로 처리해서 벡터 합을 계산하는 코드를 제공하였습니다. 이 코드는 벡터의 크기를 입력받아 각 벡터의 원소들을 더하여 결과를 생성합니다. 시간 측정을 통해 벡터의 크기가 커질수록 연산 시간이 늘어나는 것을 확인할 수 있습니다. 2. GPU를 이용한 벡터 덧셈 계산 GPU로 처리해서 벡터 합을 계산하는 코드를 제공하였습니다. 이 코드는 CPU 코드와 유사하지만 CUDA 함수를 사용하여 GPU에서 병렬 처리를 수행합니다. 시간 측정 결과, 벡터의 크기가 10,000,000 이상일 때부터 GPU ...2025.05.06
-
재귀함수와 포인터의 개념 및 활용2025.01.191. 재귀함수 재귀함수는 자기 자신을 다시 호출하는 함수로, 주어진 문제를 더 작은 하위 문제로 분해하여 해결하는 방식으로 동작합니다. 재귀함수는 종료 조건을 명시적으로 정의해야 하며, 이 조건이 충족될 때 함수 호출을 중단하고 반환값을 계산합니다. 재귀함수는 분할 정복 알고리즘, 백트래킹, 데이터 구조 순회, 수학적 계산 및 문제 해결, 문자열과 배열 처리 등 다양한 분야에서 활용됩니다. 2. 포인터 포인터는 메모리의 주소를 저장하는 변수로, C언어에서 메모리 관리와 복잡한 데이터 구조 구현에 중요한 역할을 합니다. 포인터는 메모...2025.01.19
-
다양한 주소 지정 방식 중 직접 주소 방법과 간접 주소 방법 비교 설명2025.01.171. 직접 주소 방법 직접 주소 방법은 명령어가 데이터의 실제 메모리 주소를 포함하는 방식입니다. 이 방법은 구현이 단순하고 접근 속도가 빠르다는 장점이 있지만, 프로그램의 유연성이 떨어지고 메모리 사용의 비효율성이 있습니다. 주로 간단한 프로그램이나 시스템에서 사용됩니다. 2. 간접 주소 방법 간접 주소 방법은 명령어가 데이터의 실제 주소 대신 주소를 가리키는 포인터를 포함하는 방식입니다. 이 방법은 메모리 사용의 유연성을 높이고 프로그램의 유연성을 향상시킬 수 있지만, 접근 속도가 느리고 포인터 사용의 오류 가능성이 있습니다. ...2025.01.17
-
어셈블리언어(시스템프로그래밍) 과제-4 (고급 언어 구조와 정수 연산을 수행하는 프로그램)2025.05.111. 메모리 변수 사용 프로그램 메모리 변수를 사용하는 간단한 프로그램을 작성하여 Visual Studio 통합개발환경에서 어셈블러를 사용할 수 있는 프로젝트를 만들고 실행해보았습니다. 디버거 사용법도 연습하였습니다. 코드를 통해 변수 val1과 val2의 메모리 주소와 저장된 값을 확인할 수 있었고, 레지스터 eax에 두 값의 합이 저장된 것을 확인할 수 있었습니다. 2. if-else 구문 구현 if-else 구문을 구현하는 프로그램을 작성하였습니다. ecx와 edx 레지스터에 입력받은 값을 비교하여 조건부 점프를 통해 x 변수...2025.05.11
-
가상메모리에서 페이지 대치 알고리즘 비교2025.01.171. FIFO 알고리즘 FIFO 알고리즘은 메인 메모리에 가장 먼저 입력된 페이지를 선택하여 제거하는 방식입니다. 이는 마치 터널을 통과하는 자동차와 같아서, 터널에 가장 먼저 들어간 자동차가 반대편 터널에서 가장 먼저 나오게 됩니다. 2. 최적 페이지 대치 알고리즘 최적 페이지 대치 알고리즘은 향후 가장 오랫동안 사용되지 않을 페이지를 선택하여 교체합니다. 이는 향후 2초 동안 사용되지 않을 페이지를 교체하는 것과 같습니다. 3. LRU 알고리즘 LRU 알고리즘은 가장 최근에 사용되지 않은 페이지를 교체합니다. 이는 집을 청소하는...2025.01.17
-
[자료구조] 동적메모리를 구현하고 출력하는 소스코드2025.05.051. 동적 메모리 할당 이 코드는 동적 메모리 할당을 사용하여 구조체 배열을 생성하고 값을 할당한 후 출력하는 예제입니다. malloc() 함수를 사용하여 메모리를 동적으로 할당하고, 구조체 포인터 p를 통해 메모리에 접근하여 값을 설정합니다. 마지막으로 free() 함수를 사용하여 동적으로 할당된 메모리를 해제합니다. 1. 동적 메모리 할당 동적 메모리 할당은 프로그램 실행 중에 필요한 메모리 공간을 동적으로 할당하는 기능입니다. 이를 통해 프로그램은 실행 시간에 메모리 요구량을 유연하게 조절할 수 있습니다. 동적 메모리 할당은 ...2025.05.05
-
건국대학교 객체지향프로그래밍_3주차_랩실습보고서2025.05.011. 객체지향프로그래밍 이 보고서는 건국대학교 객체지향프로그래밍 수업의 3주차 랩실습 내용을 다루고 있습니다. 주요 내용은 파일로부터 동적 메모리 할당, 메모리 출력 및 저장, 메모리 정리 등입니다. 이를 통해 C++의 동적 메모리 관리 기능을 실습하고 이해할 수 있습니다. 1. 객체지향프로그래밍 객체지향프로그래밍은 소프트웨어 개발에 있어 매우 중요한 패러다임입니다. 이 방식은 현실 세계의 개체를 모방하여 프로그램을 구축하는 것으로, 코드의 재사용성, 유지보수성, 확장성 등 많은 장점을 가지고 있습니다. 객체지향 프로그래밍은 클래스...2025.05.01