개발새발

4단원 프로그래밍 언어 활용 개념 요약 본문

정보처리기사

4단원 프로그래밍 언어 활용 개념 요약

비숑주인 2026. 1. 24. 01:39

1. 운영체제 및 프로세스 관리

프로세스 스케줄링 (비선점형 중심)

프로세스 처리 우선순위를 결정하는 전략이다. 

종류 특징
FIFO (First In First Out) 도착한 순서대로 처리하는 가장 단순한 방식입니다.
SJF (Shortest Job First) 실행 시간이 가장 짧은 프로세스부터 처리하여 평균 대기 시간을 최소화합니다.
HRN (Highest Response ratio Next) SJF의 약점(긴 작업 소외)을 보완하기 위해 대기 시간을 고려합니다.

 

 

HRN 우선순위 계산식:

(결과값이 높을수록 우선순위가 높음)

 

 

UNIX 운영체제 특징

  • 대화식 시분할 시스템: 여러 사용자가 동시에 서버에 접속하여 사용하기 적합함
  • C언어 기반: 이식성이 높고 장치 간 호환성이 뛰어나다. 
  • 구조: 트리 구조의 파일 시스템을 가지며, 멀티태스킹과 멀티유저를 지원

 

Python 시퀀스자료

  • 리스트(List): 데이터를 연속적으로 저장 가능하며, 필요에 따라 개수 조절 가능
  • 튜플(Tuple): 데이터를 연속적으로 저장하지만, 요소의 추가 / 삭제 / 변경 불가 -
  • Range: 연속 된 숫자를 생성 / 리스트, 반복문에서 자주 사용

 

2. 네트워크 참조 모델 및 프로토콜

OSI 7계층 참조 모델

계층 주요 기능 주요 프로토콜 / 키워드
7. 응용 (Application) 사용자 인터페이스 제공 HTTP, FTP, SMTP, Telnet, DNS
6. 표현 (Presentation) 데이터 암호화, 압축, 코드 변환 JPEG, MPEG, 암호화/복호화
5. 세션 (Session) 대화 제어 및 동기화 동기점(Check point)
4. 전송 (Transport) 종단 간(End-to-End) 신뢰성 있는 전송 TCP(신뢰성), UDP(속도)
3. 네트워크 (Network) 경로 설정(Routing), 패킷 전달 IP, ICMP, ARP, RARP
2. 데이터링크 (Data Link) 노드 간 프레임 전송, 오류/흐름 제어 HDLC, PPP, 프레임(Frame)
1. 물리 (Physical) 전기적, 기계적 특성 정의 허브, 리피터, 비트(Bit) 전송

 

전송 및 인터넷 계층 핵심 프로토콜

  • TCP vs UDP: TCP는 양방향 연결형으로 신뢰성이 높고, UDP는 비연결형으로 실시간 스트리밍 등 속도가 중요한 서비스에 사용됨 
  • ARP vs RARP: ARP는 IP 주소를 물리적 주소(MAC)로 바꾸고, RARP는 반대로 MAC 주소를 IP 주소로 변환 

 

3. 소프트웨어 설계 원칙: 응집도와 결합도

모듈의 독립성을 측정하는 지표이다. 응집도는 높을수록, 결합도는 낮을수록 좋은 설계 

 

응집도 (Cohesion) - 모듈 내부의 관련성

 

(높음) 기능적 → 순차적 → 통신적 → 절차적 → 시간적 → 논리적 → 우연적 (낮음)

 

 

결합도 (Coupling) - 모듈 간의 의존성

 

(낮음) 자료(Data) → 스탬프 → 제어 → 외부 → 공유 → 내용(Content) (높음)

 

 

4. 네트워크 제어 및 표준

흐름 제어 및 혼잡 제어

  • Stop and Wait: 패킷 하나를 보내고 확인 응답(ACK)을 받아야 다음을 전송 
  • Sliding Window: 수신 측의 확인 없이 정해진 윈도우 크기만큼 연속 전송하여 효율을 높인다.
  • Slow Start: 혼잡 윈도우 크기를 1부터 지수적으로 늘리다 혼잡 발생 시 다시 1로 줄인다.

IEEE 802 표준안

  • 802.3: CSMA/CD (유선 LAN)
  • 802.11: 무선 LAN (Wi-Fi)
  • 802.15: 블루투스/지그비 (개인 영역 네트워크 - WPAN) 

 

