study/정보처리기사

4과목 프로그래밍 언어 활용

으녕오리 2025. 5. 10. 15:18
  • OSI 7계층(아래부터 1계층)(응표세/전네/데물 -> /는 TCP/IP 4계층을 나누는 기준) ★★★★★★★
    • 응용 계층
      • 응용계층, 표현계층, 세션계층
      • 전송 단위 : Data
      • TCP에 해당하는 프로토콜
        • telnet : 외부에 있는 컴퓨터를 연결할 때
        • FTP : 파일 업로드
        • HTTP : 웹 브라우저
        • POP : 메일
        • SMTP : 메일
      • UDP에 해당하는 프로토콜
        • DHCP : IP 주소를 동적으로 할당
        • SNMP : 관리
        • DNS : IP 주소 전달
    • 전송 계층
      • 양 종단 간 신뢰성 있는 정보 전달
      • 전송 단위 : H/D -> Segment
      • TCP : 3way handshaking 해서 연결 후 보냄
      • UDP : 그냥 보냄
    • 네트워크 계층
      • 전송 단위 : H/S -> Packet
      • 장비 : 라우터(서로 다른 네트워크 대역에 있는 호스트들 상호 간에 통신할 수 있도록 해주는 네트워크 장비)
        • 정적 라우팅 프로토콜
        • 동적 라우팅 프로토콜
          • 내부 라우팅 프로토콜 ★★★★★
            • RIP : 최대 15홉, 거리 벡터 알고리즘
            • OSPF : 홉수 제한 x, 링크 상태 알고리즘
          • 외부 라우팅 프로토콜
            • BGP
      • ARP : IP(논리주소) -> Mac(물리주소)
      • RARP : Mac -> IP
      • IPSec(양방향)
        • AH : 인증, 무결성
        • ESP : 인증, 무결성, 기밀성
        • Tunnel 모드와 Transport 모드로 분류된다.
    • 네트워크 인터페이스 계층(이 아래가 우리집)
      • 데이터 링크 계층
        • 인접한 노드의 신뢰성 있는 정보 전달(물리적 연결 이용)
        • 전송 단위 : H/P -> Frame
        • 장비 : 스위치, 브릿지 
      • 물리 계층
        • 전송 단위 : bit
        • 장비 : 허브, 리피터

  • 포트번호
    • FTP : 21
    • SSH : 22
    • TELNET : 23
    • SMTP : 25
    • DNS : 53
    • HTTP : 80
    • HTTPS : 443
    • POP3 : 110
  • 역공학의 3R : 역공학, 재공학, 재사용
  • 스케줄링 방식 분류
    • 선점 : SRT, MLQ, MFQ, RR
    • 비선점 : SJP, HRN, 기한부, 우선순위
  • 흐름제어
    • 정지-대기 (Stop and Wait)
    • 슬라이딩 윈도우 (Sliding Window)
  • 오류제어
    • Stop and Wait ARQ
    • Go-back-N ARQ
    • Selective-Repeat ARQ
    • 적응성 (Adaptive) ARQ
  • 모듈 사이의 결합도(테스야 제 외저래 공유랑 내가 닮았대) 6개★★★★★★★★★★★
    • 자료 결합도(결합도 가장 낮음, 좋음): 모듈 간에 자료(값)를 통해서만 모듈 상호 작용이 발생한다.
    • 스탬프 결합도: 모듈 간에 배열이나 오브젝트, 스트럭처 등이 전달되는 경우이다.
    • 제어 결합도: 값만 전달되는 것이 아니라, 제어 요소가 함께 전달되는 경우이다.
    • 외부 결합도: 모듈에서 외부로 선언한 변수를 다른 모듈에서 참조하는 경우이다.
    • 공통 결합도: 전역변수를 참조하는 경우이다.
    • 내용 결합도: 다른 모듈 내부에 있는 변수나 기능을 또 다른 모듈에서 사용하는 경우이다.
  • 응집도(우리 놀던 시절에 먹었던 통통한 순대 기가 막히게 맛있었어) 7개★★★★★★★★★★★
    • 우연적 응집도 : 모듈 내부의 각 구성 요소들이 서로 연관이 없는 경우이다.
    • 논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우이다.
    • 시간적 응집도 : 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리하는 경우이다.
    • 절차적 응집도 : 모듈 안의 구성 요소들이 기능을 순차적으로 수행하는 경우이다.
    • 통신적 응집도 : 동일한 입력값과 출력값을 사용하여 서로 다른 기능을 수행한다.
    • 순차적 응집도 : 모듈 내에서 한 활동의 출력값이 다음 활동의 입력값으로 사용된다.
    • 기능적 응집도 (응집도 가장 높음, 좋음) : 모듈 내 모든 기능이 단일한 목적을 위해 수행된다.
  • TCP/UDP 특성
