UNIT-SPECIFIC ACTIVE LESSON · 1a

Werkzeugkette 4개 역할 매칭

Compiler, Assembler, Linker, Loader를 정의에 연결하세요.

학습 목표: 도구 설명에서 입력과 출력을 찾아 Compiler, Assembler, Linker, Loader 중 하나를 근거와 함께 판별한다.
공식 근거 범위: SoSe26 Probeklausur 시험 p3 Aufgabe 1a 및 공식 해설 p3의 Werkzeugkette 정의·정답 범위.

왜 이 소문제를 따로 배우는가

Werkzeugkette 문제는 이름 암기가 아니라 변환 전후 산출물을 추적하는 문제입니다. 이 사슬을 정확히 잡으면 pseudo instruction, Objektdatei, 실행 파일이 어느 단계에 속하는지도 혼동하지 않습니다.

이 페이지는 Aufgabe 1의 공통 템플릿이 아니라 1a Werkzeugkette 4개 역할 매칭에 필요한 내용만 담습니다. 챕터 전체 배경이 필요하면 Aufgabe 1 개념 수업을 먼저 읽으세요.

이 소문제에서 실제로 쓰는 용어

정의뿐 아니라 이 문제의 어느 판단에 쓰이는지까지 연결합니다.

Compiler
고급 언어 source code를 더 낮은 수준의 Assembly로 번역하는 프로그램입니다.이 소문제에서: 입력이 C이고 출력이 Assembly인 정의를 판별할 때 사용합니다.
Assembler
Assembly instruction을 machine code가 든 Objektdatei로 바꾸는 프로그램입니다.이 소문제에서: Assembly와 Objektdatei 사이의 변환을 맡는 항목을 찾을 때 사용합니다.
Linker
여러 Objektdatei와 library를 결합하고 symbol reference를 해결해 Executable을 만듭니다.이 소문제에서: 아직 메모리에 올리기 전, 파일들을 하나의 실행 파일로 완성하는 정의를 고릅니다.
Loader
Executable의 실행에 필요한 내용을 Hauptspeicher에 배치하고 실행 준비를 합니다.이 소문제에서: 완성된 Executable을 실제 실행 상태로 옮기는 마지막 단계를 식별합니다.

이 소문제 전용 규칙과 종이 작업

입력→출력 우선 규칙

도구 이름보다 정의 속 입력물과 출력물을 먼저 표시하면 인접 단계인 Linker와 Loader도 구분할 수 있습니다.

종이에: 각 정의 옆에 `입력 → 출력` 한 줄을 먼저 적습니다.

단방향 Werkzeugkette 규칙

정상 변환 순서는 `C → Assembly → Objektdatei → Executable → Hauptspeicher`이며, 각 화살표가 정확히 한 도구에 대응합니다.

종이에: 답을 고르기 전에 다섯 산출물을 화살표로 잇고 정의를 해당 화살표 위에 놓습니다.

Aufgabe 전체 흐름은 챕터 흐름도에서 확인할 수 있습니다. 여기서는 현재 판단에 직접 필요한 규칙만 적용합니다.

이 소문제 전용 작은 예제

설명 A는 `.s` 파일을 받아 relocation 정보가 든 `.o` 파일을 만들고, 설명 B는 두 `.o` 파일의 외부 symbol을 해결해 실행 파일을 만든다. A와 B의 도구를 판별하세요.

주어진 것

  • `.s`는 Assembly source입니다.
  • `.o`는 아직 독립적으로 실행할 수 없는 Objektdatei입니다.
  1. 설명 A의 입력과 출력을 표시합니다.

    Assembly에서 Objektdatei로의 경계를 찾으면 도구가 하나로 결정됩니다.

    종이 산출물: `.s(Assembly) → .o(Objektdatei)`

  2. 설명 B가 해결하는 대상과 최종 산출물을 표시합니다.

    여러 Objektdatei의 symbol 결합은 적재가 아니라 파일 완성 작업입니다.

    종이 산출물: `.o 여러 개 + symbol 해결 → Executable`

  3. 두 화살표를 Werkzeugkette의 도구 이름에 연결합니다.

    입출력 사슬과 도구 정의가 일치해야 추측이 아닌 판별이 됩니다.

    종이 산출물: A=Assembler, B=Linker

예제 답과 독립 검산 보기

A는 Assembler이고 B는 Linker입니다.

독립 검산: B의 출력이 Hauptspeicher가 아니라 디스크의 Executable인지 확인합니다. 그렇다면 Loader가 아닙니다.

이제 실제 시험 문제를 micro-work로 풀기

공식 시험이 요구하는 것

Compiler, Assembler, Linker, Loader를 정의에 연결하세요.

공식 답을 보기 전, 내 답 먼저 남기기

완성 문장이 아니어도 좋습니다. 중간값·register·cycle·cache state처럼 채점 가능한 흔적을 먼저 적으세요.

각 작업의 중간 산출물을 직접 적고 완료 조건을 만족한 뒤 체크하세요. 단계별 이유·산출물·오류가 현재 소문제에 맞게 따로 작성되어 있습니다.

각 정의에서 입력 대상을 찾습니다.

왜 하는가
같은 ‘변환’ 표현이라도 C, Assembly, Objektdatei, Executable 중 무엇을 받는지에 따라 담당 도구가 달라집니다.
종이 산출물
정의마다 `입력:` 뒤에 C/Assembly/Objektdatei/Executable 중 하나를 적습니다.
완료 조건
네 정의 모두에 입력물이 하나씩 표시되어 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: 문장에서 ‘무엇을 받아’ 또는 동사의 목적어를 찾으세요.

