총 22개
-
시스템프로그래밍(명령어 실행 4단계 및 논리주소와 물리주소)2025.01.031. 명령어(instruction) 명령어(instruction)란 컴퓨터가 직접 실행할 수 있는 프로그램의 최소 단위를 의미합니다. 명령어는 프로세서가 외부적으로 작동하는 '판독'과 '기록' 사이클, 기억장치에서 읽은 프로그램 명령어를 '실행시키는 4단계'로 구분해서 이해할 수 있습니다. 2. 명령어 실행 4단계 명령어 실행은 '명령어 인출 → 명령어 해독 → 데이터 인출 → 명령어 실행'의 4단계로 진행되며, 각 단계별 내용이 자세히 설명되어 있습니다. 3. 물리 주소와 논리 주소 메모리의 구조는 크게 물리 주소와 논리 주소 두...2025.01.03
-
어셈블리언어(시스템프로그래밍) 과제-4 (고급 언어 구조와 정수 연산을 수행하는 프로그램)2025.05.111. 메모리 변수 사용 프로그램 메모리 변수를 사용하는 간단한 프로그램을 작성하여 Visual Studio 통합개발환경에서 어셈블러를 사용할 수 있는 프로젝트를 만들고 실행해보았습니다. 디버거 사용법도 연습하였습니다. 코드를 통해 변수 val1과 val2의 메모리 주소와 저장된 값을 확인할 수 있었고, 레지스터 eax에 두 값의 합이 저장된 것을 확인할 수 있었습니다. 2. if-else 구문 구현 if-else 구문을 구현하는 프로그램을 작성하였습니다. ecx와 edx 레지스터에 입력받은 값을 비교하여 조건부 점프를 통해 x 변수...2025.05.11
-
쓰레드 구현 모델과 쓰레드 폴링에 대해 조사하시오.2025.01.171. 쓰레드 쓰레드는 프로그램 내에서 동시에 여러 작업을 처리하기 위한 실행 단위를 의미한다. 프로세스는 완전히 독립된 두 개의 프로그램의 실행을 위한 것이지만, 쓰레드는 하나의 프로그램 내에서 둘 이상의 실행을 위하기 때문에 독립시키는 구조가 필요하지 않다. 그래서 쓰레드를 이용하면 하나의 프로세스 내에서 여러 작업을 동시에 수행할 수 있으므로 프로그램의 성능과 효율성이 향상된다. 2. 쓰레드의 구현 모델 쓰레드는 크게 두 가지 방법으로 구현될 수 있다. 유저 레벨 쓰레드는 프로그램이 직접 쓰레드를 관리하는 방법으로 쓰레드를 구현...2025.01.17
-
어셈블러의 설계 알고리즘과 자료구조2025.05.131. 어셈블러의 설계 알고리즘 어셈블러는 두 개의 패스로 구성됩니다. 패스 1은 명령어 표를 참조하여 명령어들의 상대 주소를 결정하고, 기호표를 작성하여 기호의 재배치 여부를 결정하는 역할을 합니다. 패스 2는 명령어를 2진 코드로 대체하고 명령어의 기호를 기호표에 있는 값으로 대체하는 역할을 합니다. 2. 어셈블러의 자료구조 패스 1과 패스 2는 각각 다른 역할을 수행하므로 연관된 데이터베이스도 달라 각각의 자료구조를 갖습니다. 패스 1은 원시 프로그램, 명령어 및 지시어 표를 입력으로 받고 기호 표를 출력합니다. 패스 2는 패스...2025.05.13
-
어셈블리언어(시스템프로그래밍) 과제-3 (라이브러리 활용과 조건부 처리 프로그램 작성)2025.05.111. 난수 생성 프로그램에서 Randomize를 이용하여 시작 시드값을 항상 변경하므로, 난수 생성 시 처음 시작할 때와 동일하지 않은 랜덤한 값들이 나오게 된다. 이를 통해 -100 이상 100 미만의 20개의 난수를 생성하여 화면에 10진수로 출력하는 프로그램을 작성하였다. 2. 메모리 덤프 DumpMem 프로시저를 사용하여 워드 배열과 더블워드 변수의 값을 출력하는 프로그램을 작성하였다. ESI에 시작 주소, EBX에 원소의 크기, ECX에 원소 개수를 저장하여 DumpMem을 호출하였고, 이를 통해 메모리 내용을 확인할 수 ...2025.05.11
-
시스템 프로그램 어택랩(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
-
[A+ 레포트] 시스템프로그래밍 - 레지스터의 역할과 종류를 설명하시오.2025.01.141. 레지스터의 역할 컴퓨터 시스템 내에서 레지스터는 중앙 처리 장치(CPU)의 핵심적인 부분이다. 이는 데이터를 일시적으로 저장하는 작은 저장 공간으로, 컴퓨터의 성능과 직접적인 관련이 있다. 레지스터는 CPU가 처리할 데이터를 임시로 보관하거나, 명령 실행에 필요한 정보를 저장하는 등 다양한 역할을 수행한다. 이러한 레지스터의 특성과 역할을 이해하는 것은 시스템 프로그래밍을 공부하는 학생들에게 있어 매우 중요하다. 왜냐하면, 레지스터의 효율적인 사용은 프로그램의 실행 속도와 시스템의 전반적인 성능에 영향을 미치기 때문이다. 2....2025.01.14
-
8086 어셈블리어의 명령어에 대한 조사2025.04.281. 컴퓨터의 구성 컴퓨터는 하드웨어와 소프트웨어로 구성되어 있으며, 하드웨어는 중앙처리장치, 기억장치, 입출력장치로, 소프트웨어는 시스템소프트웨어와 응용소프트웨어로 구성되어 있다. 컴퓨터는 데이터를 받아 제어장치와 연산장치를 통해 변환시킨 후 출력장치를 통해 출력하고, 출력 내용을 주기억장치에 저장하는 기능을 한다. 2. 컴퓨터 언어 시스템소프트웨어는 어셈블러, 매크로 프로세서, 링커, 로더, 트랜스레이터, 운영체제 등의 진화 과정을 거쳐왔으며, 어셈블리어는 기계어에 가장 가까운 저급 언어로서 기계어와 1대1 대응이 가능한 프로그...2025.04.28
-
유닉스에 대한 구조와 특징에 대해 설명하시오2025.01.281. 유닉스 구조 개요 유닉스는 구조가 단순하면서도 효율적인 운영체제로 설계되었습니다. 유닉스의 구조는 크게 커널, 쉘, 응용 프로그램으로 구분할 수 있습니다. 커널은 운영체제의 핵심 부분으로, 하드웨어 자원을 관리하고 시스템 호출을 처리하며, 다양한 장치와의 상호작용을 중재하는 역할을 합니다. 쉘은 사용자가 시스템과 상호작용할 수 있도록 하는 인터페이스이며, 응용 프로그램은 사용자가 실제로 작업을 수행하는 소프트웨어입니다. 2. 커널과 쉘의 역할 유닉스의 커널은 시스템 자원의 효율적 관리를 담당하며, 메모리 관리, 프로세스 스케줄...2025.01.28
-
시스템프로그래밍_이중 패스 매크로 프로세서 알고리즘에 대하여 정리2025.04.271. 매크로(Macro) 매크로는 일련의 명령어에 대한 생략형으로, 반복되는 일련의 명령어들을 한 줄로 간략하게 표현할 수 있다. 매크로의 다양한 기능에는 조건부 매크로 확장, 매크로 내의 매크로 호출, 매크로 내의 매크로 정의, 반복 기능의 매크로 등이 있다. 2. 매크로 프로세서 매크로 프로세서는 매크로 정의를 인식하고 저장하며, 매크로 호출을 인식하고 매크로를 확장하여 인수를 치환하는 기능을 수행한다. 매크로 프로세서는 전향 참조 문제로 인해 이중 패스 알고리즘을 사용하게 된다. 3. 이중 패스 매크로 프로세서 알고리즘 이중 ...2025.04.27