5. Python 자료형 핵심

  • 리스트 (List): [ ] 사용. 가변(Mutable)하며 데이터 추가/삭제가 자유롭다. 
  • 튜플 (Tuple): ( ) 사용. 불변(Immutable)하며 한 번 생성하면 요소를 바꿀 수 없다.
  • Range: range(시작, 끝, 증감) 형태로 연속된 숫자 생성 시 사용한다.

 

6. 네트워크 주소 체계: IPv4 vs IPv6

구분 IPv4 IPv6
주소 길이 32 Bit (8 Bit $\times$ 4개) 128 Bit (16 Bit $\times$ 8개)
표시 방법 10진수 (0~255), 마침표(.)로 구분 16진수 (0000~FFFF), 콜론(:)으로 구분
전송 방식 유니캐스트, 멀티캐스트, 브로드캐스트 유니캐스트, 멀티캐스트, 애니캐스트
주요 특징 설정의 편의성, 기존 인프라 풍부 확장성/보안성(인증, 기밀성) 우수, 패킷 크기 제한 없음

 

7. 연산자 및 우선순위

연산자 종류 및 특징

  • 비트 연산자: &(AND), ^(XOR: 다르면 1), |(OR), ~(NOT), <<, >>(비트 이동).
  • 관계 연산자: ==(같다), !=(같지 않다), >, <, >=, <= 등.
  • 논리 연산자: ! (NOT), && (AND), || (OR).

연산자 우선순위 요약