이 단계의 대표 오류: ‘번역한다’라는 동사만 보고 Compiler로 고정하는 것입니다.

각 정의에서 출력 산출물을 찾습니다.

왜 하는가
인접 도구는 입력이 비슷해 보여도 출력이 파일인지 실행 중 memory 상태인지로 갈립니다.
종이 산출물
각 입력 오른쪽에 화살표와 출력물을 이어 적습니다.
완료 조건
네 줄이 모두 `입력 → 출력` 형태가 됩니다.
막혔을 때 단계 힌트·대표 오류

힌트: Executable을 ‘만드는가’, 이미 있는 Executable을 ‘적재하는가’를 구분하세요.

이 단계의 대표 오류: Executable과 Hauptspeicher 적재 상태를 같은 출력으로 취급하는 것입니다.

입출력 쌍을 전체 Werkzeugkette에 배치합니다.

왜 하는가
전체 순서에 놓아 보면 도구를 하나씩만 써야 한다는 일관성 검사가 가능합니다.
종이 산출물
`C —Compiler→ Assembly —Assembler→ Objekt —Linker→ Executable —Loader→ Memory`를 완성합니다.
완료 조건
네 도구가 중복 없이 네 화살표에 하나씩 놓였습니다.
막혔을 때 단계 힌트·대표 오류

힌트: CPU가 실행할 준비가 되는 것은 사슬의 맨 마지막입니다.

이 단계의 대표 오류: Linker와 Loader의 순서를 바꾸는 것입니다.

Werkzeugkette 밖의 emulation 정의를 제외합니다.

왜 하는가
machine code를 다른 hardware처럼 emulieren하는 일은 네 변환 도구의 입력→출력 역할과 일치하지 않습니다.
종이 산출물
해당 정의 옆에 `제외: Emulator 역할`이라고 표시합니다.
완료 조건
남는 정의가 왜 네 도구 중 어느 것에도 해당하지 않는지 한 문장으로 설명할 수 있습니다.
막혔을 때 단계 힌트·대표 오류

힌트: 새 파일을 만드는지, memory에 적재하는지 먼저 물어보세요.

이 단계의 대표 오류: machine code라는 단어만 보고 Assembler와 연결하는 것입니다.

공식 답을 열기 전 마지막 회상

Assembler의 입력과 출력은 각각 무엇인가요?

내 풀이 후 공식 결론·이유·대표 함정 확인

공식 결론

Compiler=C→Assembly, Assembler=Assembly→Objektdatei, Linker=Objekte→Executable, Loader=Executable을 Hauptspeicher에 적재.

왜 이 답이 되는가

C 코드는 곧바로 CPU에서 실행되지 않습니다. Compiler가 C→Assembly, Assembler가 Assembly→Objektdatei, Linker가 여러 Objektdatei→Executable, Loader가 Executable→Hauptspeicher를 담당합니다.

대표 함정

Linker와 Loader를 뒤집지 마세요. Linker가 파일을 완성한 뒤 Loader가 실행 상태로 옮깁니다.

새 문제로 전이하기

세 문항은 앞 문장의 반복이 아닙니다. 직접 답을 입력하면 rubric의 필수 기준을 하나씩 검사하고, 첫 누락 기준을 알려 줍니다.

1. 개념 재구성

빈 종이에 C source가 실행되기까지의 다섯 상태와 그 사이 네 도구를 순서대로 복원하고, Linker와 Loader의 출력 차이를 한 문장으로 설명하세요.

제출 후 모델 답 보기

`C → Compiler → Assembly → Assembler → Objektdatei → Linker → Executable → Loader → Hauptspeicher`. Linker는 Executable 파일을 만들고 Loader는 그 Executable을 Hauptspeicher에 적재합니다.

2. 변형 문제

프로그램 `main.o`가 library의 `print` symbol을 참조한다. X는 이 참조를 해결해 `app.exe`를 만들고, Y는 `app.exe`의 segment를 RAM에 배치한다. X와 Y를 판별하고 각각의 출력도 적으세요.

제출 후 모델 답 보기

X=Linker, 출력은 Executable인 `app.exe`; Y=Loader, 출력은 Hauptspeicher에 배치된 실행 image입니다.

3. 오류 진단

학생이 ‘Loader가 여러 `.o` 파일을 묶어 Executable을 만들고 Linker가 그 파일을 RAM에 올린다’고 썼습니다. 첫 오류를 지적하고 두 역할을 바로잡으세요.

제출 후 모델 답 보기

첫 오류는 Objektdatei 결합을 Loader 역할로 둔 것입니다. 여러 `.o`를 결합해 Executable을 만드는 것은 Linker이고, 그 Executable을 RAM/Hauptspeicher에 적재하는 것은 Loader입니다.

이 소문제를 끝냈다고 말할 수 있는 기준

이 소문제의 정확한 공식 페이지와 대조하기

왼쪽은 문제를 읽을 때, 오른쪽은 자신의 풀이를 끝낸 뒤에 확인하세요. 해설 이미지를 먼저 보면 중간 과정을 스스로 만드는 연습이 사라집니다.

1a 관련 공식 시험 또는 해설 페이지
exam-p03.png · 클릭해 원본 크기로 확인
1a 관련 공식 시험 또는 해설 페이지
solution-p03.png · 클릭해 원본 크기로 확인

Source: Probeklausur.pdf / Probeklausur Musterlösung und Hinweise.pdf · 시험 p3–5 · 공식 해설 p3–6 · SoSe26 Probeklausur 시험 p3 Aufgabe 1a 및 공식 해설 p3의 Werkzeugkette 정의·정답 범위.