정보처리기사 필기 4과목 프로그래밍 언어 활용은 운영체제, 네트워크, 그리고 C·Java·Python 언어 기초를 다룹니다. 범위가 넓지만 운영체제 스케줄링, OSI 7계층, 언어별 특징이 핵심 출제 포인트입니다.
1. 운영체제 기초
운영체제의 역할
| 기능 | 설명 |
|---|---|
| 프로세스 관리 | 프로세스 생성·실행·종료, CPU 스케줄링 |
| 메모리 관리 | 메모리 할당·회수, 가상 메모리, 페이징·세그멘테이션 |
| 파일 시스템 관리 | 파일 생성·삭제·읽기·쓰기, 디렉터리 관리 |
| 입출력 관리 | 장치 드라이버 관리, 인터럽트 처리 |
| 보안 및 보호 | 사용자 인증, 접근 제어, 자원 보호 |
운영체제 종류
| 종류 | 특징 | 예시 |
|---|---|---|
| 일괄 처리(Batch) | 작업을 모아서 한꺼번에 처리. 초기 컴퓨터 방식 | 초기 메인프레임 |
| 시분할(Time-Sharing) | CPU 시간을 여러 사용자에게 분할. 대화형 처리 가능 | Unix, Linux |
| 실시간(Real-Time) | 정해진 시간 내 반드시 응답. 경성(Hard) / 연성(Soft) 실시간 | 항공기 제어, 의료기기 |
| 분산(Distributed) | 여러 컴퓨터가 네트워크로 연결되어 협력 | 클라우드 시스템 |
2. 프로세스와 스케줄링
프로세스 상태 전이
| 상태 | 설명 |
|---|---|
| 생성(New) | 프로세스가 생성된 직후 상태 |
| 준비(Ready) | CPU를 할당받기 위해 대기 중인 상태 |
| 실행(Running) | CPU를 할당받아 명령어를 실행 중인 상태 |
| 대기(Waiting/Blocked) | I/O 완료 등 특정 이벤트를 기다리는 상태. CPU 반납 |
| 종료(Terminated) | 프로세스 실행이 끝난 상태 |
CPU 스케줄링 알고리즘
| 알고리즘 | 방식 | 특징 |
|---|---|---|
| FCFS (First Come First Served) |
도착 순서대로 처리 | 비선점. 단순하지만 긴 프로세스가 짧은 것을 막는 호위 효과(Convoy Effect) 발생 |
| SJF (Shortest Job First) |
실행 시간이 짧은 프로세스를 먼저 처리 | 비선점. 평균 대기 시간 최소화. 실행 시간 예측이 어려운 단점 |
| SRT (Shortest Remaining Time) |
남은 실행 시간이 가장 짧은 프로세스를 실행 | 선점형 SJF. 새 프로세스 도착 시 남은 시간 비교하여 교체 가능 |
| Round Robin | 각 프로세스에 동일한 시간 할당량(타임슬라이스)을 부여하여 순환 | 선점. 시분할 시스템의 기본. 타임슬라이스 크기가 성능에 영향 |
| 우선순위 (Priority) |
우선순위가 높은 프로세스를 먼저 처리 | 기아(Starvation) 문제 발생 가능 → 에이징(Aging)으로 해결 |
| 다단계 피드백 큐 | 여러 큐를 두고 프로세스를 동적으로 이동 | I/O 위주 프로세스는 높은 우선순위, CPU 위주는 낮은 우선순위 큐로 이동 |
🎯 스케줄링 빈출 포인트
✔ "선점(Preemptive) vs 비선점(Non-preemptive)" 구분이 가장 자주 출제
✔ 선점 방식: SRT, Round Robin, 우선순위(선점형) → 실행 중에도 CPU 빼앗을 수 있음
✔ 비선점 방식: FCFS, SJF, 우선순위(비선점형) → 실행 중인 프로세스가 끝날 때까지 CPU 유지
✔ "기아(Starvation) 해결 방법은?" → 에이징(Aging) — 오래 기다린 프로세스의 우선순위를 점진적으로 높임
✔ "선점(Preemptive) vs 비선점(Non-preemptive)" 구분이 가장 자주 출제
✔ 선점 방식: SRT, Round Robin, 우선순위(선점형) → 실행 중에도 CPU 빼앗을 수 있음
✔ 비선점 방식: FCFS, SJF, 우선순위(비선점형) → 실행 중인 프로세스가 끝날 때까지 CPU 유지
✔ "기아(Starvation) 해결 방법은?" → 에이징(Aging) — 오래 기다린 프로세스의 우선순위를 점진적으로 높임
3. 메모리 관리
메모리 할당 방식
| 방식 | 설명 | 문제점 |
|---|---|---|
| 연속 할당 | 프로세스를 메모리에 연속된 공간에 배치 | 외부 단편화 발생 |
| 페이징(Paging) | 프로세스를 동일 크기의 페이지로 분할. 물리 메모리는 프레임 단위로 관리 | 내부 단편화 발생 |
| 세그멘테이션 | 프로세스를 논리적 단위(세그먼트)로 분할. 크기가 다름 | 외부 단편화 발생 |
가상 메모리와 페이지 교체 알고리즘
실제 메모리보다 큰 프로그램을 실행하기 위해 디스크를 메모리처럼 사용하는 기법입니다. 페이지 폴트(Page Fault)가 발생하면 디스크에서 페이지를 가져오면서 기존 페이지를 교체합니다.
| 알고리즘 | 교체 기준 | 특징 |
|---|---|---|
| FIFO | 가장 먼저 들어온 페이지를 교체 | 구현 단순. Belady의 이상 현상 발생 가능 |
| LRU (Least Recently Used) | 가장 오랫동안 사용하지 않은 페이지를 교체 | 가장 많이 사용. 과거 참조를 기반으로 미래를 예측 |
| OPT (Optimal) | 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체 | 이론적으로 최적이지만 미래를 알 수 없어 실제 구현 불가 |
| LFU (Least Frequently Used) | 사용 횟수가 가장 적은 페이지를 교체 | 자주 쓰이지 않더라도 최근에 들어온 페이지가 교체될 수 있음 |
💡 단편화 암기
내부 단편화: 할당된 영역 내부에 낭비 공간 (페이징에서 마지막 페이지가 꽉 안 찰 때)
외부 단편화: 할당 가능한 공간이 있어도 연속되지 않아 사용 불가 (세그멘테이션, 연속 할당)
내부 단편화: 할당된 영역 내부에 낭비 공간 (페이징에서 마지막 페이지가 꽉 안 찰 때)
외부 단편화: 할당 가능한 공간이 있어도 연속되지 않아 사용 불가 (세그멘테이션, 연속 할당)
4. 네트워크와 OSI 7계층
OSI 7계층 모델
네트워크 통신을 7개 계층으로 표준화한 모델입니다. 계층 이름과 대표 프로토콜을 세트로 암기하세요.
7
응용 계층 (Application)
HTTP, HTTPS, FTP, SMTP, DNS, Telnet
6
표현 계층 (Presentation)
데이터 형식 변환, 암호화, 압축 (SSL/TLS)
5
세션 계층 (Session)
세션 설정·유지·종료 (NetBIOS, RPC)
4
전송 계층 (Transport)
TCP (신뢰성), UDP (비신뢰성), 포트 번호
3
네트워크 계층 (Network)
IP, ICMP, ARP, 라우팅 — 패킷(Packet)
2
데이터 링크 계층 (Data Link)
MAC 주소, Ethernet, PPP — 프레임(Frame)
1
물리 계층 (Physical)
비트(Bit) 전송, 케이블, 허브, 리피터
💡 OSI 7계층 암기법 (상→하)
아파서 (응·표·세·전·네·데·물)
응용 → 표현 → 세션 → 전송 → 네트워크 → 데이터링크 → 물리
아파서 (응·표·세·전·네·데·물)
응용 → 표현 → 세션 → 전송 → 네트워크 → 데이터링크 → 물리
🎯 계층별 핵심 장비·PDU
✔ 1계층(물리): 허브, 리피터 → 비트(Bit)
✔ 2계층(데이터링크): 스위치, 브리지 → 프레임(Frame)
✔ 3계층(네트워크): 라우터 → 패킷(Packet)
✔ 4계층(전송): TCP/UDP → 세그먼트(TCP) / 데이터그램(UDP)
✔ 1계층(물리): 허브, 리피터 → 비트(Bit)
✔ 2계층(데이터링크): 스위치, 브리지 → 프레임(Frame)
✔ 3계층(네트워크): 라우터 → 패킷(Packet)
✔ 4계층(전송): TCP/UDP → 세그먼트(TCP) / 데이터그램(UDP)
5. 주요 프로토콜
TCP vs UDP
| 항목 | TCP | UDP |
|---|---|---|
| 연결 방식 | 연결 지향 (3-way handshake) | 비연결 지향 |
| 신뢰성 | 높음 — 오류 감지, 재전송, 순서 보장 | 낮음 — 오류 감지 없음 |
| 속도 | 느림 | 빠름 |
| 흐름 제어 | 있음 | 없음 |
| 사용 예 | HTTP, 이메일, 파일 전송 | DNS, 스트리밍, 온라인 게임, VoIP |
주요 프로토콜과 포트 번호
| 프로토콜 | 포트 | 기능 |
|---|---|---|
| HTTP | 80 | 웹 페이지 전송 |
| HTTPS | 443 | 암호화된 웹 페이지 전송 (HTTP + SSL/TLS) |
| FTP | 20(데이터), 21(제어) | 파일 전송 |
| SMTP | 25 | 이메일 발송 |
| POP3 | 110 | 이메일 수신 (서버에서 삭제) |
| IMAP | 143 | 이메일 수신 (서버에 유지) |
| DNS | 53 | 도메인 이름을 IP로 변환 |
| SSH | 22 | 암호화된 원격 접속 |
| Telnet | 23 | 원격 접속 (암호화 없음) |
IP 주소와 서브넷
| 항목 | IPv4 | IPv6 |
|---|---|---|
| 주소 길이 | 32비트 (약 43억 개) | 128비트 (사실상 무한) |
| 표기 방식 | 192.168.1.1 (점-십진수) | 2001:db8::1 (콜론-16진수) |
| 개발 배경 | - | IPv4 주소 고갈 문제 해결 |
🎯 네트워크 빈출 포인트
✔ "도메인 이름을 IP 주소로 변환하는 서비스는?" → DNS (포트 53)
✔ "신뢰성 없는 빠른 전송이 필요한 스트리밍에 적합한 프로토콜은?" → UDP
✔ "TCP 연결 설정 과정은?" → 3-way handshake (SYN → SYN-ACK → ACK)
✔ "도메인 이름을 IP 주소로 변환하는 서비스는?" → DNS (포트 53)
✔ "신뢰성 없는 빠른 전송이 필요한 스트리밍에 적합한 프로토콜은?" → UDP
✔ "TCP 연결 설정 과정은?" → 3-way handshake (SYN → SYN-ACK → ACK)
6. 프로그래밍 언어 특성
언어 패러다임 분류
| 패러다임 | 특징 | 대표 언어 |
|---|---|---|
| 절차적(명령형) | 순차적 명령어 실행. "어떻게(How)"를 기술 | C, Pascal, COBOL |
| 객체지향 | 객체(데이터+행위)를 중심으로 설계. 캡슐화·상속·다형성 | Java, C++, Python, C# |
| 함수형 | 함수의 조합으로 처리. 부작용(Side Effect) 없음, 불변성 | Haskell, Erlang, Scala, 일부 Python |
| 선언형 | "무엇을(What)"을 기술하고 처리는 시스템에 위임 | SQL, HTML, CSS |
C / Java / Python 핵심 특징 비교
| 항목 | C | Java | Python |
|---|---|---|---|
| 타입 시스템 | 정적 타입 (컴파일 시 결정) | 정적 타입 | 동적 타입 (실행 시 결정) |
| 메모리 관리 | 수동 (malloc/free) | 자동 (가비지 컬렉터) | 자동 (가비지 컬렉터) |
| 플랫폼 | 플랫폼 의존적 | JVM으로 플랫폼 독립 (WORA) | 인터프리터로 플랫폼 독립 |
| 실행 방식 | 컴파일 → 기계어 | 컴파일 → 바이트코드 → JVM | 인터프리터 (스크립트) |
| 포인터 | 있음 | 없음 (참조만 사용) | 없음 |
💡 Java "WORA" 개념
Write Once, Run Anywhere — Java는 소스 코드를 바이트코드(.class)로 컴파일하고, JVM(Java Virtual Machine)이 각 플랫폼에 맞게 실행합니다. 따라서 Windows에서 만든 .class 파일을 Linux에서도 실행할 수 있어요.
Write Once, Run Anywhere — Java는 소스 코드를 바이트코드(.class)로 컴파일하고, JVM(Java Virtual Machine)이 각 플랫폼에 맞게 실행합니다. 따라서 Windows에서 만든 .class 파일을 Linux에서도 실행할 수 있어요.
변수와 자료형 — 필기에서 자주 나오는 개념
| 개념 | 설명 |
|---|---|
| 정적 변수 (static) | 프로그램 시작 시 생성, 종료 시 소멸. 모든 인스턴스가 공유 |
| 지역 변수 | 함수(블록) 내부에서 선언. 함수 종료 시 소멸 |
| 전역 변수 | 함수 외부에서 선언. 프로그램 전체에서 접근 가능 |
| 포인터 (C) | 메모리 주소를 저장하는 변수. *로 역참조, &로 주소 취득 |
📚 4과목 필기 고득점 전략
① OSI 7계층은 계층 번호·이름·대표 프로토콜·PDU를 한 줄로 외우세요. "7층 HTTP, 4층 TCP, 3층 IP, 2층 MAC"이 핵심입니다.
② CPU 스케줄링은 선점/비선점 구분이 가장 중요합니다. Round Robin과 SRT는 선점, FCFS와 SJF는 비선점임을 확실히 구분하세요.
③ TCP vs UDP 차이는 "신뢰성 vs 속도"로 이해하면 됩니다. 포트 번호는 자주 나오는 것(HTTP 80, HTTPS 443, FTP 21, DNS 53)만 외우세요.
④ Java의 JVM과 Python의 인터프리터는 플랫폼 독립성을 어떻게 달성하는지 이해하면 기억이 오래 갑니다.
① OSI 7계층은 계층 번호·이름·대표 프로토콜·PDU를 한 줄로 외우세요. "7층 HTTP, 4층 TCP, 3층 IP, 2층 MAC"이 핵심입니다.
② CPU 스케줄링은 선점/비선점 구분이 가장 중요합니다. Round Robin과 SRT는 선점, FCFS와 SJF는 비선점임을 확실히 구분하세요.
③ TCP vs UDP 차이는 "신뢰성 vs 속도"로 이해하면 됩니다. 포트 번호는 자주 나오는 것(HTTP 80, HTTPS 443, FTP 21, DNS 53)만 외우세요.
④ Java의 JVM과 Python의 인터프리터는 플랫폼 독립성을 어떻게 달성하는지 이해하면 기억이 오래 갑니다.