9 분 소요

정보처리기사를 취득하기 위해 공부하는 과정에 작성한 ‘프로그래밍 언어 활용’ 관련 정리이다.

C

C 개요

  • C 기본 자료형 : short, int, long, float, double, char
  • C 변수명 작성 규칙 : 영문 대소문자, 숫자, _ 혼용 (첫글자 숫자X, 예약어X)

C 라이브러리

  • 라이브러리 : 필요할 때 찾아 쓸 수 있도록 모듈화되어 모듈, 패키지의 형태로 제공되는 프로그램
  • 헤더 파일 (.h)가 필요한 이유? : 라이브러리를 사용하기 위해
  • 표준 라이브러리 : string.h, stdio.h, stdlib.h, ctype.h
    • stdlib.h 함수 : malloc, calloc, realloc, free, rand, abs

C 연산자

  • C 연산자 종류·우선순위 : 단항 연산자 → 산술 연산자 → 시프트 연산자 → 관계 연산자 → 비트 연산자 → 논리 연산자 → 조건 연산자 → 대입 연산자 → 콤마 연산자
    • 논리 연산자의 우선순위 : NOTANDOR

C 포인터

  • C 포인터 : 객체에 대한 참조를 하는 다른 객체를 가리키는 자료형
    • 주소 연산자 & : 모든 변수에 대한 주소값을 구하는 연산자
    • 간접 연산자 * : 포인터 변수의 자료를 구하는 연산자

C 배열 / C 구조체

  • C 배열 : 배열, 구조체, 공용체
    • 구조체 : 서로 연관된 데이터를 모아놓은 것

Java

Java 개요

  • Java : 객체지향 프로그래밍 언어
    • 객체지향 구성 요소 : 클래스, 객체, 속성, 메소드, 메시지
    • 객체지향 특징 : 캡슐화, 정보은닉, 추상화, 상속성, 다형성
  • 가비지 컬렉션 : JVM에서 불필요한 메모리 정리
  • Java 기본 자료형 : byte, short, int, long, float, double, char, boolean
  • Java 출력 메소드 : System.out.print() (줄바꿈 X), System.out.printIn() (줄바꿈 O), System.out.printf() (변환 문자 사용해 출력)
  • Java 변수명 작성 규칙 : 영문 대소문자, 숫자, _, $ 혼용 (첫글자 숫자X, 예약어X)
  • Java 연산자 종류·우선순위 : 단항 연산자 → 산술 연산자 → 비트 이동 연산자 → 관계 연산자 → 비트 논리 연산자 → 논리 연산자 → 조건 연산자 → 대입 연산자

Java 자료형

  • Java 기본 자료형 : 논리형, 문자형, 정수형, 실수형
  • Java 참조 자료형 : 문자열, 배열, 클래스, 인터페이스, 열거형

Java 클래스

  • 클래스 : 객체를 정의하기 위한 틀
    • 클래스 선언 후 new로 객체 생성, 래퍼런스 변수를 선언해 객체 활용
    • 클래스 이름은 하나 이상의 문자로 (반드시 대문자로 시작해야 함)
    • 소스 파일에는 하나의 public 클래스만 가능
    • main은 실행의 시작을 위해 반드시 필요
  • 추상 클래스 : 실행 코드가 없는 추상 메소드를 하나 이상 포함하는 클래스
    • 추상 메소드 : 자식 클래스에서 재정의해 사용하는 메소드
    • 클래스의 형변환 : 재정의한 메소들르 부모 클래스의 객체 변수를 통해 사용하려면 부모 클래스의 객체 변수를 선언할 때 자식 클래스의 생성자를 이용해야 함 → 클래스의 다형성

Java 상속

  • 상속 : 자식 클래스가 부모 클래스의 속성과 메소드를 상속받는 것
  • 메소드 오버라이딩 : 클래스 상속 상황에섯 부모 클래스의 멤버를 자식 클래스에서 상속해 내용을 수정해 사용