기능 TCP UDP
데이터 전송 단위 세그먼트 블록 형태의 데이터그램
패킷 오버헤드 20Byte 8Byte
서비스 형태 연결 지향형 비연결 지향형
수신 순서 송신 순서와 일치 송신 순서와 불일치
데이터 손실 손실 없음 손실 가능
흐름/혼잡/오류 제어 있음 (ARQ 사용) 없음
전송 속도 UDP보다 느림 TCP보다 빠름
사용 프로토콜 HTTP, FTP, Telnet, SMTP 등 DNS, NFS, SNMP, RIP, RTP 등
  • 페이징 : 고정 크기로 자름, 내부단편화 생김 (페이지 맵 테이블 : 가상 페이지가 어떤 프레임에 매핑되는지를 저장함)
    세그멘테이션 : 가변 길이로 자름, 외부단편화 생김
  • 제어 프로그램 : 감시 프로그램, 작업 제어 프로그램, 자료 관리 프로그램
  • LAN의 표준 802.X 시리즈
    • 802.3 - 충돌 회피에 관한 규약 CSMA/CD -> 유선 
    • 802.4 - 토큰 버스에 관한 규약
    • 802.5 - 토큰 링에 관한 규약
    • 802.11 - 무선 LAN에 관한 규약 CSMA/CA -> 무선
    • 802.15 - 블루투스에 관한 규약
  • 배치 전력
    • First Fit : 들어갈 수 있는 첫번째 공간에 집어 넣음
    • Best Fit : 
    • Worst Fit : 가장 큰 공간에 집어넣음
  • 교착상태 발생조건
    • 상호배제(Mutual Exclusion) : 한 번에 한 개의 프로세스만이 사용 가능
    • 점유와 대기(Hold & Wait) : 자원이 점유되지 않은 상태에서만 자원을 요구하도록 한다.
    • 비선점(Non-preemption) 선점으로 많이 나옴(틀린 보기) : 할당된 자원은 사용이 끝날 때까지 강제로 빼앗을 수 없다.
    • 환형대기(Circular Wait) : 이미 자원을 가진 프로세스가 앞이나 뒤의 프로세스의 자원을 요구한다.
  • 교착상태 해결방법 중 은행원 알고리즘 -> 회피 기법
  • IPv4 vs IPv6
