[정보처리기사 필기] 제4과목: 프로그래밍 언어 활용
공부

[정보처리기사 필기] 제4과목: 프로그래밍 언어 활용

작성일: 2026년 02월 02일·...

1. 운영체제 (Operating System) 기본

1) UNIX / Linux 주요 명령어

리눅스 명령어의 기능을 묻거나, 파일 권한(chmod) 숫자를 계산하는 문제가 나옵니다.

  • chmod (권한 변경): R(4) + W(2) + X(1)
  • 예: chmod 755 (소유자 4+2+1=7, 그룹 4+0+1=5, 기타 4+0+1=5)
  • fork: 새로운 프로세스를 생성 (복제)
  • chown: 파일 소유자 변경
  • uname -a: 시스템 정보 확인
  • pwd: 현재 경로 출력
  • 2) 프로세스 스케줄링 (Scheduling)

    CPU를 누구에게 먼저 줄 것인가 정하는 방법입니다.

    [1] 비선점(Non-preemptive) 형

    이미 할당된 CPU를 강제로 뺏을 수 없음.

  • FCFS: 먼저 온 놈이 먼저 (First Come First Served)
  • SJF: 실행 시간이 가장 짧은 놈 먼저 (Shortest Job First)
  • HRN: SJF의 단점(긴 작업 무한 대기) 보완. 우선순위 계산식 암기 필수.
  • 우선순위 = (대기시간 + 서비스시간) / 서비스시간
  • (값이 클수록 우선순위가 높음)
  • [2] 선점(Preemptive) 형

    우선순위가 높으면 강제로 CPU를 뺏을 수 있음.

  • Round Robin (RR): 시간 할당량(Time Slice)만큼만 쓰고 돌려가며 씀
  • SRT: 남은 처리 시간이 가장 짧은 놈에게 뺏어줌
  • 다단계 큐 (MLQ): 큐마다 우선순위 다름
  • 3) 페이지 교체 알고리즘

    메모리가 꽉 찼을 때 누구를 내보낼지 결정하는 기법입니다.

  • FIFO: 가장 먼저 들어온 페이지 교체
  • LRU (Least Recently Used): 가장 오랫동안 사용하지 않은 놈 교체 (시간 기준)
  • LFU (Least Frequently Used): 사용 횟수가 가장 적은 놈 교체 (횟수 기준)
  • NUR: 참조 비트와 변형 비트를 이용해 교체

  • 2. 네트워크 (Network) 기초 [암기 필수]

    1) OSI 7계층

    각 계층의 순서, 전송 단위(PDU), 장비를 묻습니다. 아래에서 위로 외우는 것이 국룰입니다.

  • 두음암기: [물.데.네.전.세.표.응]
  • 1계층 [물]리 (Physical): 비트(Bit). 리피터, 허브.
  • 2계층 [데]이터링크 (DataLink): 프레임(Frame). 브리지, 스위치.
  • 3계층 [네]트워크 (Network): 패킷(Packet). 라우터(IP).
  • 4계층 [전]송 (Transport): 세그먼트(Segment). L4 스위치. (TCP/UDP)
  • 5계층 [세]션 (Session): 대화 제어, 동기점.
  • 6계층 [표]현 (Presentation): 암호화, 압축.
  • 7계층 [응]용 (Application): 사용자가 쓰는 프로그램(HTTP, FTP).
  • 2) TCP vs UDP (4계층 프로토콜)

  • TCP: 신뢰성 있음, 연결 지향형, 느림 (3-way Handshake)
  • UDP: 신뢰성 없음, 비연결형, 빠름 (실시간 방송, 게임)
  • 3) IPv4 vs IPv6

  • IPv4: 32비트 (8비트씩 4부분), 10진수, 점(.)으로 구분
  • IPv6: 128비트 (16비트씩 8부분), 16진수, 콜론(:)으로 구분, 유니/멀티/애니캐스트

  • 3. 프로그래밍 언어 (C, Java, Python)

    이 부분은 요약보다 [코드 실행 결과 예측] 연습이 필요하지만, 자주 틀리는 문법 함정을 정리했습니다.

    1) C언어의 포인터 (Pointer)

    가장 오답률이 높은 파트입니다. 기호의 의미를 정확히 구분하세요.

  • : 값 (내용물)
  • &: 주소 (위치)
  • 배열의 이름은 곧 그 배열의 시작 주소입니다. (arr == &arr[0])
  • 2) 연산자 우선순위

    복잡한 식을 계산할 때 순서가 중요합니다.

  • 순서: 산술(*, /, %) -> 산술(+, -) -> 시프트(<<) -> 관계(>, <) -> 논리(&&, ||)
  • 팁: 괄호가 없으면 곱하기/나누기 먼저, 그리고 AND(&&)가 OR(||)보다 먼저입니다.
  • 3) Python의 슬라이싱 (Slicing)

    리스트에서 일부를 잘라낼 때 범위가 헷갈립니다.

  • 문법: list[start : end]
  • 주의: start는 포함, end는 포함하지 않음 (start <= x < end)
  • 예: a = [0, 1, 2, 3] 일 때, a[0:2] 의 결과는 [0, 1] 입니다. (2는 미포함)
  • 4) Java의 접근 제한자

  • public: 어디서나 접근 가능
  • protected: 같은 패키지 + 상속받은 자식 클래스
  • default: 같은 패키지 내에서만 (생략 시 기본값)
  • private: 내 클래스 안에서만

  • 4. 기타 필수 암기

    1) 결합도와 응집도 (1과목, 5과목과 중복되지만 중요)

    좋은 소프트웨어는 결합도는 낮고(Low), 응집도는 높아야(High) 합니다.

  • 결합도(Coupling) 순서 (약->강): [자.스.제.외.공.내]
  • 자료(Data) -> 스탬프 -> 제어 -> 외부 -> 공통 -> 내용(Content)
  • 자료 결합도가 가장 좋고, 내용 결합도가 가장 나쁨.
  • 응집도(Cohesion) 순서 (강->약): [기.순.교.절.시.논.우]
  • 기능(Functional) -> 순차 -> 교환 -> 절차 -> 시간 -> 논리 -> 우연(Coincidental)
  • 기능 응집도가 가장 좋고, 우연 응집도가 가장 나쁨.
  • 2) 라우팅 프로토콜 (3계층)

  • RIP: 거리 벡터, 홉(Hop) 카운트 15 제한 (소규모)
  • OSPF: 링크 상태, 다익스트라 알고리즘 (대규모)
  • BGP: 경로 벡터, AS(자치 시스템) 간 연결

  • [4과목 합격 전략]

  • [코드 문제]는 눈으로만 풀지 말고, 시험지 여백에 변수 박스를 그리고 값이 변하는 과정을 한 줄씩 써가며(디버깅) 푸세요.
  • [운영체제 계산] 중 HRN 우선순위 구하는 공식과 평균 대기시간 구하는 법은 한 번씩만 연습하면 맞출 수 있습니다.
  • [OSI 7계층]은 무조건 1~2문제 나오니 두음 문자를 꼭 외우세요.