Java 예외 처리

  • 예외 처리 : 오동작이나 실행 시간 동안 발생해 결과에 악영향을 미치는 오류
    • 예외 처리 특징 : 예외 클래스 계총 구조, Checked & UnChecked예외, try-catch-finally, 다중 catch 블록, throws & throw, CustomException

Python

스크립트 언어와 Python

  • 스크립트 언어 : 소스 코드를 컴파일 과정 없이 실행할 수 있는 프로그래밍 언어
    • 서버 측 스크립트 언어 : ASP, JSP, PHP, Python
    • 클라이언트 측 스크립트 언어 : JS
  • Python : 플랫폼 독립적, 인터프리터, 객체지향적, 동적 타이핑 대화형 언어
  • Python 변수명 작성 규칙 : 영문 대소문자, 숫자, _ 혼용 (첫글자 숫자X, 예약어X)
  • Scrapy : Python 웹 크롤러 프레임워크

Python 자료형

  • Python 숫자 자료형 : 정수형, 실수형, 복소수형
  • Python 시퀀스 자료형 : 문자열, 리스트, 튜플
  • Python 매핑 자료형 : 딕셔너리
  • Python 집합 자료형 : 집합
  • Python 부울 자료형 : 불리언
  • Python None 자료형 : None

Python 연산

  • 인덱싱 : 문자열의 각 문자에 인덱스 할당 (첫번째는 0)
  • 클래스 메소드 : 클래스에 속한 메소드 (@classmethod 데코레이터로 정의)

Python 함수

  • Python 함수 : 재사용 가능한 코드 블록
    • range() : 0~주어진 인수 미만의 연속된 정수를 리스트 객체로 반환
    • map() : 주어진 함수를 순회 가능한 객체의 모든 요소에 적용해 새로운 이터레이터 반환
    • split() : 구분자 기준으로 분리해 분리된 각 부분을 원소로 가지는 리스틑 반환
  • Python 조건문 : if ~ elif ~ else
  • 지역 변수 : 함수 내에서 정의된 변수

운영체제 개론

운영체제 개요

  • 운영체제 : 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로 동작하는 시스템 소프트웨어
    • 시스템 소프트웨어 : 컴퓨터의 전반적인 운영에 필요한 가장 기본적인 프로그램
    • 운영체제 평가 기준 : 처리 능력 향상, 응답 시간 단축, 신뢰도 향상, 사용 기능도 향상

운영체제의 운영 방식

  • 일괄 처리 시스템 : 사용자 개입 없이 일정량 혹은 일정 시간 동안 데이터를 모아 처리
  • 다중 프로그래밍 시스템 : 2개 이상의 프로그램을 주기억장치에 기억시켜 CPU를 번갈아 사용
    • 다중 프로그래밍 시스템 특징 : 멀티태스킹, 가상 메모리, CPU 리소스 사용 효율화
  • 실시간 처리 시스템 : 데이터 발생 즉시 처리하여 결과 산출
  • 시분할 시스템 :CPU 전체 사용 시간을 작업 시간량으로 나눠 CPU를 시간량 동안만 사용
    • 시분할 시스템 특징 : 다중 사용자 지원, 시분할 방식, 대화식 환경
  • 다중 처리 시스템 : CPU를 두 개 이상 두어 그 업무를 분담해 처리
    • 다중 처리 시스템 특징 : 병렬 처리, 자원 분산, 확장성
  • 분산 처리 시스템 : 여러 대의 컴퓨터로 작업을 나누어 처리
  • 가상화 시스템 : 하나의 물리적 시스템에서 여러 개의 가상 시스템을 구동
  • 클라우드 컴퓨팅 시스템 : 인터넷을 통해 자원을 공유받고 서비스를 제공

