본문 바로가기
자격증/정보처리기사

[정보처리기사] 4과목 기출문제 개념 정리 (2021~ 2023)

by 리콩알 2024. 5. 20.
반응형

개념 정리에 앞서 개인적으로 부족한 개념에 대해서 정리한 부분이라 개념 중 빠진 부분이 있을 수 있습니다!! 2021년도 부터 기출문제를 풀며 정리하였으며 도움이 되셨으면 좋겠습니다ㅎㅎ

 

[ C언어 ]

* C언어 문자열 처리 함수

  - strlen(s) : 문자열 길이

  - strcpy(s1, s2) : 

  - strcmp(s1, s2) : 

     (compare 비교하다 적용하여 암기)

  - strrev(s) : 

     (reverse 뒤집다, 변환하다로 암기)

 - strcat : 문자열 연결 함수

 

* C언어 연산

  - a && b : AND연산(논리 값 모두 참)

  - a || b : OR연산(논리 값 좌우 중 1개만 참이여도 참)

  - !c : NOT 연산(값 존재유무 확인 참)

  - a&b : 비트연산자 

  - ** : 거듭제곱

  - != : 부등(피연산자가 서로 다를 시 true)

       (ex) !2 : 2는 0이외의 수 이므로 참이지만 앞에 !가 붙어 거짓, 즉 0)

  - << n : n비트 만큼 왼쪽으로 이동하라는 뜻

     ex) 1<<1=2 

            1을 2진수로 변환하면 1(00000001)

            1을 <<1 해주면 01(00000010)

             10을 10진수로 변환하면 2가 된다

         > 따라서 2<=2 는 1 (true)

   - a | b

    ex) 0000100 4

          0000111 7

      : or 연산자는 둘 중 하나만 1이어도 1로 나타내므로 000000111 = 7

 

  ** C언어 연산에서는 0이 아닌 모든 값은 1(TRUE)로 본다.

 

* C언어 포인터

  arr[i] == *(arr+i)  아래 식 모두 다 같은 표현


 

[ 파이썬 ]

  : 귀도 반 로섬(Guido van Rossum)이 발표한 언어로 인터프리터 방식이자 객체지향적이며 배우기 쉽고 이식성이좋은 것이 특징인 스크립트 언어

 

 * 조건문: IF / ELIF /  ELSE

 

* 데이터 타입

    - 숫자형(Numeric)

       :  정수(Integer) / 소수(Float) / 복소수(complex) 

    - 블린(Boolean)

    - 시퀀스(Sequence)

       : 문자열(str) / 리스트(list) (순서 존재, 가변형) / 튜플(tuple) (순서 존재, 리스트와 비슷하지만 불변형) ex) ()

   - 집합(Set) (순서 없고, 중복X) 

   - 딕셔너리(Dictionary) (순서없고, key - value쌍) ex) ({'a' :1, 'b':2})

 

* 파이썬은 print() 하면 자동을 개행된다.

 4. range함수

    - range(A) : 0부터 A-1까지의 정수 범위를 반환한다.

    - ranger(A, B) : A부터 B-1까지의 정수 범위를 반환한다.

    - ranger(A, B, C) : A부터 B-1까지 C만큼의 간격으로 정수를 반환한다.


 

[ JAVA ]

* JAVA 연산자

 - 연산자 우선 순위

  -- > %  > & > =


 

[ 개념정리 ]

