[정보처리기사 필기] 4과목 : 프로그래밍 언어 활용 - 기출기반 개념
1. 동기화 기법(세라포어, 모니터)
2. C언어 대표 라이브러리
3. C언어의 참, 거짓
4. else if
5. 라우팅 프로토콜
6. ARQ
7. IP 주소 구하기
8. 프로세스 상태 전이
9. 가상기억장치
10. 운영체제 프로그램
11. 무선랜
12. 환경변수
13. paging(페이징)과 세그먼트
14. 소프트웨어 보안 취약점
그외) 단순 문답
1. 동기화 기법
세라포어 (Semaphore)
- 각 프로세스에 제어 신호를 전달하여 순서대로 작업을 수행하도록 하는 기법
- P와 V라는 2개의 연산에 의해서 동기화를 유지시키고, 상호배제의 원리를 보장
- P는 임계구역에 들어가기 전에 수행되고, V는 임계 구역에서 나올떄 수행
- 종류 : 계수 세마포어, 이진 세마포어
모니터 (Monitor)
- 프로그래밍 언어 수준에서 동시성을 제어하여 타이밍 오류를 해결한 상호 배제 기법
69. 다음과 같은 형태로 임계 구역의 접근을 제어하는 상호배제 기법은? P(S) : while A <= 0 do skip; S: = S -1; V(S) : S : = S + 1; (1) Dekker Algorithm (2) Lamport Algorithm (3) Peterson Algorithm (4) Semaphore (2022년 1회 정보처리기사 필기 기출) |
2. C언어 대표 표준 라이브러리
헤더 파일 | 기능 |
stdio.h
|
•데이터의 입·출력에 사용되는 기능들을 제공함
•주요 함수 : printf, scanf, fprintf, fscanf, fclose, fopen 등 |
math.h
|
•수학 함수들을 제공함
•주요 함수 : sqrt, pow, abs 등 |
string.h
|
•문자열 처리에 사용되는 기능들을 제공함
•주요 함수 : strlen, strcpy, strcmp 등 |
stdlib.h
|
•자료형 변환, 난수 발생, 메모리 할당에 사용되는 기 능들을 제공함
•주요 함수 : atoi, atof, srand, rand, malloc, free 등 |
time.h
|
•시간 처리에 사용되는 기능들을 제공함
•주요 함수 : time, clock 등 |
3. C언어의 참, 거짓
참 = 1
거짓 = 0 이며,
데이터가 -1 이여도 데이터가 있다면 그건 참을 뜻함.
즉, 0을 제외한 모든 값은 "참"
관련 기출)
62. 다음 C언어 프로그램이 실행 되었을때, 실행 결과는? #inclue <studio.h> int main (int argc, char *argv[]){ int a =5, b = 3, c = 12; int t1, t2, t3; t1 = a && b; t2 = a || b; t3 = !c; printf (%d, t1 + t2 + t3); return 0; 1) 0 2) 2 3) 5 4) 14 (2022년 2회 정보처리기사 필기 기출) 해설) t1 = a&& b 는 대입하면, t1 = 5 && 3, 5와 3이라는 데이터가 있기떄문에 둘 다 참임으로 t1 = 참 즉, 1 t2 = a || b 는 대입하면, t1 = 5 || 3 , 5와 3이라는 데이터가 있기떄문에 둘 다 참임으로 t2 = 참 즉, 1 t3 = !c 는 대입하면, t1 = ! 12 , 12라는 데이터가 있기떄문에 참이고 ! 는 반전을 의미하므로 t3 = 거짓 즉, 0 |
4. else if / elif
C언어, JAVA
if
else if
else
파이썬
if
elif
else
5. 라우팅 프로토콜
라우터란?
: 최적의 경로로 최대한 빨리보내는 역할 수행.
RIP
: 인접한 라우터들이 있을때, 일정한 시간마다 변화가 없어도 라우팅 정보를 공유 - 홉스를 기반
OSFP
: 변경사항이 있을때 모든 라우터들에게 정보 공유
링크들의 상태 감시 가능.
6. ARQ
ARQ란?
: 데이터를 흘리다가 오류가 났을때, 그 오류들을 자동으로 반복해서 가져오는 방식
ARQ의 종류
* Stop - And - Wait ARQ : 지그재그형식 (하나를 보내고 검사후 오류가 없으면 또 다시 보내고 반복)
* Go- back -N ARQ : 검사없이 쭉 보내다가 중간에 오류가 발생하면 오류가 있던 지점부터 다시 전달
* Selective Repeat ARQ : 쭉 보내다가 발견된 오류부분만 다시 전송
* Adaptive ARQ (적응형)
7. 클래스별 IP 주소 구하기
Class별 시작 주소 (8Byte)
A 클래스 : 0 = 0 ~
B 클래스 : 1 0 = 128 ~
C 클래스 : 1 1 0 = 192 ~
70. C class에 속하는 IP address는? 1) 200.168.30.1 2) 10.3.2.1 3) 225.2.4.1 4) 172.16.98.3 (2021년 3회 정보처리기사 필기 기출) |
해설)
c 클래스 → 1 1 0 8byte로 8칸을 만들면 1 1 0 0 0 0 0 0 ~ 1 1 0 1 1 1 1 1
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
128 + 64 = 192
128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 |
32를 제외한 나머지 합 = 223
답 ) 시작이 192 ~223으로 시작하는 것.
09. 192.168.1.0/24 네트워크를 FLSM방식을 이용하여 4개의 Subnet으로 나누고, IP Subnet-zero를 적용했다. 이때, Subnetting된 네트워크 중 4번째 네트워크의 4번째 사용가능한 IP는 무엇인가? 1) 192. 168. 1. 192 2) 192. 168. 1. 195 3) 192. 168. 1. 196 4) 192. 168. 1. 198 (2021년 3회 정보처리기사 필기 기출) |
해설)
4개의 Subnet 4개로 나눠라 (2의 몇승인지를 먼저 알아야함.)→ 4 = 2의 2승
ex) 10개의 회사로 나눠라 → 2의3승 = 8 , 2의 "4승" =16 이므로 10개는 "4"개에 해당 0 0 0 0 0 0 0 0 8개가 있을때 앞에서 4개를 짜르고
4개가 네트워크 ID로 사용!
4개의 회사
0 0
0 1
1 0
1 1
중의 4번째 회사임으로 " 1 1 " 그 중 가장 작은 단위는 뒤를 0으로 다 채워서 8칸 만듬 / 가장 큰 숫자는 뒤에 다 1로 채움
1 1 | 0 0 0 0 0 0
더하면 192 ~ 255 사용가능 (브로드캐스트 아이디 = 255)
*4번째 사용가능한 주소 = 맨 첫번째의 192를 제외 ,그 뒤부터 192 , 193, 194, 195, 196
정답 ) 192. 168. 1. 196
풀이해설 참고) 흥달쌤 기출해설 강의. 2021년 3회 - 프로그래밍 언어 활용 (23:00분부터)
https://youtu.be/7IeC6v-7rVs?si=CTZ6qpNaoDObxGdn
8. 프로세스 상태전이
9. 가상기억장치
가상기억 장치란?
: 프로그램을 하드디스크에 깔고, 프로그램을 실행했을때 램(프로세스)에 메모리가 올라오게 되는데,
그때, 램의 메모리에 한계가 있기때문에 하드디스크의 메모리를 일부 사용하는데 그걸 가상 기억 장치라고 한다.
문제점 해결 방안 종류 (*종류 정도만 알아두기, 상세내용 X)
* 구역성 관리 (Locality)
: 프로그램이 어느 한 특정 부분만 집중적으로 참조하기 때문에, 페이지 성능이 좋아짐.
- 시간 구역성, 공간 구역성, 순차 구역성
* 프리페이징 (Prepaging)
: 과도한 페이지 부재를 줄이기 위해 모든 페이지를 한 번에 페이지 프레임에 적재하는 기법
*워킹세트 (Working Set)
: (하나의 프로세스에 )자주 참조하는 페이지를 모아놓은 기법
-스레싱(Thrasing) 방지
* 페이지 프레임 조정 (Page Fault Frenquency)
: 현재 페이지 부재와 바로 전 페이지 부재 사이를 관찰해, 지금까지보다 페이지 부재 개수가 많으면 호출되지 않았던 페이지들을 제거
10. 운영 체제 프로그램
제어 프로그램
- 감시프로그램
- 작업관리 프로그램
- 데이터 관리 프로그램
처리프로그램
- 서비스 프로그램
- 문제 프로그램
- 언어번역 프로그램
11. 무선랜
유선랜
CSMA/CD 방식 사용 ->충돌 감지
무선랜
CSMA/CA 방식 사용 -> 충돌 회피
※ LAN의 표준 802.X 시리즈
표준 | 설명 |
802.3 | * CSMA/ CD에 관한 규약 // 유선 - 신호를 보내서 충돌 감시 |
802.4 | * 토큰 버스에 관한 규약 > 충돌없음 (토큰을 가진 컴퓨터만 데이터를 보낼수 있기 때문에) |
802.5 | * 토큰 링에 관한 규약 > 충돌없음 (토큰을 가진 컴퓨터만 데이터를 보낼수 있기 때문에) |
802.11 | * 무선 LAN에 관한 규약 // CSMA/CA - |
802.15 | *블루투스에 관환 규약 |
12. 환경변수
Unix Shell 환경변수 출력 명령어
- printenv
- env
- setenv
- export : 환경변수를 볼 수 있고, 수정할 수 있는 명령어
Window
- set
13. paging(페이징)과 세그먼트
페이징 (Paging)
: 메모리와 가상메모리와 똑같은 크기로 자름. 고정된 길이로 자름 →내부에 남는 공간이 생김
(내부 단편화 O)
세그멘테이션
: 내부 단편화 x, 길이만큼만 딱 잘라서 넣음.
But 들어가지 못하는 외부 단편화 O
세그먼트 맵 테이블이란?
: A, B, C라는 영역이 나뉘어서 잘려있을때, 메모리 상에 A, B,C 영역이 들어가고,
A,B,C가 실제로 메모리 어느 위치에 들어가있는지를 나타내주는 테이블
관련기출 )
77. 다음과 같은 세그먼트 테이블을 가지는 시스템에서 논리주소 (2, 176)에 대한 물리주소는?
세그먼트 번호 | 시작주소 | 길이(바이트) |
0 | 670 | 248 |
1 | 1752 | 422 |
2 | 222 | 198 |
3 | 996 | 604 |
1) 398
2) 400
3) 1928
4) 1930
(2020 4회 정보처리기사 필기 기출)
해설)
논리주소가 (2, 176)임으로
세그먼트 번호가 "2"에서 시작주소가 222이고, 176번째에 위치에 있음으로
222 + 176 = 398
14. 소프트웨어 보안 취약점
메모리
- 버퍼 오버플로 : 메모리 오류가 발생하여 잘못된 동작을 하는 취약점 (넘치게 하는 것)
- 허상 포인터 : 유효한 객체를 가리키고 있지 않은 포인터로 인한 취약점
- Null Pointer 역참조 : Null로 설정된 변수의 주소값 참조시 발생하는 취약점
입력 확인 오류 (입력된 값이 올바른지 체크 하지않은 오류)
- 포캣 스트링 버그 : 검사되지 않은 사용자 입력
- SQL 삽입 : SQL문이 실행 되도록 입력값 설정
- 코드 삽입 : 유효하지 않은 데이터 실행
- 웹 사이트간 스트립팅 : 부정한 HTML이나 javascrpit 삽입 , XSS
- 이메일 삽입
- 디렉토리 접근 공격
- HTTP 헤더 인젝션
- HTTP 응답 스플리팅
경쟁 상태
- Time of check to time of use 버그 : 동기화 오류
- 심볼릭 링크 경쟁
권한 혼동 버그
- 웹에서 사이트간 요청 위조
- 클릭 재킹
- FTP 바운스 공격
단순 문답
77. 사용자 수준에서 지원되는 스레드(thread)가 커널에서 지원되는 스레드에 비해 가지는 장점으로 옳은 것은? 1) 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기할 필요가 없으므로 시스템 성능을 높일 수 있다. 2) 동시에 여러 스레드가 커널에 접근 할 수 있으므로 여러 스레드가 시스템 호출을 동시에 사용할 수 있다. 3) 각 스레드를 개별적으로 관리 할 수 있으므로 스레드의 독립적인 스케줄링이 가능하다. 4) 커널모드로의 전환 없이 스레드 교환이 가능하므로 오버헤드가 줄어든다. (2022년 2회 정보처리기사 필기 기출) |
71. 리눅스 Bash 쉘(shell)에서 export와 관련한 설명으로 틀린 것은? 1) 변수를 출력하고자 할 때는 export를 사용해야한다. : echo를 사용함. 2) export가 매개변수 없이 쓰일 경우 현재 설정된 환경 변수들이 출력된다. 3) 사용자가 생성하는 변수는 export 명령어로 표시하지 않는 한 현재 쉘에 구현한다. 4) 변수를 export 시키면 전역(Global) 변수처럼 되어 끝까지 기억된다. (2021년 2회 정보처리기사 필기 기출) |