컴퓨터시스템기사 필기 04 — 시스템SW 아키텍처 + 인터페이스 구현 (IPC·세마포어·로더·어셈블러)
컴퓨터시스템기사 필기 04 — 시스템SW 아키텍처 + 인터페이스 구현 (IPC·세마포어·로더·어셈블러)
1과목 [1-3] 시스템SW 아키텍처 설계 + [1-4] 시스템SW 인터페이스 구현 파트입니다.
로더 4대 기능, 어셈블러 2-패스, 세마포어·뮤텍스는 매 회차 출제돼요.
시스템SW 아키텍처 설계
모듈화 (Modularity)
소프트웨어를 독립적인 단위(모듈)로 분리하는 설계 원칙
목적: 복잡성 감소, 재사용성 향상, 유지보수 용이
결합도 (Coupling) ⭐⭐
모듈 간의 상호 의존성 정도예요. 낮을수록 좋아요.
낮음 ←─────────────────────────→ 높음 (나쁨)
자료결합도 → 스탬프 → 제어 → 외부 → 공통 → 내용결합도
| 종류 | 설명 |
| 자료(Data) | 단순 값만 전달 — 가장 좋음 |
| 스탬프(Stamp) | 자료구조 전달 |
| 제어(Control) | 제어 정보(플래그) 전달 |
| 외부(External) | 외부 변수 공유 |
| 공통(Common) | 전역 변수 공유 |
| 내용(Content) | 다른 모듈 내부 직접 접근 — 가장 나쁨 |
응집도 (Cohesion) ⭐⭐
모듈 내부 요소들의 연관성 정도예요. 높을수록 좋아요.
낮음 (나쁨) ←──────────────────────→ 높음
우연적 → 논리적 → 시간적 → 절차적 → 통신적 → 순차적 → 기능적
| 종류 | 설명 |
| 기능적(Functional) | 단일 기능만 수행 — 가장 좋음 |
| 순차적(Sequential) | 앞 요소 출력이 다음 입력 |
| 통신적(Communicational) | 같은 데이터 사용 |
| 절차적(Procedural) | 순서대로 실행 |
| 시간적(Temporal) | 같은 시간에 실행 |
| 논리적(Logical) | 유사 기능 그룹화 |
| 우연적(Coincidental) | 관계 없는 기능 묶음 — 가장 나쁨 |
기출 문제
Q. 결합도와 응집도의 이상적인 방향은?
A. 모듈 설계 시 결합도는 낮게(Low Coupling), 응집도는 높게(High Cohesion) 설계하는 것이 이상적이다.
Q. 모듈 간에 단순 값만 매개변수로 전달하는 결합도 유형은?
A. 자료 결합도(Data Coupling) — 결합도 중 가장 낮아 이상적인 형태
소프트웨어 번역 시스템
언어 처리기 종류
어셈블러 — 어셈블리어 → 기계어
컴파일러 — 고급언어 → 기계어 (전체 번역)
인터프리터 — 고급언어 → 기계어 (한 줄씩 번역·실행)
프리프로세서 — 소스코드 전처리 (#include, #define 등)
어셈블러 2-패스 (2-Pass Assembler) ⭐⭐⭐
목적: 전향 참조(Forward Reference) 문제 해결
1패스: 심볼 테이블 작성 (레이블과 주소 정의)
2패스: 기계어 코드 생성 (심볼 테이블 참조)
전향 참조란?
프로그램에서 아직 정의되지 않은 레이블을 참조하는 것
예: 앞쪽 명령어가 뒤쪽에 정의된 레이블로 분기하는 경우
2-패스로 1패스에서 먼저 모든 레이블 주소를 파악해야 해결 가능
기출 문제
Q. 어셈블러가 2-패스 방식을 사용하는 이유는?
A. 프로그램에서 전향 참조(Forward Reference) 문제를 해결하기 위해서다. 1패스에서 모든 레이블의 주소를 심볼 테이블에 저장하고, 2패스에서 이를 참조하여 기계어를 생성한다.
로더 (Loader) ⭐⭐⭐
로더 4대 기능 (순서 중요!)
1. 할당 (Allocation) — 프로그램이 사용할 메모리 공간 확보
2. 연결 (Linking) — 여러 목적 모듈을 하나로 결합
3. 재배치 (Relocation) — 주소를 실제 메모리 주소로 조정
4. 적재 (Loading) — 프로그램을 메모리에 올림
로더 종류별 기능 분담 ⭐⭐⭐
| 로더 종류 | 할당 | 연결 | 재배치 | 적재 |
| 컴파일-Go 로더 | 어셈블러 | 어셈블러 | 어셈블러 | 로더 |
| 절대 로더 | 프로그래머 | 프로그래머 | 어셈블러 | 로더 |
| 직접 연결 로더 | 로더 | 로더 | 로더 | 로더 |
| 동적 적재 로더 | 로더 | 로더 | 로더 | 로더 |
절대 로더 핵심:
재배치 → 어셈블러 담당
할당·연결 → 프로그래머 담당
적재 → 로더 담당
기출 문제
Q. 로더의 4대 기능을 순서대로 나열하시오.
A. 할당 → 연결 → 재배치 → 적재
Q. 절대 로더에서 재배치(Relocation)를 담당하는 것은?
A. 어셈블러(Assembler)
Q. 절대 로더에서 할당과 연결을 담당하는 것은?
A. 프로그래머(Programmer)
IPC (프로세스 간 통신) ⭐⭐
IPC 메커니즘 종류
공유 메모리 (Shared Memory)
→ 프로세스 간 메모리 공간 공유
→ 가장 빠름, 동기화 별도 필요
세마포어 (Semaphore)
→ 공유 자원 접근 제어
→ 정수값 기반 (0 이상)
메시지 큐 (Message Queue)
→ 메시지 형태로 데이터 전달
→ 비동기 통신
파이프 (Pipe)
→ 단방향 통신 (부모↔자식 프로세스)
→ 양방향은 소켓 또는 명명 파이프
세마포어 vs 뮤텍스 ⭐⭐⭐
세마포어 (Semaphore)
값: 정수 (0 이상)
용도: 여러 개의 공유 자원 관리 (카운팅 세마포어)
소유권: 없음 — 다른 프로세스가 신호 가능
뮤텍스 (Mutex)
값: 0 또는 1 (이진값)
용도: 상호 배제 전용 (Critical Section 보호)
소유권: 있음 — 잠근 스레드만 해제 가능
→ 뮤텍스는 세마포어의 특수한 형태
기출 문제
Q. 세마포어와 뮤텍스의 차이점을 서술하시오.
A.
세마포어: 0 이상의 정수값으로 여러 공유 자원을 관리하며
소유권이 없어 다른 프로세스가 신호(Signal)를 보낼 수 있다.
뮤텍스: 0 또는 1의 이진값으로 단일 공유 자원의 상호 배제에만 사용하며
잠금을 획득한 스레드만이 해제할 수 있는 소유권 개념이 있다.
뮤텍스는 세마포어의 특수한 형태이다.
소켓 프로그래밍 ⭐⭐
TCP 소켓 시퀀스
[서버]
socket() → bind() → listen() → accept()
↕ 연결 수립
[클라이언트]
socket() → connect()
[데이터 송수신]
send() / recv()
[종료]
close()
기출 문제
Q. TCP 서버 소켓의 함수 호출 순서를 나열하시오.
A. socket() → bind() → listen() → accept() → recv()/send() → close()
💡 실무에서는?
인프라 SI 현장에서 다중 프로세스 기반 보안 솔루션(SIEM, IDS 등)을 구축할 때, 프로세스 간 이벤트 데이터를 주고받는 방식으로 메시지 큐나 공유 메모리를 많이 써요. 세마포어·뮤텍스는 특히 멀티스레드 기반 WAF 솔루션의 설정 파일 동시 접근 제어에서 직접 확인한 적이 있어요. 결합도·응집도는 SI 프로젝트에서 마이크로서비스 아키텍처 설계 시 모듈 분리 기준으로 그대로 적용됩니다.
핵심 정리
✅ 결합도↓ 응집도↑ 이 이상적
✅ 결합도 최저: 자료결합도 / 최고: 내용결합도
✅ 응집도 최고: 기능적 / 최저: 우연적
✅ 어셈블러 2-패스 → 전향참조 해결
✅ 로더 4기능: 할당→연결→재배치→적재
✅ 절대로더: 재배치=어셈블러, 할당·연결=프로그래머
✅ 세마포어: 정수값, 소유권 없음
✅ 뮤텍스: 이진값, 소유권 있음 (잠근 스레드만 해제)
✅ TCP 서버: socket→bind→listen→accept→send/recv→close
다음 편에서는 컴퓨터 프로세서 및 명령어 — 레지스터·파이프라인·주소지정방식으로 이어갑니다!
궁금한 점은 댓글로 남겨주세요!
2026.08.08 - [자격증 정복/컴퓨터시스템기사] - 컴퓨터시스템기사 필기 03 — 기억장치 관리 (가상기억장치·페이지교체·교착상태)
컴퓨터시스템기사 필기 03 — 기억장치 관리 (가상기억장치·페이지교체·교착상태)
컴퓨터시스템기사 필기 03 — 기억장치 관리 (가상기억장치·페이지교체·교착상태)1과목 [1-2] 운영체제 주요기능 ② 기억장치 관리 파트입니다.페이지 교체 알고리즘 계산과 교착상태 4조건은
tech.seanney.pe.kr
2026.08.07 - [자격증 정복/컴퓨터시스템기사] - 컴퓨터시스템기사 필기 02 — 개발자 환경 구축 + 운영체제 기초 (프로세스·스케줄링)
컴퓨터시스템기사 필기 02 — 개발자 환경 구축 + 운영체제 기초 (프로세스·스케줄링)
컴퓨터시스템기사 필기 02 — 개발자 환경 구축 + 운영체제 기초 (프로세스·스케줄링)1과목 "운영체제 및 시스템소프트웨어"의 첫 번째 파트입니다.출제기준 순서대로 개발자 환경 구축부터 시
tech.seanney.pe.kr