* 모듈화(Modularity)

 1. 응집도(Cohesion)

   : 모듈이 독립적인 기능으로 정의되어있는 정도 (독집적 기능 수행정도)

  - (강) 기능적 > 순차적 > 교환적 > 절차적 > 시간적 > 논리적 > 우연적 (약)

 

 - 순차적 응집도 (Sequential Cohension) : 모듈 내 구성 요소들이 이전의 명령어로 부터 나온 출력결과를 그 다음 명령어의 입력자료로 사용(ex) 총점과 평균의 관계)

 - 시간적 응집도 (Temporal Cohension) : 모듈 내 구성요소들이 서로 다른 기능을 같은 시간때에 함께 실행하는 경우

 - 논리적 응집도 (Logical Cohension) : 모듈 내 구성 요소들이 같은 범주에 속하는 기능끼리 묶인 경우 (ex) 새글, 불러오기)

 - 우연적 응집도 (Coincidental Cohension) : 모듈 내 구성 요소들이 뚜렷한 관계 없이 묶인 경우

 

 2. 결합도(Coupling)

    : 어떤 모듈이 다른 모듈에 의존하는 정도 (모듈과 모듈 사이의 상호의존 또는 연관 정도)

  (강) 내용(content) > 공통(common) > 외부(external) > 제어(contorl) > 스탬프(stamp) > 자료(data) (약)

 

 ** 좋은 소프트웨어일수록 결합도는 낮고, 응집도는 높다.

 

 

* 자동반복 요청방식(APQ : Automatic Repeat reQuest)

  - Stop-and-wait APQ (정지 대기 APQ) : 송신 측이 하나의 블록을 전송한 후 수신 측에서 에러의 발생을 점검한 다음 에러 발생 유무 신호를 보내올 때 까지 기다리는 방식

  - Go-back-N APQ : 여러 블록을 연속적으로 전송하고, 수신측에서 부정 응답(NAK)을 보내오면 오류가 발생한 블록부터 모두 재전송

  - Selective-Repeat APQ (선택적 재전송 APQ ) : 여러 블록을 연속적으로 전송 후 수신측에서 부정 응답(NAK)을 보내오면 오류가 발생한 블록만을 재전송

 - Adaptive APQ (적응적 APQ) : 전송 효율을 최대로 하기 위해서 데이터 블록의 길이를 채널에 따라 동적으로 변경 

 

* IP 프로토콜

 1. IP 프로토콜 특징

    - 체크섬(Checksum) 기능으로 헤더 체크섬(Header Checksum) 만 제공

    - 패킷을 분할, 병합하는 기능을 수행하기도 한다.

    - 비연결형 서비스 제공

    - Best Effort 원칙에 따른 전송 기능 제공

 

 2. IP 프로토콜에서 사용하는 필드

  - Header Lentgh : IP 프로토콜 헤더 길이를 32비트 워드 단위로 표시

  - Packet Length: IP 헤더를 제외한 패킷 전체의 길이(최대 크기: 2^16 - 1)

  - Tiem To Live: 송신 호스트가 패킷을 전송하기 전 네트워크에서 생존할 수 있는 시간 지정

  - Version Number : IP 프로토콜 버전번호

 

* RIP(Routing Information Protocol) 라우팅 프로토콜

 - 최단 경로 탐색에는 Bellman-Ford 알고리즘 사용 

 - 라우팅 프로토콜을 IGP와 EGP로 분류 했을 때 IGP에 해당한다.

    IGP(Interior Gateway Protocol, 내부 게이트웨이 프로토콜) : 학내망 내부에서 라우팅 하는 것

    EFP(Exterior Gateway Protocol, 외부 게이트웨이 프로토콜) : 학내망과 다른 학내망의 라우팅에 사용

 - 최적의 경로를 산출하기 위한 정보로서 홉(거리 값)만을 고려하므로, 최적의 경로가 아닌 경우가 많이 발생함

 - 소규모 네트워크 환경에 적합

 - 최대 홉 카운트를 15홉 이하로 한정

 

* HRN 스케쥴링 방식(= 비선점 스케줄링)

 - 실행기간이 긴 프로세스에 불리한 SJF를 보완하기 위해 대기시간 및 서비스 시간을 이용

    긴 작업과 짧은 작업 간의 지나친 불평등을 해소할 수 있다.

    우선순위를 계산 숫자가 높은것 부터 낮은순으로 부여

    (대기시간 + 서비스시간) / 서비스 시간 = 우선순위) 값이 클수록 우선순위가 높다.

 