구분 IPv4 IPv6
주소길이 32bit 128bit
표시방법 8bit씩 4부분 16bit씩 8부분(16진수)
주소할당 A, B, C 클래스 단위 비 순차적 할당 순차적 할당
헤더크기 고정 가변
전송방식 유니캐스트, 멀티캐스트, 브로드캐스트 유니캐스트, 멀티캐스트, 애니캐스트
  • 변수 규칙
    • 영문 대, 소문자
    • 숫자
    • _ 외의 특수문자는 불가능
    • 첫번째에 영문 or _ 가능 -> 숫자는 불가능
    • 공백 x
    • 예약어 x
  • 스래싱(Thrashing) : 운영체제에서 페이지 교체가 너무 자주 일어나면서 CPU는 실제 작업을 거의 하지 못하고,
    계속해서 페이지 교체만 하느라 바쁜 상태
  • 워킹셋(Working set) : 운영체제의 가상기억장치 관리에서 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
  • UNIX 명령어
    • ls : 현재 파일
    • cat : 파일의 내용
    • chmod : 파일의 사용 권한
    • fork : 새로운 프로세스를 생성
    • pwd : 현재 작업 디렉터리의 절대 경로
    • uname : 버전 확인
  • 삼항 연산자 : 조건식 ? 참값 : 거짓값
  • 파일 디스크립터 : 파일 시스템이 관리하므로 사용자가 직접 참조할 수 없다.
  • while문의 ()안에는 참이나 거짓을 판단할 수 있는 조건식이 들어가야 함 -> 그렇지 않으면 오류
  • a[3:7:2] : 리스트 a의 3번째(0, 1, 2, 3) 인덱스부터 7번째 인덱스(미포함)까지 2칸(2값 x)씩 건너뛸 때 값을 추출
  • print(a[:8])은 리스트 a의 0번째 인덱스부터 8번째 인덱스(미포함)까지 값을 출력
  • printf("%d", r); -> r을 10진수로 출력한다.
  • %d -> 10진수로 출력, %c -> 문자로 출력
  • 오버로딩은 메소드명이 같아야 하고 오버라이딩은 메소드명을 다르게 한다.
  • 트랜잭션의 상태 중 Aborted는 철회를 뜻하며, 실패하여 Rollback을 수행한 상태이다.
  • 매 페이지마다 참조 비트와 변형 비트를 두는 페이지 교체 기법 -> NUR
  • 메모리의 구조
    •  스택 : 함수 호출 시 자동 할당, LIFO
    • 힙 : malloc() -> 바이트 단위, free()
    • 버퍼 : 일시적으로 저장
    • 스풀(Spool) : 입출력 장치와 데이터를 주고받는 데 사용되는 영역
  • sizeof : 자료형의 크기
    length : 자료형의 길이
    strlen : 문자열의 길이
    type : 자료형을 출력
  • [0] * 2 -> [0, 0]
    [[0]*2 for y in range(2)] -> [0, 0]을 2번 반복해서 리스트로 만든다 -> [[0, 0], [0, 0]]
  • 페이지 프레임 계산 문제에서 이미 존재하는 숫자가 나오면 프레임에 숫자를 또 써주지 않아도 된다.
  • 스케줄링 우선순위 계산식 : 대기시간 + 서비스 시간 / 서비스 시간 계산했을 때, 숫자가 가장 큰 것이 우선순위가 가장 높다.
  • a | b -> 비트 OR 연산자, 2진수로 변환 후 둘 중 하나라도 1이면 1 출력
  • Python 예외 처리 구조 : try -> except -> else -> finally
    try:
        # 오류가 발생할 수 있는 코드
    except 예외타입:
        # 예외가 발생했을 때
    else:
        # 예외가 발생하지 않았을 때 (optional)
    finally:
        # 항상 실행할 코드 (optional)
  • 컨텍스트 스위칭(Context Switching) : 다중 프로그래밍 시스템에서 OS에 의해 CPU가 할당되는 프로세스를 변경하기 위한 목적으로
    현재 CPU를 사용하여 실행되고 있는 프로세스의 상태 정보를 저장하고 제어 권한을 ISR에게 넘기는 작업
  • shell : 사용자와의 인터페이스 담당
  • kernel : shell 에서 명령을 받음, 직접적으로 하드웨어를 관리
  • 정수 데이터 타입
    • 자바
      • byte              1 byte
      • short char    2 byte
      • int                 4 byte
      • long              8 byte
    • C/C++
      • short            2 byte
      • int                 4 byte
      • long              4 byte
  • #include : C언어의 외부 헤더 파일을 현재 파일에 포함시킬 때 사용하는 선행 처리 지시자
  • 자바에서 a<<n 는 a x 2의n제곱
  • ICMP 메시지는 8바이트의 헤더와 가변 길이의 데이터 영역으로 나뉜다.
  • A~C 클래스 범위
클래스 시작IP 끝IP 옥텟 범위
A 1.0.0.0 126.255.255.255 1 ~ 126
B 128.0.0.0 191.255.255.255 128 ~ 191
C 192.0.0.0 223.255.255.255 192 ~ 223
  • exec() : 새로운 프로세스를 생성하지 않고, 쉘 프로세스를 대체
  • 페이지 교체 알고리즘 : Optimal(OPT, 이후에 가장 오랫동안 사용되지 않을 페이지 먼저 교체), LRU, LFU
  • 게이트웨이 : 한 네트워크에서 다른 네트워크로 들어가는 입구 역할을 하는 장치
  • stlen -> 공백도 문자열 길이 셀 때 추가됨
  • C언어에서 참, 0이 아님 -> 1 거짓, 0 -> 0
  • scanf(%d, &value) : 정수 하나를 입력 받는다, 그 정수를 value에 저장해라
  • 서브넷에서, 각 대역의 첫 번째 IP는 네트워크 ID, 마지막 IP는 브로드캐스트 주소로 할당
  • A클래스 : 0 B클래스 : 10 C클래스 : 110
  • 파이썬 : 귀도 반 로섬(Guido van Rossum)
  • range(n + 1)은 0부터 n까지의 숫자를 생성
  • UNIX의 쉘(Shell)은 프로세스와 메모리를 관리 x 커널이 하는 일이다.