운영체제의 프로그램 구성

  • 제어 프로그램 : 컴퓨터 시스템의 하드웨어와 소프트웨어를 제어
    • 제어 프로그램 기능 : 프로세스·메모리·입출력·장치·자원·보안 관리
    • 제어 프로그램 종류 : 감시 프로그램, 작업 제어 프로그램, 데이터 관리 프로그램
  • 처리 프로그램 : 사용자의 응용 프로그램이나 그 작업을 실행
    • 처리 프로그램 역할 : 응용 프로그램 실행, 작업 처리, 자원 관리, 결과 제공
    • 처리 프로그램 기능 : 파일·메모리·디스크·네트워크 관리, 사용자 인터페이스
    • 처리 프로그램 종류 : 언어 번역 프로그램, 서비스 프로그램, 문제 프로그램

프로세스 관리

  • 프로세스 : 실행 중인 프로그램
    • 프로세스 제어 블록 (PCB) : 운영체제가 프로세스를 관리하기 위해 프로세스에 대한 중요 정보 저장
    • 프로세스 상탵 전이 : 프로세스가 다양한 상태를 거치면서 실해오디는 과정 (운영체제의 스케줄러로 관리)
      • 프로세스 상태 전이 절차 : 생성 → 준비 상태 → 실행 상태 (디스패치, 할당 시간 종료) → 대기 상태 (블록, 웨이크 업) → 종료
  • 스레드 : 프로세스 내 작업 단위 (시스템의 여러 자원을 할당받아 실행하는 프로그램 단위)
  • 병행 프로세스 : 두 개 이상의 프로세스들이 동시에 실행 상태에 있는 것 → 병행 프롯세스 오류 방지
    • 임계 영역 : 어느 시점에서 하나의 프로세스가 자원을 사용하도록 지정된 공유 영역
    • 상호 배제 : 공유 변수에 접근하고 있는 한 프로세스 외엔 모두 공유 변수를 접근하지 못하게 함
    • 세마포어 : 프로세스 간 동기를 유지하고 상호 배제의 원리 보장
    • 모니터 : 모니터의 경계에서 상호배제 시행, 모니터 외부에선 모니터 내부에 직접 액세스 불가능

교착 상태

  • 교착 상태 : 둘 이상의 프로세스들이 서로 다른 프로세스가 차지한 자원을 요구하며 무한정 대기
    • 교착 상태 발생 조건 : 상호 배제, 점유 및 대기, 비선점, 환형 대기
    • 교착 상태 해결 방법 : 예방, 회피, 발견, 회복
  • 인터럽트 : 어떤 특수 상태 발생 시 현재 실행 중인 프로그램을 일시 중단하고, 그 특수 상태를 처리하는 프로그램

프로세스 스케줄링

  • 프로세스 스케줄링 : 프로세스 생성 및 실행에 필요한 시스템 자원을 해당 프로세스에 할당
    • 비선점 : 한 프로세스가 CPU를 할당받으면 다른 프로세스가 CPU 사용 완료까지 대기
      • FIFO : 준비 상태 큐에 도착한 순서대로 CPU 할당
      • SJF : 준비 상태 큐에 기다리는 프로세스 중 가장 짧은 프로세스에 먼저 CPU 할당
      • HRN : 서비스 시간, 서비스 대기 시간으로 결정된 우선순위에 따라 CPU 할당
        • HRM 우선순위 계산식 = (대기 시간 + 서비스 시간) / 서비스 시간
    • 선점 : 한 프로세스가 CPU를 할당받아도 다른 프로세스가 우선순위가 높으면 CPU 점유

기억 장치 관리

  • 반입 전략 : 보조 기억 장치에 보관된 프로그램이나 데이터를 주기억 장치에 언제 가져올지 결정하는 전략
    • 요구 반입 : 프로세스가 실제 필요한 때만
    • 예상 반입 : 프로세스의 실행 특성 및 예측을 기반하여 미리
  • 배치 전략 : 보조 기억 장치에 보관된 프로그램이나 데이터를 주기억 장치의 어디로 가져올지 결정하는 전략
    • 최초 적합 : 주기억 장치 내에 적재 가능한 공간에 첫번째 분할 영역에 배치
    • 최적 적합 : 주기억 장치 내에 적재 가능한 공간에 가장 작은 공백이 남는 부분에 배치
    • 최악 적합 : 주기억 장치 내에 적재 가능한 공간에 가장 큰 공백이 남는 부분에 배치
    • 단편화 : 주기억 장치 내에 빈번히 기억 장소가 할당되고 반납되면서 기억 장소들이 조각들로 나뉘는 현상
      • 내부 단편화 : 프로세스가 필요한 크기보다 메모리가 더 커서 메모리 공간 낭비
      • 외부 단편화 : 메모리 할당 및 해제가 반복되면서 중간에 남는 메모리를 사용하지 못해 메모리 공간 낭비