순위 연산자 분류 연산자 및 결합 규칙
1 최우선/후위 ( ), [ ], . , ->, ++, -- (후위) [→ 방향]
2 단항/전위 ++, -- (전위), !, ~, sizeof, (type) [← 방향]
3~4 산술 *, /, % → +, - [→ 방향]
5~7 이동/관계 <<, >> → <, <=, >, >= → ==, != [→ 방향]
8~9 비트/논리 &, ^, `
10~11 삼항/대입 ?: (조건) → =, +=, -=, *=, /= 등 [← 방향]
12 순서 , (콤마) [→ 방향]

 

8. 운영체제 핵심: UNIX 및 프로세스 관리

UNIX의 구성 요소

  • 커널(Kernel): 하드웨어 보호 및 프로그램-하드웨어 간 인터페이스 역할을 하며 프로세스, 기억장치, 파일을 관리
  • 쉘(Shell): 사용자의 명령을 해석하여 커널에 전달하는 시스템과 사용자 간 인터페이스

프로세스 상태 전이 및 스레드

  • 주요 용어:
    • 디스패치(Dispatch): 준비(Ready) 상태의 프로세스가 실행(Run) 상태로 바뀌는 과정
    • 문맥 교환(Context Switching): 이전 프로세스의 상태를 보관하고 다음 프로세스의 레지스터를 적재하는 과정.
  • 스레드(Thread): 프로세스 내의 작업 단위로, 다중 스레드 사용 시 병행성이 향상되고 응답 시간이 단축됨 

 

9. 기억장치 배치 전략 및 기타

  • 배치 전략:
    • First Fit(최초 적합): 첫 번째 가용 영역에 배치.
    • Best Fit(최적 적합): 단편화를 최소화하는 공간에 배치.
    • Worst Fit(최악 적합): 단편화가 가장 많이 남는 공간에 배치.
  • 가비지 컬렉터(Garbage Collector): 더 이상 사용되지 않는 객체(변수)를 메모리에서 자동으로 제거한다 
  • 예외 처리(Exception): 하드웨어 문제나 사용자 입력 실수 등 비정상적인 실행 상태에 대비하는 프로세스

10. 스크립트 언어 특징

컴파일 단계 없이 실행되는 언어들로 웹 개발 및 시스템 자동화에 쓰인다. 

언어 특징
Javascript 웹페이지 동작 제어를 위한 클라이언트용 언어
Python 인터프리터 방식의 객체지향 언어로 이식성이 높고 동적 타이핑 지원
JSP / ASP 서버 측에서 동적 페이지를 만들기 위한 자바 기반(JSP) 및 MS 기반(ASP) 언어
쉘 스크립트 유닉스/리눅스 쉘 명령의 조합으로 컴파일 없이 빠른 실행 가능 (.sh)

 

예외 처리 및 가비지 컬렉터

  • 예외 처리 (Exception): 하드웨어 문제, 사용자 입력 실수 등으로 프로그램이 비정상 실행될 때를 대비한 처리 프로세스
  • 가비지 컬렉터 (Garbage Collector): 선언 후 더 이상 사용되지 않는 객체를 메모리에서 자동으로 제거해주는 모듈.

CSMA/CA

  • 무선 랜(Wireless LAN) 환경에서 데이터 전송 충돌을 피하기 위해 매체가 비어있음을 확인한 후 전송하는 방식. 

 

11. 교착상태 (Dead Lock)

둘 이상의 프로세스가 서로 자원을 점유한 채 상대방의 자원을 요구하며 무한정 대기하는 상태

이 4가지가 모두 만족되어야 교착상태가 발생한다. 

  1. 상호 배제(Mutual Exclusion): 한 번에 한 프로세스만 자원 사용 가능.
  2. 점유 및 대기(Hold and Wait): 자원을 가진 채 다른 자원을 기다림.
  3. 비선점(Non-preemption): 타인에게 할당된 자원을 강제로 뺏을 수 없음.
  4. 환형 대기(Circular Wait): 프로세스들이 원형으로 서로의 자원을 대기함.

교착상태 해결 방법

  • 예방(Prevention): 4가지 조건 중 하나를 사전에 제거 (자원 낭비 심함).
  • 회피(Avoidance): 은행원 알고리즘(Banker’s Algorithm)을 사용하여 안전한 상태일 때만 자원 할당.
  • 발견(Detection): 시스템을 점검하여 교착상태인 프로세스 찾음.
  • 회복(Recovery): 프로세스 종료 또는 자원 선점.

 

12. 기억장치 관리 전략

페이지 교체 알고리즘

주기억장치가 꽉 찼을 때 어떤 페이지를 내보낼지 결정하는 방법

  • OPT (최적 교체): 향후 가장 오랫동안 사용되지 않을 페이지 교체 (이론적 최적).
  • FIFO: 가장 먼저 들어온 페이지를 교체.
  • LRU (Least Recently Used): 최근에 가장 오랫동안 사용하지 않은 페이지 교체.
  • LFU (Least Frequently Used): 참조 횟수가 가장 적은 페이지 교체.

스래싱(Thrashing)과 Locality

  • 스래싱: 페이지 부재가 너무 자주 발생하여 CPU가 실제 작업보다 페이지 교체에 더 많은 시간을 쓰는 성능 저하 현상.
  • Locality (국부성): 프로세스가 특정 시간 동안 메모리의 일부 영역만 집중 참조하는 성질.
    • 시간 구역성: 최근 참조된 곳을 다시 참조 (Loop, Stack 등).
    • 공간 구역성: 인접한 곳을 참조 (Array, 순차 실행 등).
  • 워킹셋 (Working Set): 자주 참조하는 페이지 묶음을 메모리에 상주시켜 스래싱 방지.

페이징(Paging) vs 세그먼테이션(Segmentation)

  • 페이징: 프로그램을 고정 크기로 분할. 내부 단편화 발생 가능.
  • 세그먼테이션: 프로그램을 논리적 단위(가변 크기) 로 분할. 외부 단편화 발생 가능.

 

13. 프로그래밍 및 개발 언어 기초

Java 접근 제어자 (Access Modifier)

제어자 접근 범위
Public 누구나 접근 가능 (클래스 내부, 패키지 내부/외부)
Protected 같은 패키지 내, 혹은 상속받은 자식 클래스에서 접근 가능
Default 같은 패키지 내부에서만 접근 가능 (별도 키워드 없음)
Private 해당 클래스(객체) 내부에서만 접근 가능

 

C언어 표준 라이브러리

헤더 파일 주요 함수 역할
stdio.h printf, scanf 데이터 입출력
math.h sqrt, pow, abs 수학적 연산
string.h strlen, strcpy, strcmp 문자열 처리
stdlib.h malloc, free, rand, atoi 메모리 동적 할당, 난수, 형 변환

 

14. UNIX / LINUX 주요 명령어

  • 파일 및 디렉터리: ls(목록), cp(복사), rm(삭제), chmod(권한 설정), chown(소유자 변경).
  • 프로세스 및 시스템: fork(프로세스 생성), exec(수행), wait(대기), cat(내용 출력), fsck(시스템 검사).

 

15. 기타 핵심 개념

  • 배치 프로그램(Batch Program): 사용자 개입 없이 대량의 데이터를 일괄 처리하는 프로그램 (필수 요소: 대용량, 자동화, 안정성, 성능, 견고성).
  • 버퍼 오버플로(Buffer Overflow): 할당된 메모리 범위를 넘어선 데이터 입력으로 인해 발생하는 보안 취약점.
  • 변수 명명 규칙: 영문, 숫자, _ 사용 가능 / 첫 글자 숫자 불가 / 공백 및 예약어 사용 불가.