[ UNIX, LINUX ]

 1) UNIX

     1. UNIX 특징

        - 주로 서버용 컴퓨터에서 사용됨

        - Time Sharing System을 위해 설계된 대화식 운영체제

        - C언어로 작성되어 이식성이 높고 장치간 호환성이 높다

        - Multi-User, Multi-Tasing모두 지원

        - 트리 구조의 파일 시스템

     2. 쉘(shell)의 주요 기능

        : Window의 command.com(시작-실행-cmd)이 하는 역할처럼 login 이후부터 사용자가 입력하는 명령어를 기계어로 변역하여 전달하는 역할을 하는 명령어 해석기

        - 사용자 명령을 해석하고 커널로 전달하는 기능을 제공

        - 반복적인 명령 프로그램을 만드는 프로그래밍 기능을 제공

        - 초기화 파일을 이용해 사용자 환경을 설정하는 기능을 제공

    

   2) LINUX

        1. 커널

           - 프로세스, 메모리 관리 기능

   

 

* LRU(Least Recently Used) 페이지 교체 알고리즘

 - 가장 오랫동안 사용되지 않은 페이지 제거

 

* TCP, UDP

1. TCP

 - TCP 헤더에 있는 윈도우 사이즈는 16비트 2^16 = 65535byte = 64KB

 - 순서번호는 전달하는 바이트마다 번호가 부여된다.

 - 수신번호학인은 상태편 호스트에서 받으려는 바이트의 번호를 정의한다.

 

2. UDP(User Datagram Protocal)

  - 비연결형 및 비신뢰성 전송 서비스 제공

  - 흐름 제어나 순서 제어가 없어 전송 속도가 빠르다

  - 수신된 데이터의 순서 재조정 기능을 지원하지 않는다

  - 복구 기능을 제공하지 않는다

 

 

* 스레드(thread)

 1. 사용자 수준에서 지원되는 스레드

   - 커널 모드로의 전환 없이 스레드 교환이 가능하므로 오버헤드가 줄어든다.

 

 2. 커널에서 지원되는 스레드

   - 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기할 필요가 없으므로 시스템 성능을 높일 수 있다.

   - 동시에 여러 스레드가 커널에 접근할 수 있으므로 여러 스레드가 시스템 호출을 동시에 사용할 수 있다.

   - 각 스레드를 개별적으로 관리할 수 있으므로 스레드의 독립적인 스케줄링이 가능


 

* IPv4 VS IPv6

1. IPv4

  - 32비트 주소 (8비트씩 4부분의 10진수로 표시)

  - 유니캐스트 /멀티캐스트 /브로드캐스트 사용

  - 헤더가 가변적

  - 클래스 별로 네트워크와 호스트 주소 길이가 다르다 (호스트 주소를 자동으로 설정)

 

2. IPv6

 - 128비트 주소(2^128) (16비트씩 8부분의 16진수로 표시)

 - 기존 IPv4의 주소 부족 문제를 해결하기 위해 개발

 - 인증성/ 기밀성/ 무결성 지원 (= 보안성 강화)

 - 유니캐스트/ 애니캐스트 / 멀티캐스트 사용

 - 헤더의 경우 40 octet의 고정된 길이를 가짐

 - 주소 자동설정(Auto Configuration) 기능을 통해 손쉽게 이용자의 단말을 네트워크에 접속시킬 수 있다.

 

* TCP/IP 계층구조 프로토콜 

 - ARP(Address Resolution Protocol) : 호스트 IP주소를 호스트와 연결된 네트워크 접속 장치의 물리적 주소로 바꾸는 역할 프로토콜

 - PPP(Point-to-Point Protocol) : 점대점 데이터링크를 통해 3계층 프로토콜들을 캡슐화 시켜서 전송하는 프로토콜

 - ICMP(Internet Control Message Protocol) : IP와 조합하여 통신 중에 발생하는 오류 처리와 전송 경로 변경을 위한 제어 메시지(오류 정보 전송)를 관리하는 프로토콜

 