가상 기억 장치

  • 가상 기억 장치 할당 방식 : 주기억 장치의 부족한 용량을 해결하기 위해 보조 기억 장치를 주 기억 장치처럼 활용
    • 세그멘테이션 : 가상 장치에 보관된 프로그램을 다양한 크기로 나눠 적재
    • 페이징 : 가상 기억 장치에 보관된 프로그램과 주기억 장치의 영역을 동일하게 나눠 적재
  • 페이징 부재 : 참조할 페이지가 주기억 장치에 없는 현상
    • 페이징 부재 처리 과정 : 페이지 부재 예외 처리 → 페이지 스와핑 (디스크에서 페이지 가져옴)
      → 페이지 테이블 가져옴 → 프로세스 재시작</br>
  • 워킹 셋 : 가상 기억 장치 관리에서 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
  • 스래싱 : 한 프로세스가 작업 과정에 수행하는 기억 장치 접근에서 지나친페이지 부재가 발생해,
    프로세스 수행 시간보다 페이지 이동에 걸리는 시간이 더 커지는 현상</br>
  • 기억 장치 교체 전략 : OPT, FIFO, LRU, NUR, SCR

디스크 스케줄링

  • 디스크 스케줄링 : 사용 데이터가 디스크 곳곳에 저장되어 있을 때, 데이터 액세스를 위해 디스크 헤드의 이동 경로 결정
    • FCFS : FIFO
    • SSFT : 탐색 거리가 가까운 순서대로
    • SCAN : 진행 방향 끝까지, 그리고 반대로

정보 관리

  • 파일 시스템 : 연관된 데이터의 집합인 파일을 관리하는 시스템
    • 파일 디스크립터 (FCB) : 파일 관리에 필요한 정보를 가진 제어 블록

분산 운영체제

  • 분산 처리 시스템 : 여러 대의 컴퓨터들에 의 해 작업한 결과를 통신망으로 상호 교환할 수 있도록 연결된 시스템
  • 투명성 : 분산 처리 운영체제에서 구제적인 시스템 환경을 사용자가 알수 없도록 하는 것
    • 투명성 종류 : 위치 투명성, 이주 투명성, 복제 투명성, 병행 투명성, 접근 투명성

UNIX, Linux

  • UNIX : 시분할 시스템을 위해 설계된 대화식 운영체제
    • 쉘 : 사용자가 지정한 명령들을 해석해 커널로 전달하는 명령어 해석기 (인터페이스 담당)
  • Linux : UNIX와 호환, 멀티태스킹 및 멀티 유저 지원
    • umask : 파일, 디렉터리 생성 시 초기 접근 권한 설정
  • 리눅스 로그 파일 : utmp, wtmp, btmp

네트워크 개론

데이터 통신 개요

  • 네트워크 : 원하는 정보를 원하는 수신자에 정확히 전송하기 위한 기반 인프라
    • 네트워크 분류 : LAN, MAN, WAN
    • 네트워크 관련 장비 : 리피터, 허브, 스위치 (L1, L2, L3, L4, L5), 브리지, 라우터, 게이트웨이
  • LAN : 근거리 통신 네트워크
    • LAN 토폴로지 : 성형, 링형, 버스형, 계층형, 망형
    • LAN 분류 : 베이스밴드, 광대역
    • 전송 매체 접근 제어 (MAC) : 하나의 통신 회선에 여러 컴퓨터 연결
    • LAN 표준 : 이더넷
  • 데이터 회선망 : 전용 회선, 교환 회선
    • 회선 구성 방식 : 점 대 점 방식, 다중 점 방식, 회선 다중 방식
    • 회선 교환 방식, 축적 교환 빙식 (메시지 교환 방식, 패킷 교환 방식 (가상 회선, 데이터그램))

