
총 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
-
단편화와 배치전략에 대하여2025.01.181. 단편화 단편화란 컴퓨터 시스템에서 메모리나 저장장치 등의 자원이 작은 조각으로 분할되는 현상을 말한다. 내부 단편화와 외부 단편화 두 가지 종류가 있으며, 이를 해결하기 위해 다양한 배치 전략이 개발되었다. 2. 고정 분할 할당 기법 고정 분할 할당 기법은 메모리를 동일한 크기로 나누어 프로그램을 할당하는 방식이다. 빠른 할당이 가능하지만 내부 단편화 문제가 발생한다. 3. 가변 분할 할당 기법 가변 분할 할당 기법은 각 프로그램의 크기에 맞게 메모리를 동적으로 분할하는 방식이다. 내부 단편화 문제는 해결되지만 외부 단편화 문...2025.01.18
-
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
-
C언어 1 - 재귀함수와 포인터의 개념 및 활용2025.01.151. 재귀함수 재귀함수는 함수가 자기 자신을 호출하여 문제를 해결하는 기법입니다. 이 기법은 큰 문제를 작은 문제로 나누어 해결할 수 있게 해주며, 특히 반복적이고 계층적인 구조의 문제를 해결하는 데 유용합니다. 재귀함수를 사용할 때는 기본 조건(base case)과 재귀 조건(recursive case)을 명확히 정의해야 합니다. 재귀함수의 대표적인 사용 사례로는 팩토리얼 계산, 피보나치 수열 계산, 트리 탐색 등이 있습니다. 2. 포인터 포인터는 다른 변수의 메모리 주소를 저장하는 변수로, 간접적으로 변수에 접근하고 조작할 수 ...2025.01.15
-
C언어로 구현한 배열과 구조체의 차이점 설명 및 성적 처리 프로그램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