
총 19개
-
어셈블리언어(시스템프로그래밍) 과제-3 (라이브러리 활용과 조건부 처리 프로그램 작성)2025.05.111. 난수 생성 프로그램에서 Randomize를 이용하여 시작 시드값을 항상 변경하므로, 난수 생성 시 처음 시작할 때와 동일하지 않은 랜덤한 값들이 나오게 된다. 이를 통해 -100 이상 100 미만의 20개의 난수를 생성하여 화면에 10진수로 출력하는 프로그램을 작성하였다. 2. 메모리 덤프 DumpMem 프로시저를 사용하여 워드 배열과 더블워드 변수의 값을 출력하는 프로그램을 작성하였다. ESI에 시작 주소, EBX에 원소의 크기, ECX에 원소 개수를 저장하여 DumpMem을 호출하였고, 이를 통해 메모리 내용을 확인할 수 ...2025.05.11
-
이중 패스 어셈블러의 알고리즘에 대하여 정리해 보세요2025.01.181. 이중 패스 어셈블러 이중 패스 어셈블러는 소스 코드를 두 번 스캔하여 어셈블리 과정을 수행합니다. 첫 번째 패스에서는 레이블 정의를 찾아 기호 테이블에 추가하고, 두 번째 패스에서는 기호 테이블을 참조하여 실제 기계 코드로 변환합니다. 이를 통해 데이터 기호의 순방향 참조 문제를 해결할 수 있습니다. 2. 원 패스 어셈블러와의 비교 원 패스 어셈블러는 소스 코드를 한 번만 스캔하여 즉시 기계 코드를 생성하지만, 데이터 기호의 순방향 참조 문제를 해결하기 어렵습니다. 이에 비해 이중 패스 어셈블러는 두 번의 스캔을 통해 이 문제...2025.01.18
-
유닉스에 대한 구조와 특징에 대해 설명하시오2025.01.281. 유닉스 구조 개요 유닉스는 구조가 단순하면서도 효율적인 운영체제로 설계되었습니다. 유닉스의 구조는 크게 커널, 쉘, 응용 프로그램으로 구분할 수 있습니다. 커널은 운영체제의 핵심 부분으로, 하드웨어 자원을 관리하고 시스템 호출을 처리하며, 다양한 장치와의 상호작용을 중재하는 역할을 합니다. 쉘은 사용자가 시스템과 상호작용할 수 있도록 하는 인터페이스이며, 응용 프로그램은 사용자가 실제로 작업을 수행하는 소프트웨어입니다. 2. 커널과 쉘의 역할 유닉스의 커널은 시스템 자원의 효율적 관리를 담당하며, 메모리 관리, 프로세스 스케줄...2025.01.28
-
네트워크 프로그래밍_파일전송 프로그램 작성하기2025.01.131. 네트워크 프로그래밍 이 프레젠테이션은 네트워크 프로그래밍에 대한 내용을 다루고 있습니다. 클라이언트-서버 모델을 사용하여 파일 전송 프로그램을 작성하는 방법을 설명하고 있습니다. 클라이언트 코드에서는 서버에 연결하고 파일을 전송하는 과정을 보여주며, 서버 코드에서는 클라이언트의 연결을 받아 파일을 저장하는 과정을 보여줍니다. 이를 통해 네트워크 프로그래밍의 기본적인 개념과 구현 방법을 이해할 수 있습니다. 2. 파일 전송 이 프레젠테이션에서는 클라이언트에서 서버로 파일을 전송하는 방법을 다루고 있습니다. 클라이언트 코드에서는 ...2025.01.13
-
시스템프로그래밍_이중 패스 매크로 프로세서 알고리즘에 대하여 정리2025.04.271. 매크로(Macro) 매크로는 일련의 명령어에 대한 생략형으로, 반복되는 일련의 명령어들을 한 줄로 간략하게 표현할 수 있다. 매크로의 다양한 기능에는 조건부 매크로 확장, 매크로 내의 매크로 호출, 매크로 내의 매크로 정의, 반복 기능의 매크로 등이 있다. 2. 매크로 프로세서 매크로 프로세서는 매크로 정의를 인식하고 저장하며, 매크로 호출을 인식하고 매크로를 확장하여 인수를 치환하는 기능을 수행한다. 매크로 프로세서는 전향 참조 문제로 인해 이중 패스 알고리즘을 사용하게 된다. 3. 이중 패스 매크로 프로세서 알고리즘 이중 ...2025.04.27
-
어셈블리언어(시스템프로그래밍) 과제-4 (고급 언어 구조와 정수 연산을 수행하는 프로그램)2025.05.111. 메모리 변수 사용 프로그램 메모리 변수를 사용하는 간단한 프로그램을 작성하여 Visual Studio 통합개발환경에서 어셈블러를 사용할 수 있는 프로젝트를 만들고 실행해보았습니다. 디버거 사용법도 연습하였습니다. 코드를 통해 변수 val1과 val2의 메모리 주소와 저장된 값을 확인할 수 있었고, 레지스터 eax에 두 값의 합이 저장된 것을 확인할 수 있었습니다. 2. if-else 구문 구현 if-else 구문을 구현하는 프로그램을 작성하였습니다. ecx와 edx 레지스터에 입력받은 값을 비교하여 조건부 점프를 통해 x 변수...2025.05.11
-
매크로 프로세서의 기능에 대한 조사2025.05.071. 매크로 정의와 확장 매크로 프로세서는 프로그래머가 코드를 작성할 때 작업을 단순화하고 코드의 재사용성을 높이는 도구로 사용됩니다. 매크로 프로세서는 프로그램에서 자주 사용되는 코드 조각이나 패턴을 단순한 키워드로 정의할 수 있게 해줍니다. 이렇게 정의된 키워드는 나중에 코드에서 사용될 때 자동으로 원래의 코드 조각이나 패턴으로 확장되어집니다. 이 과정은 매크로 확장이라고 합니다. 매크로 확장의 장점은 코드 중복의 최소화, 가독성 향상 등입니다. 2. 매개변수화된 매크로 매크로 프로세서는 매개변수화된 매크로를 지원하여, 프로그래...2025.05.07
-
시스템 프로그램 어택랩(attack lab) 과제 보고서2025.05.081. Phase_1 Phase_1에서는 getbuf 함수에 오버플로우가 일어날 값을 입력하고 touch1의 주소값을 입력하여 touch1이 실행되게 한다. asm.txt 파일을 확인하여 getbuf와 touch1의 어셈블리 코드를 찾아 필요한 값을 입력한다. 2. Phase_2 Phase_2에서는 touch2 함수를 실행하기 위해 rdi 레지스터에 cookie 값을 넣어주고 touch2 함수로 이동하는 코드를 삽입한다. 이를 위해 gdb를 실행하여 getbuf 직전의 rdi 값을 확인하고, buffer.s 파일을 작성하여 필요한 값...2025.05.08
-
쓰레드 구현 모델과 쓰레드 폴링에 대해 조사하시오2025.05.151. 쓰레드 구현 모델 쓰레드 구현 모델은 운영체제에서 사용되는 것으로 사용자 수준, 커널 수준, 두 수준을 혼합한 방식이 있다. 사용자 수준 쓰레드는 커널 쓰레드를 지원하지 않는 운영체제에서 사용되며 다대일 쓰레드 매핑이다. 커널 수준 쓰레드는 사용자 수준 쓰레드가 가지는 한계를 해결하기 위해서 사용되기 시작했으며 일대일 쓰레드 매핑을 지원한다. 혼합형 쓰레드는 여러 개의 사용자 수준 쓰레드에 여러 개의 커널 쓰레드가 매핑되는 다대다 쓰레드 모델이다. 2. 쓰레드 폴링 쓰레드 폴링은 혼합형 쓰레드에서 사용되며 과부하를 줄여 프로그...2025.05.15
-
어셈블러의 설계 알고리즘과 자료구조2025.05.131. 어셈블러의 설계 알고리즘 어셈블러는 두 개의 패스로 구성됩니다. 패스 1은 명령어 표를 참조하여 명령어들의 상대 주소를 결정하고, 기호표를 작성하여 기호의 재배치 여부를 결정하는 역할을 합니다. 패스 2는 명령어를 2진 코드로 대체하고 명령어의 기호를 기호표에 있는 값으로 대체하는 역할을 합니다. 2. 어셈블러의 자료구조 패스 1과 패스 2는 각각 다른 역할을 수행하므로 연관된 데이터베이스도 달라 각각의 자료구조를 갖습니다. 패스 1은 원시 프로그램, 명령어 및 지시어 표를 입력으로 받고 기호 표를 출력합니다. 패스 2는 패스...2025.05.13