* OSI 7 계층

1) 1계층 - 물리계층(Physical Layer) : Coax, Fiber, Wireless

2) 2계층 - 데이터링크 계층(DataLink Layer) : Ethernet, SLIP, PPP, FDDI, HDLC 

3) 3계층 - 네트워크 계층(Network Layer) : IP, IPSec, ICMP, IGMP

4) 4계층 - 전송 계층(Transport Layer) : TCP, UDP, ECN, SCTP, DCCP

5) 5계층 - 세션 계층(Session Layer) : VARIOUS API;S, SOCKETS

6) 6계층 - 표현 계층(Presentation Layer) : SLL, FTP, IMAP, SSH

7) 7계층 - 응용 계층(Apllication Layer) : HTTP, FTP, IRC, SSH, DNS

    

* 상호배제 기법

 1. 데커의 알고리즘(Dekker Algorithm)

    - 프로세스가 두게일 때 상호 배제를 보장하는 최초의 알고리즘

    - flag와 turn 변수를 사용하여 조정

 2. 램퍼트 알고리즘(Lamport Algorithm)

   - 프로세스에게 고유번호를 부여하고, 번호를 기준으로 우선순위를 정하여 우선순위가 높은 프로세스가 먼저 임계 구역에 진입하도록 구현

    - 프로세스 n개의 상호 배제 문제를 해결한 알고리즘 

 3. 피터슨 알고리즘(Peterson Algorithm)

   - 프로세스가 두개일 때 상호 배제를 보장, 데커의 알고리즘과 유사하지만 상대방 진입 기회를 양보한다는 것이 있고 간단하게 구현

 4. 세마포어(Semaphore)

   - 공유된 자원의 데이터 혹은 임계영역 등에 따라 여러 프로세스 도는 쓰레드가 접근하는 것을 막아줌

   - 임꼐 구역의 접근을 제어

 

 

* 기억장치 배치 전략

 - First Fit : 들어갈 수 있는 첫 번째 공간에 넣음

 - Best Fit : 내부 단편화(자투리)가 가장 적게 남는 곡간에 넣음

 - Worst Fit : 가장 큰 공간에 넣음 

 

* Build 도구

 : 작성된 Souce Code를 실제 기기에서 실행 할 수 있는 소프트웨어로 변경하기 위한 과정

1. Ant : 아파치 재단에서 개발한 공식적인 빌드 도구

2. Maven : 아파치 재단에서 개발, Ant 대안으로 개발되었음

3. Gradle : Ant, Maven의 보안으로 개발된 빌드 도구

 

* SSTF스케쥴링

 - SSTF(Shortest seek time first) 

   : 현재 헤드위치에서 가장 가까운것 부터

 

- CSMA/CD(Collision Detection) : "충돌 감지" , 이더넷에서 각 단말이 전송 공유 매체에 규칙있게 접근하기 위한 매체 엑세스 제어 방식

- CSMA/CA (Collision Avoidance) : "충돌 방지" , 무선 랜에서 데이터 전송 시 매체가 비어있음을 확인한 후 충돌을 회피하기 위해 임의 시간을 기다린 후 데이터를 전송하는 방식

 

* 은행원 알고리즘(Banker's Alogorithm)

  - Detection(탐지) : 교착상태 발생을 허용하고 발생시 원인을 규명하여 해결 (ex) 지원할당 그래프)

  - Avoidance(회피) : 교착상태 가능성을 배제하지 않고 적절하게 피해나가는 방법 (ex) 은행원 알고리즘)

  - Recovery(복구) : 교착상태 발견 후 현황대기를 배제시키거나 자원을 중단하는 메모리 할당 기법 (ex) 선점, 프로세스 중지)

  - Prevention(예방) : 교착상태의 필요조건을 부정함으로써 교착상태가 발생하지 않도록 미리 예방하는 방법

반응형