[4과목 : 프로그래밍 언어 활용]
* IP주소체계
1) IPv4
- 패킷 헤더는 20~60Byte의 가변된 길이
- 주소길이 32bit (2^32개) / 8비트씩 4부분의 10진수로 표시
- 클래스별로 네트워크와 호스트 주소 길이가 다름
- 유니캐스트 / 멀티캐스트 / 브로드캐스트
- 품질 보장 곤란
- IPSec, SSL, SHTTP를 별도로 설치하여 보안
2) IPv6
- 패킷 헤더는 40Byte의 고정된 길이
- 주소길이 128bit (2^128개) / 16비트씩 8부분의 16진수로 표시
- 유니캐스트 / 멀티캐스트 / 애니캐스트
- 확장 기능을 통해 보안기능 제공
* IP주소 변환 방법 (3가지라서 사지선다로 딱이야. 영어로도 알아두)
- 듀얼스택
- 터널링
- 변환
* IPv4 주소체계(3가지)
- 유니캐스트 : 1대1 통신
- 멀티캐스트 : 1대다 통신
- 브로드캐스트 : 방송용
* IPv6 주소체계(3가지)
- 유니캐스트 : 1대1 통신
- 멀티캐스트 : 1대다 통신
- 애니캐스트 : 인접에 있는 것들에 전달
* OSI 7계층
7. 응용 계층 Application - 예) HTTP
6. 표현 계층 Presentation
5. 세션 계층 Session
4. 전송 계층 Transport - 단말기 간에 / 신뢰성 있는 정보 전달
3. 네트워크 계층 Network - 라우터 / 전달만!
2. 데이터링크 계층 Data Link - 인접한 노드들 간에 / 신뢰성 있는 정보 전달 / 브릿지, 스위치
1. 물리 계층 Physical - 허브,리피터
* IP 프로토콜
- ARP : IP주소 >>> MAC주소로 변환
- RARP : MAC >>> IP주소로 변환
- ICMP(Internet Control Message Protocol)
: IP 패킷 전송 과정에서 발생하는 오류를 감지하고 오류 정보를 전달하는 역할
* 프로토콜의 3요소 (4지선다, 실기에도 나옴)
: 구문 / 타이밍 / 의미
*응집도(우리 놀던 시절에 통통한 순대가 기가막혔는데)
- 순차적 응집도, 절차적 응집도 내용 구분하기
* 동기화 기법
- 세마포어 Semaphore : 임계구역의 접근을 제어하는 상호배제 기법
각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법
p와 v라는 2개의 연산에 의해서 동기화를 유지시키고, 상호 배제의 원리를 보장.
p는 임계구역에 들어가기 전에 수행되고, v는 임계구역에서 나올 때 수행
- 모니터 Monitor
: 프로그래밍 언어 수준에서 동시성을 제어하여 타이밍 오류를 해결한 상호 배제 기
* 배치 전략
1. First Fit : 첫번째 공간에 집어넣기
2. Best Fit : 내부단편화가 가장 적게 생기도록
3. Worst Fit : 가장 큰 공간에 집어넣기
- 내부단편화 : 내부에 생기는 자투리 공간
- 외부단편화 : 프로그램이 들어가지 못하고 남아도는 공간 (해당 메모리의 크기!!!)
>>> Q. 빈 기억공간 크기가 20KB, 16KB, 8KB, 40KB일 때 17KB의 프로그램을 적재할 경우
>> First Fit 일 때, 20KB에 넣기
>> Best Fit 일 때, 20KB에 넣기 (20KB는 3KB의 내부단편화 발생, 17KB는 23KB의 내부단편화 발생)
>> Worst Fit 일 때, 40KB에 넣기
>>> Q. 외부단편화 또는 내부단편화 크기 구하기
>> 20KB에 21KB 넣으려 할 때, 외부단편화 21KB 발생
>> 15KB에 12KB 넣으면, 내부단편화 3KB 발생
>> 30KB에 10KB 넣으면, 내부단편화 20KB 발생
* 개발 환경 구성을 위한 빌드(Build) 도구
: Ant앤트, Maven메이븐, Gradle그래들...
* 유닉스/리눅스
- 쉘 shell : 사용자와 interface하는 명령어 해석기
- 커널 : 쉘에서 전달받음 / 실행을 위한 프로세스와 메모리 관리
프로그래밍언어_C언어
Q1. 2차원 배열에서 포인터를 이용한 메모리 접근 방식
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
int arr[2][3] = { 1, 2, 3, 4, 5, 6 };
int (*p)[3] = NULL;
p = arr;
printf("%d, ", *(p[0] + 1) + *(p[1] + 2)); // 8
printf("%d", *(*(p + 1) + 0) + *(*(p + 1) + 1)); // 9
return 0;
}
>> 풀이
int (*p)[3] = NULL;
= 뒤의 인자 값대로 배열을 재구성 하겠다!
= 배열 포인터 p를 (2차원) 3열로 재구성하라
p = 100
p[0] = 100
p[1] = 103
이때, *(p+1)은 p[0]의 다음 행의 대표 주소인 p[1]을 가리킴!
*(p[0] + 1) + *(p[1] + 2) = *(p[0][1]) + *(p[1][2]) = 2 + 6 = 8
*(*(p + 1) + 0) + *(*(p + 1) + 1) = *(p[1][0] + *(p[1][1]) = 4 + 5 = 9
프로그래밍언어_JAVA
* JAVA 예외(exception)
- 문법오류는 예외 아님. 컴파일 오류.
프로그래밍언어_Python
* 파이썬을 실행하면 자동으로 개행 발생
a = ["대", "한", "민", "국"]
for i in a:
print(i)
// 대
// 한
// 민
// 국
'👩🏻💻TIL (Today I Learn) > 정처기' 카테고리의 다른 글
정보처리기사 필기 벼락치기 정리 (0) | 2025.02.12 |
---|---|
정처기 22년 3월 5일 기출 오답정리_05 (0) | 2025.02.07 |
정처기 22년 3월 5일 기출 오답정리_03 (0) | 2025.02.05 |
정처기 22년 3월 5일 기출 오답정리_02 (0) | 2025.02.04 |
정처기 22년 3월 5일 기출 오답정리_01 (1) | 2025.02.03 |