OSI 7계층과 오류 제어 방식

  • OSI 참조 모델 : 컴퓨터 네트워크에서 여러 시스템이 데이터를 통신하도록 표준화·계층화된 인터페이스
    • DPI : 전 계층의 패킷 내부 컨텐츠를 파악해 트래픽을 조장하는 패킷 분석 기술
  • OSI 7계층 구조 : OSI 참조 모델을 구체화한 것
    1. 물리 계층 : 물리적, 기계적 통신 (RS-232C)
    2. 데이터 링크 계층 : 두 통신 시스템 간의 링크로 전송 (HDLC, LLC)
    3. 네트워크 계층 : 통신망을 통해 패킷을 목적지까지 전달 (IP)
    4. 전송 계층 : 통신 종단 간 데이터 전송 (TCP, UDP)
    5. 세션 계층 : 프로세스 간 연결 관리
    6. 표현 계층 : 응용 및 세션 사이의 대화 제어 및 데이터 변환
    7. 응용 계층 : 응용 서비스 제공 (HTTP, FTP, DNS, SMTP)
  • 자동 반복 요청 (ARQ) : 통신 경로에 오류가 발생하면 수신자가 오류 발생을 송신자에 통보하고, 송신자는 오류가 발생한 프레임을 재전송하는 오류 제어 방식
    • ARQ 종류 : 정지-대기 ARQ, 연속 ARQ, 선택적 재전송 ARQ, 적응적 ARQ
  • 패리티 검사 : 데이터 블록에 1비트의 패리티 비트를 추가해 오류 검출 (홀수 패리티, 짝수 패리티)
  • 순환 중복 검사 : 다항식 코드를 통한 에러 검사 (해밍 코드 방식)

TCP/IP 프로토콜, 패킷 교환

  • TCP/IP : 인터넷에 연결된 서로 다른 기종의 컴퓨터 간에 데이터 송수신을 돕는 표준 프로토콜
    • TCP : 전송 계층 (L4) 역할 수행 (순서·에러·흐름 제어, 전이중·스트림 데이터 서비스, 메시지 캡슐화·역캡슐화, 다중화·역다중화)
    • UDP : 전송 계층 (L4) 역할 수행 (비연결성·비신뢰성, 복구 X)
    • IP : 네트워크 계층 (L3) 역할 수행 (라우팅·데이터그램)
      • ICMP : IP 오류 보고 및 수정 메커니즘
      • IGMP : 시작지에서 여러 목적지로 전송될 때 사용
      • ARP : 논리 주소를 물리 주소로 변환
  • IP 프로토콜 필드 : 헤더 길이 (4bit), 토탈 패킷 길이 (16bit), Time-To-Live (8bit)

IP 주소와 경로 제어

  • IPv4 : 32비트 IP 주소 (네트워크 주소 + 호스트 주소)
    • IPV4 특징 : 주소 고갈, 서브넷팅·CIDR
    • IPv4 주소 체계 : 클래스 A ~ E
    • 서브넷 마스크 : 네트워크를 작은 내부 네트워크로 분리해 이진 형태로 관리
  • IPv6 : 128비트 IP 주소 (16비트씩 8개 필드로 분리 표기)
    • IPV6 장점 : 보안성 강화, 확장 용이, 패킷 크기 제한 없음, 실시간 처리·자동 네트워크 구성 가능
    • IPV6 통신 방식 : 유니캐스트, 애니캐스트, 멀티캐스트
  • 경로 제어 : 각 메시지에서 목적지까지 갈 수 있는 여러 경로 중에 한 경로를 설정
    • 경로 제어 프로토콜 : IGP, EGP, BGP