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 커널이 하는 일이다.