일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 알고리즘
- where
- 웹개발
- 클래스
- 정보처리기사
- 백준
- 예외처리
- 개발자
- 정보처리기사필기요약
- 입출력
- SQL
- mybatis
- 프로그래머스 sql 고득점 kit
- 프로그래머스 SQL
- 백엔드
- 메서드
- html
- MySQL
- 데이터 조회
- Linux
- BufferedReader
- Git
- select문
- 프론트엔드
- 스프링
- scanner
- StringBuilder
- select
- DML
- 형변환
- 자바스크립트
- String클래스
- Java
- sql문
- 자바
- order by
- 리눅스
- JavaScript
- github
- 프로그래밍
- Today
- Total
ToBe끝판왕
[ 4과목 ] 프로그래밍 언어 활용 본문
< 참고사항 >
※ 정보처리기사 개정된 후, 기출문제들 다 풀고 3회 정도 반복할 것!
※ 이해 안 되는 문제들은 유튜브를 통해서 이해할 것! ( 전문강사들이 문제풀이 영상 많음 )
※ 게시물은 자주 나오는 필기 기출 내용 위주이지만 스스로 다른 개념들도 확인해볼 것 !
개발환경 구축
1) 개요
• 응용 소프트웨어 개발을 위해 개발 프로젝트를 이해하고, 하드웨어 및 소프트웨어 장비를 구축하는 것
• 하드웨어와 소프트웨어의 성능 / 편의성 / 라이선스 등의 비즈니스 환경에 적합한 제품들을 최종적으로 결정하여 구축
2) 하드웨어 환경
• 사용자와의 인터페이스 역할을 하는 클라이언트( Client )
ex) PC / 스마트폰
• 클라이언트( Client )와 통신하여 서비스를 제공하는 서버( Server )
ex) 웹 서버 / 웹 애플리케이션 서버( WAS ) / 데이터베이스 서버 / 파일 서버 등
※
• 웹 서버( Web Server )
클라이언트로부터 직접 요청을 받아 처리하는 서버, 저용량의 정적 콘텐츠를 제공
• 웹 애플리케이션 서버( WAS : Web Application Server )
- 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어( =소프트웨어 )
- 데이터 접근 / 세션 관리 / 트랜잭션 관리 등을 위한 라이브러리 제공
• 데이터베이스 서버( Data Server )
데이터베이스와 이를 관리하는 DBMS를 운영하는 서버
• 파일서버( File Server )
데이터베이스에 저장하기에는 비효율적이거나, 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버
3) 소프트웨어 환경
클라이언트와 서버 운영을 위한 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성된다.
• 시스템 소프트웨어 : 운영체제( OS ) / 웹 서버 및 WAS 운용을 위한 서버 / DBMS
• 개발 소프트웨어 : 요구사항 관리 도구 / 설계 & 모델링 도구 / 빌드 도구 / 구현 도구 / 테스트 도구 / 형상관리 도구
※
• 요구사항 관리 도구
요구사항의 수집과 분석 / 추적 등을 편리하게 도와주는 소프트웨어
• 설계 & 모델링 도구
UML을 지원하며, 개발의 전 과정에서 설계 및 모델링을 도와주는 소프트웨어
• 빌드 도구
구현 도구를 통해 작성된 소스의 빌드 및 배포, 라이브러리 관리를 지원하는 소프트웨어
• 구현 도구
개발 언어를 통해 애플리케이션의 실제 구현을 지원하는 소프트웨어
• 테스트 도구
모듈들이 요구사항에 적합하게 구현됐는지 테스트하는 소프트웨어
서버 개발
1) 개요
• 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹 애플리케이션 서버에 탑재하는 것을 의미
• 서버 개발에 사용되는 프로그래밍 언어
ex) JAVA / JavaScript / Python / PHP / Ruby 등
2) 서버 개발 프레임워크
• 대부분 MVC( Model, View, Controller ) 패턴을 기반으로 개발
※ 프레임워크( Framework ) : ‘뼈대’, ‘골조’를 의미, 소프트웨어에서 특정 기능을 수행하기 위해
필요한 클래스나 인터페이스 등을 모아둔 집합체
프레임워크 | 특징 |
Spring | JAVA 기반으로 만들어진 프레임워크 전자정부 표준 프레임워크의 기반기술로 사용 |
Node.js | JavaScript 기반으로 만들어진 프레임워크 비동기 입/출력 처리와 이벤트 위주의 높은 처리 성능 실시간으로 입출력이 빈번한 애플리케이션에 적합 |
Django | Python 기반으로 만들어진 프레임워크 컴포넌트의 재사용과 플러그인화를 강조하여 신속한 개발이 가능 토록 지원 |
Codeigniter | PHP 기반으로 만들어진 프레임워크 인터페이스가 간편하며 서버 자원을 적게 사용 |
Ruby on Rails | Ruby 기반으로 만들어진 프레임워크 테스트를 위한 웹 서버를 지원, 데이터베이스 작업 단순화, 자동화 개발코드의 길이가 짧아 신속한 개발 가능 |
※ 프레임워크의 구성요소
개발환경 / 실행환경 / 운영환경 / 관리 환경
※ 프레임워크의 특징
모듈화 / 재사용성 / 확장성 / 제어의 역 흐름
3) 서버 프로그램 구현( 효과적 모듈 설계 )
• 응용 소프트웨어와 동일하게 모듈 및 공통 모듈을 개발 후, 모듈들을 통합하는 방식으로 구현/ 유지보수가 용이해야 한다.
• 모듈의 독립성을 높이려면, 모듈의 결합도( Coupling )를 약하게 하고, 응집도( Cohesion )을 강하게 하며
모듈의 크기를 작게 만들어야 한다.
• 복잡도와 중복성을 줄이고 일관성을 유지해야 한다.
• 공통 모듈은 여러 프로그램에서 재사용( Reuse )할 수 있는 모듈을 의미한다.
=> 함수/ 객체 재사용 , 컴포넌트 재사용, 애플리케이션 재사용
※ 재사용 프로그래밍 기법
• 객체지향 프로그래밍
• 제네릭 프로그래밍
• 자동 프로그래밍
• 메타 프로그래밍
API( Application Programming Interface )
• 응용 프로그램 개발 시, 운영체제나 프로그래밍 언어 등에 있는 라이브러리를 이용할 수 있도록 함으로써
효율적인 소프트웨어 구현을 도와주는 인터페이스
• 개발에 필요한 여러 도구를 제공한다.
• 누구나 무료로 사용할 수 있게 공개된 API를 OpenAPI라고 한다.
ex) Windows API / 단일 유닉스 규격( SUS ) / JavaAPI / 웹 API 등
배치 프로그램
1) 배치 프로그램( Batch Program ) 개요
사용자와의 상호 작용 없이 여러 작업들을 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것
종류 | 설명 |
이벤트성 배치 | 특정 조건( 이벤트 )을 설정해두고 조건 충족될때만 수행 |
On-Demand 배치 | 사용자 요청 시 수행 |
정기 배치 | 일 / 주 / 월과 같이 정해진 기간에 정기 수행 |
2) 필수요소
필수 요소 | 설명 |
대용량 데이터 | 대량의 데이터를 가져오거나, 전달하거나, 계산 등의 처리가 가능해야 한다. |
자동화 | 심각한 오류를 발생하는 상황을 제외, 사용자의 개입없이 수행돼야 한다. |
견고성 | 잘못된 데이터나 데이터 중복등의 상황으로 중단되는 일 없이 수행돼야 한다. |
안전성/신뢰성 | 오류가 발생하면 오류의 발생 위치/ 시간 등을 추적할 수 있어야 한다. |
성능 | 다른 응요프로그램( 애플리케이션 )의 수행을 방해하지 않아야 하고 지정된 시간 내에 처리가 완료돼야 한다. |
변수( Variable )
1) 개요
컴퓨터가 명령을 처리하는 도중 발생하는 값을 저장하기 위한 공간으로, 변할 수 있는 값을 의미한다.
2) 변수명 작성 규칙
• 영문자 / 숫자 / _( Under bar ) 사용 가능
ex) a , A , a1 , _korea
• 첫 글자는 영문자( 대, 소문자 ) / _( Under bar )로 시작할 수 있지만, 숫자는 불가능
• 글자 수에 제한이 없고, 대/소문자 구분
• 공백이나 * , + , - , / 등의 특수문자 사용 불가능
• 예약어를 변수명으로 사용 불가능
ex) if , for , while
• 변수 선언 시 문장 끝에 반드시 세미콜론( ; )을 붙여야 한다.
※ 예시
변수명 | 설명 |
2abc( X ) -> abc2( O ) | 변수명의 첫 글자를 숫자로 시작해서 변수로 사용 불가능 |
sum*( X ) -> sum( O ) | 특수문자 ‘ *’ 를 변수명에 사용 불가능 |
for( X ) -> For( O ) | 예약어를 변수명으로 사용 불가능 |
ha p( X ) -> ha_p | 변수명 중간에 공백 사용 불가능 |
Kim, kim( O ) | C언어는 대/소문자를 구분하기 때문에 Kim 과 kim은 서로 다른 변수로 사용이 가능하다. |
3) 변수의 선언
선언 | 설명 |
자료형 변수명 = 값; | 자료형 : 변수에 저장될 자료의 형식 지정 변수명 : 사용자가 원하는 이름을 임의로 지정 ( 변수명 작성 규칙 준수 ) 값 : 변수를 선언하면서 초기화할 값을 지정 |
연산자
• 비트 연산자 ( C언어 )
연산자 | 의미 | 비고 |
& | and | 모든 비트가 1일때만 1 |
| | or | 모든 비트 중 한 비트라도 1이면 1 |
^ | xor | 모든 비트가 같으면 0, 하나라도 다르면 1 |
~ | not | 각 비트의 부정, 0이면 1, 1이면 0 |
※ C언어의 비트 논리 연산자 종류
: &, ^ , | , ~ , <<, >>
※ C언어의 연산자 우선순위
증감 연산자( ++, -- ) > 산술 연산자( * , / ) > 산술연산자( + , - ) > 시프트 연산자(
관계 연산자(> 비트 연산자( &^ | ) > 논리 연산자( &&, || ) > 조건연산자조건 연산자(?, : ) > 대입연산자대입 연산자( = += *= /= %= <<= >>= )
> 순서 연산자(, )
• 논리 연산자
두 개의 논리 값을 연산하여 참( true, 1 ) 또는 거짓( false, 0 )을 결과로 얻는 연산자
연산자 | 의미 | 비고 |
&& | and | 모두 참(1) 이면 참(1) |
|| | or | 하나라도 참(1) 이면 참(1) |
! | not | 부정 |
• 조건 연산자( 연산자 )
- 조건에 따라 서로 다른 수식 수행( if ~ else문 )
- '조건식’이 참( true, 1 )이면 ‘수식 1’ 수행, 거짓( false, 0 )이면 ‘수식 2’ 수행
운영체제( OS )
1) 운영체제의 정의
컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록
환경을 제공하는 여러 프로그램의 모임
2) 운영체제의 목적
목적 | 설명 |
처리 능력 ( Throughput ) |
일정시간 내에 시스템이 처리하는 일의 양 |
반환 시간 ( Turn Around Time ) |
시스템에 작업을 의뢰한 시간부터 처리가 완료될 때 까지의 시간 |
사용 가능도 ( Availability ) |
시스템을 사용할 필요가 있을 때, 즉시 사용 가능한 정도 |
신뢰도 ( Reliability ) |
시스템이 주어진 문제를 정확하게 해결하는 정도 |
3) 운영체제의 기능
• CPU / 메모리 공간 / 프로세서( 처리기, Processor ) / 기억장치(주 & 보조기억 장치 ) / 입 & 출력 장치
/ 파일 및 정보 등의 자원 관리
• 다중 사용자와 다중 응용프로그램 환경 하에서 현재 상태를 파악하고 자원을 효율적으로 분배 및 관리하기 위해
스케줄링 기능 제공
• 사용자와 시스템 간의 편리한 인터페이스 제공 / 입출력 장치와 프로그램 제어
• 데이터를 관리 / 데이터 및 자원의 공유 기능 제공
• 시스템의 오류 검사 및 복구 / 자원 보호 기능 제공
• 입 & 출력에 대한 보조 기능 제공 -> 가상 계산기 기능 제공
4) 운영체제의 주요 자원 관리
자원 | 기능 |
프로세스 관리 | 프로세스 스케줄링 및 동기화 관리 담당 |
기억장치 관리 | 프로세스에게 메모리 할당 및 회수 관리 담당 |
주변장치 관리 | 입 & 출력 장치 스케줄링 및 전반적인 관리 담당 |
파일 관리 | 파일의 생성 / 삭제 / 변경/ 유지 등의 관리 담당 |
5) 그 외
• UNIX의 쉘( Shell )의 특징
- 사용자의 명령어를 인식하여 프로그램 호출 / 명령을 수행하는 명령어 해석기
- 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재, 보조기억장치에서 교체 처리가 가능
- 시스템과 사용자 간의 인터페이스 역할 담당
- 파이프라인 기능 지원 및 입&출력 재지정을 통해 입&출력의 방향 변경 가능
- 여러 종류의 쉘이 있다.
- DOS의 COMMAND.COM과 같은 기능 수행
6) 운영체제 제어 프로그램 구성
• 제어프로그램은 컴퓨터 전체의 작동상태 감시, 작업의 순서 지정, 작업에 사용되는 데이터 관리등의 역할 수행
• 감시 프로그램( Supervisor )
- 프로그램과 시스템 작동 상태를 감시 & 감독
• 작업 제어 프로그램( Job Control )
- 작업의 연속 처리를 위한 스케줄 및 시스템 자원 할당 등을 담당
• 데이터 관리 프로그램( Data Management )
- 주기억장치와 보조기억장치 사이의 데이터 전송 / 파일과 데이터를 처리 및 유지 보수 기능 수행
※ 운영체제 처리 프로그램 구성
• 처리 프로그램은 제어 프로그램의 지시를 받아 사용자가 요구한 문제를 해결하기 위한 프로그램
• 언어 번역 프로 그램
- 고급언어로 작성한 원시 프로그램을 기계어 형태의 목적 프로그램으로 변환시키는 것
• 서비스 프로그램
- 사용자가 컴퓨터를 더욱 효율적으로 사용할 수 있도록 제작된 프로그램
- 분류/병합 , 유틸리티 프로그램이 이에 해당
※ UNIX 운영체제 관련 기출 참고
• 하나 이상의 작업에 대하여 백그라운드에서 수행이 가능하다.
• 트리 구조의 파일 시스템을 갖는다.
• 이식성이 높으며 장치 간의 호환성이 높다.
기억장치 관리
1) 기억장치 관리 전략의 개요
• 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기( When ) , 적재 위치( Where ) 등을 지정하여
한정된 주기억장치의 공간을 효율적으로 사용하기 위함이다.
ex) 반입( Fetch ) / 배치( Placement ) / 할당( Allocation ) / 교체( Replacement )
2) 반입( Fetch ) 전략
• 보조기억장치에 보관 중인 프로그램이나 데이터를 언제( When ) 주기억장치로 적재할 것인지를 결정하는 전략
ex) 요구 반입( Demand Fetch ) / 예상 반입( Anticipatory Fetch )으로 나뉜다.
3) 배치( Placement ) 전략
• 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에( Where ) 위치시킬 것인지를 결정하는 전략
ex) 최초 적합( First Fit ) / 최적 적합( Best Fit ) / 최악 적합( Worst Fit )로 나뉜다.
※ 최초 적합 : 빈 영역 중에서 첫 번째 분할 영역에 배치
※ 최적 적합 : 빈 영역 중에서 단편화를 가장 작게 남기는 분할 영역에 배치
※ 최악 적합 : 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치
4) 교체 전략
이미 사용되고 있는 영역 중에서 어느( Who ) 영역을 교체할지 결정하는 전략
ex) FIFO / LRU / LFU / NUR / OPT / SCR
5) 주기억장치 할당 개념
프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게( How ) 할당할지 정함
• 연속 할당 기법 : 프로그램을 주기억장치에 연속으로 할당하는 기법
- 단일 분할 할당 기법 : 오버레이 / 스와핑
- 다중 분할 할당 기법 : 고정(정적) 분할 할당 기법 / 가변(동적) 분할 할당 기법
• 분산 할당 기법 : 프로그램을 특정 단위의 조각으로 나누어 할당하는 기법
- 페이징( Paging ) 기법
- 세그먼테이션( Segmentation ) 기법
6) 가상 기억 장치의 개요
• 보조기억장치( 하드디스크 )의 일부를 주기억장치처럼 사용하는 것, 용량이 적은주기억장치를 마치
큰 용량을 가진 것처럼 사용하는 기법
• 주기억장치의 용량보다 큰 프로그램을 실행하기 위해 사용
• 주기억장치의 이용률과 다중 프로그래밍 효율을 높일 수 있다.
• 가상 기억장치에 저장된 프로그램을 실행하려면 가상기억장치의 주소로 바꾸는 주소 변환 작업 필요
• 블록 단위로 나누어 사용하므로 연속 할당 방식의 단편화 해결 가능
7) 페이징 기법
• 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후, 나눠진 프로그램( 페이지 )을
동일하게 나눠진 주기억장치 영역( 페이지 프레임 )에 적재시켜 실행하는 기법
• 일정한 크기로 나눈 단위를 페이지( Page ) 라 하고, 페이지 크기로 일정하게 나누어진 주기억장치의 단위를
페이지 프레임( Page Frame )라고 한다.
• 외부 단편화는 발생하지 않으나, 내부 단편화 발생
• 주소 변환을 위해 페이지의 위치 정보를 갖고 있는 페이지 맵 테이블( Page Map Table ) 필요
-> 페이지 맵 테이블 사용으로 비용 증가 / 처리속도 감소
프로세스 및 스케줄링
1) 프로세스( Process )의 정의
• 일반적으로 프로세서( Processor, 처리기 ) 즉 CPU에 의해 처리되는 사용자 프로그램
시스템 프로그램인 실행 중인 프로그램을 의미하며 작업( Job ) / 태스크( Task )라고도 한다.
• 프로세서( Processor ) -> 프로세스( Process ) -> 프로시저( Procedure, 절차 )
• 프로세스의 정의
- 프로시저( Procedure )가 활동 중인 것
- 비동기적 행위를 일으키는 주체
- 운영체제가 관리하는 실행 단위
- 실행 중인 프로그램
- PCB( Process Control Block )을 가진 프로그램
- 실기억 장치에 저장된 프로그램
- 프로세서가 할당되는 실체로써, 디스패치가 가능한 단위
2) 프로세스 상태 전이
3) 프로세스 상태 전이 관련 용어
관련 용어 | 설명 |
디스패치 ( Dispatch ) |
준비상태에서 대기하고 있는 프로세스 중 하나가 프로세스를 할당받아 실행상태로 전이되는 과정 ex) 준비( Ready ) -> 실행( Run ) |
Wake Up | 프로세스가 대기 상태에서 준비상태로 전이되는 과정 ex) 대기( Wait ) -> 준비( Ready ) |
스풀링 ( Spooling ) |
나중에 한꺼번에 입 & 출력 하기 위해 디스크에 저장하는 과정 |
4) 스레드( Thread )
• 프로세스 내에서의 작업 단위, 시스템의 여러 자원을 할당받아 실행하는 단위
• 프로세스의 일부 특성을 갖고 있기 때문에, 경량 프로세스라고도 함
• 동일 프로세스 환경에서 서로 독립적인 다중 수행 가능
- 하나의 프로세스를 여러 개의 스레드로 생성해 병행성 증진 및 성능 / 처리율 향상
- 프로그램 응답 시간 단축 / 기억 장소 낭비가 줄어든다. / 통신 향상
• 종류
- 단일 스레드 : 하나의 프로세스에 하나의 스레드가 존재하는 경우
- 다중 스레드 : 하나의 프로세스에 하나 이상의 스레드가 존재하는 경우
※ 커널 스레드의 경우 운영체제에 의해 스레드를 운용한다.
※ 사용자 스레드의 경우 사용자가 만든 라이브러리를 사용하여 스레드를 운용한다.
4) 스케줄링( Scheduling )
프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해등 프로세스에게 할당하는 작업
종류 | 설명 |
장기 스케줄링 ( 작업 스케줄링, 상위 스케줄링 ) |
어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업 -> 작업 스케줄러에 의해 수행 |
중기 스케줄링 | 어떤 프로세스들이 CPU를 할당받을 것인지 결정하는 작업 |
단기 스케줄링 ( 프로세스 스케줄링, 하위 스케줄링 ) |
프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업 -> 프로세서 스케줄링 및 문맥 교환은 프로세서 스케줄러에 의해 수행됨 |
5) 스케줄링의 목적
• 공정성 : 모든 프로세스에 공정하게 할당
• 처리량 증가 : 단위 시간당 프로세스 처리량 증가
• CPU 이용률 증가 : CPU 낭비 시간 줄이고, 사용되는 시간 비율 증가
• 우선순위 제도 : 우선순위가 높은 프로세스 먼저 실행
• 오버헤드 최소화
• 응답 시간( Response Time ) 최소화
• 반환시간( Turn Around Time ) 최소화
• 대기시간 최소화 : 준비상태 큐에서 대기하는 시간 최소화
• 균형 있는 자원의 사용 : 메모리 / 입 & 출력 장치등의 균형있는 사용
• 무한 연기 회피 : 자원을 사용하기 위해 무한정 연기되는 상태 회피
=> CPU 이용률 / 처리율 / 반환시간 / 대기시간 / 응답 시간 관련 목적 중요!
인터넷 및 OSI 참조 모델
1) IP 주소( Internet Protocol Address )
• 인터넷에 연결된 모든 컴퓨터 자원을 구분하기 위한 고유한 주소
• 숫자로 8비트씩 4 부분 / 총 32비트로 구성
2) IPv6( Internet Protocol Version 6)
• 현재 사용하고 있는 IP 주소 체계인 IPv4의 주소 부족 문제를 해결하기 위해 개발
• 128비트의 긴 주소를 사용, IPv4에 비해 자료 전송속도가 빠르다.
• 인증성 / 기밀성 / 데이터 무결성의 지원으로 보안 문제 해결 가능
• IPv4와 호환성이 뛰어나고, IPv6 확장 헤더로 네트워크 기능 확장이 용이
• 멀티미디어의 실시간 처리가 가능하다.
• Traffic Class / Flow label을 이용하여 등급별 / 서비스별로 패킷을 구분할 수 있어 품질이 보장된다
( QoS : Quality of Service )
• 종류
유니캐스트( Unicast ) / 멀티캐스트( Multicast ) / 애니캐스트( Anycast )
3) 도메인 네임( Domain Name )
• 숫자로 된 IP주소를 사람이 이해하기 쉬운 문자 형태로 표현한 것
• 호스트 컴퓨터 이름( WWW ) / 소속기관 이름( hankook ) / 소속기관의 종류( co ) / 소속 국가명( kr ) => www.hankook.co.kr
• 문자로 된 도메인 네임을 컴퓨터가 이해할 수 있는 IP 주소로 변환하는 역할을 하는 시스템을
운( Domain Name System )라고 하며, 이런 역할을 하는 서버를 DNS 서버라 함
4) OSI( Open System interconnection ) 참조모델 ( 7 계층 )
계층 | 설명 | 주요 프로토콜 |
응용 계층 ( Application Layer, 7 ) |
사용자와 네트워크 간 응용서비스 연결, 데이터 생성 |
HTTP, FTP, TELNET SMTP / SNTP DNS |
표현 계층 ( Presentation Layer, 6 ) |
구문 검색, 코드변환, 암/복호화, 데이터 압축, 문맥관리 기능 |
JPEG, MPEG |
세션 계층 ( Session layer, 5 ) |
연결 접속( 유지 ), 동기 제어, 동기점( 대화 ) |
SSH, TLS |
전송 계층 ( Transport Layer, 4 ) |
종단간( End to End ), 신뢰성 있는 데이터 전송, 흐름제어( 슬라이딩 윈도우 ) , 오류 및 혼잡 제어 |
TCP / UDP, RTCP -> 세그먼트 |
네트워크 계층 ( Network Layer, 3 ) |
- 단말기 간 데이터 전송을 위한 최적화된 경로( 라우팅 ) 제공 - 패킷을 발신지로부터 최종 목적지까 지 전달 패킷에 발신지와 목적지의 논리 주소 추가 |
IP , ICMP, IGMP ARP, RARP, RIP OSPF ->패킷( packet ) |
데이터 링크 계층 ( Data Link Layer, 2 ) |
인접 시스템( 노드 ) 간 물리적 연결 이용해 데이터 전송, 동기화, 오류 및 흐름 제어, 오류 검출 및 재전송 |
HDLC, PPP, LLC MAC ->프레임( Frame ) |
물리 계층 ( Physical Layer, 1 ) |
매체간의 전기적 / 기능적 / 절차적 기능 정의 |
RS-232C, X.21 -> 비트( Bit ) |
※ RIP 라우팅 프로토콜 기출 참고
• 경로 선택 메트릭은 홉 카운트( Hop Count )이다.
• 최단 경로 탐색에 Bellman-Ford 알고리즘을 사용한다.
• 각 라우터는 이웃 라우터들로부터 수신한 정보를 이용하여 라우팅 표를 갱신한다.
※ UDP 프로토콜 기출 참고
• 비연결형 서비스를 제공한다.
• 단순한 헤더 구조로 오버헤드가 적다.
• TCP와 같이 트랜스포트 계층에 존재한다.
전송계층의 프로토콜
교착 상태 발생의 필요충분조건
• 상호 배제( Mutual Exclusion )
• 점유와 대기( Hold and Wait )
• 환형 대기( Circular Wait )
• 비선점( Non-Preemption )
JAVA 언어의 접근 제한자
종류 | 설명 |
public | 모든 접근 허용 |
protected | 같은 패키지(폴더) 에 있는 객체와 상속관계의 객체들만 접근 허용 |
default | 같은 패키지(폴더) 에 있는 객체들만 접근 허용 |
private | 현재 객체 내에서만 접근 허용 |
※ 우선순위 : public > protected > default > private
UNIX 명령어
명령어 | 설명 |
cat | 파일 내용 화면 표시 = TYPE( Windows 명령어 ) |
chdir | 현재 사용할 디렉터리의 위치 변경 = CD( Windows 명령어 ) |
chmod | 파일의 사용허가 지정, 파일의 속성 변경 = ATTRIB( Windows ) |
chown | 소유자 변경, Change own |
cp | 파일 복사, copy |
rm | 파일 삭제, remove |
exec | 새로운 프로세스 수행, execute |
find | 파일 찾기 |
fork | 새로운 프로세스 생성, 하위 프로세스 호출 및 프로세스 복제 |
fsck | 파일 시스템 검사 및 보수, filesystem check |
ls | 현재 디렉터리 내 파일목록 확인, list = DIR( Windows ) |
mout / unmount | 파일 시스템 마운팅 / 마운팅 해제 |
JAVA 출력 함수
명령어 | 설명 |
System.out.print( ) | 기본 출력( 줄바꿈 X -> \n 써서 줄바꿈 가능 ) |
System.out.println( ) | 출력 시 자동으로 줄바꿈 |
System.out.printf( ) | 연산도 출력 가능( 가장 다양한 표현 가능 ) |
TCP / IP
인터넷에 연결된 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜
TCP | OSI 7계층의 전송계층( 4계층 ) 에 해당 신뢰성 있는 연결형 서비스 제공 패킷의 다중화 / 순서제어 / 오류제어 / 흐름제어 기능 제공 스트림( Stream ) 전송 기능 제공 기본헤더 크기는 20 ~ 60 byte 이고 최대 40byte 추가 가능 |
IP | OSI 7계층의 네트워크 계층( 3계층 )에 해당 데이터 그램을 기반으로 하는 비연결형 서비스 제공 패킷의 분해 / 조립, 주소지정, 경로선택 기능( Routing ) 제공 |
※ TCP 관련 기출 참고
1) TCP / IP 인터넷 계층 프로토콜
• ARP : IP주소를 MAC 주소로 변환하는 프로토콜 ( 논리 주소 -> 물리 주소 )
• RARP : MAC 주소를 IP주소로 변환하는 프로토콜( 물리주소 -> 논리 주소 )
• TCP : 양방향 연결형 서비스 제공 / 가상 회선 연결 형태의 서비스 제공
• ICMP : IP와 조합하여 통신 중에 발생하는 오류처리 / 전송경로 변경 등을 위한 제어 메시지 관리
• IGMP : 멀티캐스트를 지원하는 호스트나 라우터 사이에서 멀티캐스트 그룹 유지를 위해 사용
2) TCP 흐름 제어 기법
• Stop and Wait
프레임이 손실되었을 때, 손실된 프레임 1개를 전송하고 수신자의 응답을 기다리는 방식
한 번에 프레임 1개만 전송할 수 있다.
• Slow Start
패킷이 문제없이 도착하면 혼잡 윈도 크기를 패킷마다 1씩 증가시켜 한 주기가 지나면
혼잡 윈도우 크기가 2배로 되지만, 혼잡 현상 발생 시 혼잡 윈도 크기를 1로 줄여버리는 방식이다.
• Sliding Window
한 번에 여러 패킷( 프레임 )을 전송할 수 있어, 전송 효율이 좋은 기법
Congestion Avoidance
네트워크 내에서 패킷의 지연이 너무 높아지게 되어 트래픽이 붕괴되지 않도록 패킷의 흐름을 제어하는 트래픽 제어
3) TCP 헤더
• 순서 번호( Sequence Number )는 전달하는 바이트마다 번호가 부여
• 수신번호 확인( Acknowledgement Number )은 상대편 호스트에서 받으려는 바이트의 번호를 정의
• 체크섬( Checksum )은 데이터를 포함한 세그먼트의 오류를 검사
• 윈도 size는 16비트로 2^16 = 65535 byte
※ IP 프로토콜 기출 참고
1) IP 프로토콜에서 사용하는 필드
• Header Legth : IP 프로토콜의 헤더 길이를 32비트 워드 단위로 표시
• Time To Live : 송신 호스트가 패킷을 전송하기 전 네트워크에서 생존할 수 있는 시간을 지정
• Version Number : IP 프로토콜의 버전 번호
2) IP 프로토콜의 특징
• 체크섬( Checksum ) 기능으로 데이터 체크섬( Data Checksum)만 제공한다.
• 패킷을 분할 / 병합하는 기능을 수행하기도 한다.
• Best Effort 원칙에 따른 전송 기능을 제공한다.
C 언어 데이터 처리방법
종류 | 설명 |
열거체 | 서로 연관된 정수형 상수들의 집합 정수형 상수에 이름을 붙여 코드를 이해하기 쉽게 하고, enum으로 선언해 사용하는 사용자 정의 자료형 |
구조체 | 각 변수가 다른 메모리에 할당 C , C++에서 Struct로 선언하여 사용자가 기본타입을 가지고 새롭게 정의할 수 있는 사용자 정의 자료형 |
공용체 | 모든 멤버변수가 하나의 메모리 공간을 공유 C, C++에서 union으로 선언하여 사용하는 사용자 정의 자료형 |
라이브러리
• 프로그램을 효율적으로 개발할 수 있도록 자주 사용하는 함수나 데이터들을 미리 만들어 모아놓은 집합체
( 언제든지 호출하여 사용 가능 )
• 프로그래밍 언어에 따라 일반적으로 도움말, 설치 파일, 샘플 코드 등을 제공
• 라이브러리는 모듈과 패키지를 총칭
( 모듈 = 개별 파일 / 패키지 = 파일들을 모아놓은 폴더 )
• 종류
- 표준 라이브러리 : 프로그래밍 언어에 기본적으로 포함되어 있는 라이브러리
- 외부 라이브러리 : 개발자들이 필요한 기능을 만들어 인터넷 등에 공유해 놓은 것 ( 다운로드하여 설치 후 사용 가능 )
C언어 대표적인 표준 라이브러리
※ 기출 참고
• C언어 라이브러리 함수
- atoi( ) : char to int => 문자를 정수로
- atof( ) : char to double => 문자를 부동 소수점으로
- itoa( ) : int to char : 정수를 문자로
- ceil( ) : 소수점 값이 나올 때, 올림
PHP 연산자
종류 | 설명 |
@ | 함수 사용시 발생되는 오류메시지를 표시하지 않음 |
<> | 값이 서로 같지 않을 때 ( != ) |
= | 값을 지정할 때 사용 |
== | 두값이 같은지 확인 |
=== | 두값이 같고, 형식도 같은지 확인 |
:: | new 지시자로 class를 미리 객체화 시키지 않고, 사용하는 시점에서 객체가 생성되고 지정된 method가 실행되도록 하는 접근자 |
응집도의 정의
• 우연적 : 서로 관련 없는 요소로만 구성
• 논리적 : 유사 성격이나, 특정 형태로 분리되는 처리 요소들로 모듈 형성
• 시간적 : 특정 시간에 처리되는 몇 개의 기능을 모아 모듈 형성
• 교환적 : 동일 입출력 사용 시, 서로 다른 기능을 수행하는 구성 요소가 모였을 경우
• 절차적 : 모듈이 다수의 관련 기능을 가질 때, 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우
• 순차적 : 활동을 통해 나온 출력 데이터를 그다음 활동의 입력 데이터로 사용하는 경우
• 기능적 : 모든 기능 요소가 단일 문제와 연간 되어 수행할 경우
응집도( Cohesion )
• 기능적 < 순차적 < 교환적 < 절차적 < 시간적 < 논리적 < 우연적 ( 오른쪽으로 갈수록 응집도 약해진다. )
• 영어 이름으로
Functional < Sequential < Communication < Procedural < Temporal < Logical < Coincidental
모듈화( Modularity )
• 소프트웨어의 모듈은 프로그래밍 언어에서 Subroutine, Function 등으로 표현될 수 있다.
• 모듈화는 시스템을 지능적으로 관리할 수 있도록 해주며, 복잡도 문제를 해결하는데 도움을 준다.
• 모듈화는 시스템의 유지보수와 수정을 용이하게 한다.
※ 모듈의 수 증가 => 각 모듈의 크기가 감소
※ 모듈의 수 감소 => 각 모듈의 크기가 증가
모듈 사이의 결합도 ( Coupling )
• 모듈 간의 결합도를 약하게 하면 모듈 독립성이 향상된다.
• 결합도와 응집도는 반비례
( 결합도가 약하다 -> 응집도가 강하다 -> 모듈 독립성이 향상된다. )
• 결합도 순서
자료( Data ) < 스탬프( Stamp ) < 제어( Control ) < 외부( External ) < 공통( Common ) < 내용( Content )
( 오른쪽으로 갈수록 결합도가 강해진다. )
HRN( Highest Response-ratio Next ) 스케줄링
• 대기시간이 긴 프로세스일 경우 우선순위가 높아진다.
• SJF 기법을 보완하기 위한 방식이다.
• 긴 작업과 짧은 작업 간의 지난 친 불평등을 해소할 수 있다.
• 우선순위 계산식의 수치가 가장 높은 것부터 낮은 순으로 우선순위를 부여한다.
※ HRN 우선순위 계산식 : ( 대기시간 + 서비스 시간 ) / 서비스시간
교착상태 해결방법
• Prevention( 예방 ) : 교착 상태의 원인이 되는 조건 중 하나를 제거
- 상호 배제( Mutual Execlusion )
- 점유와 대기( Hold and Wait )
- 비선점( Non – Preemption )
- 환형 대기( Circular Wait )
• Avoidance( 회피 ) : 은행가 알고리즘
• Detection( 탐지 ) : 자원 할당 그래프
• Recovery( 복구 ) : 자원 선점 / 프로세스 종류
IEE 802 표준규약
• IEEE 802.3 : CSMA/CD
• IEEE 802.4 : Token BUS
• IEEE 802.5 : Token RING
• IEEE 802.8 : Fiber optic LANS
• IEEE 802.9 : 음성/데이터 통합 LAN
• IEEE 802.11 : 무선 LAN(CSMA/CA)
프로세스 적재 정책
• 반복 / 스택 / 부프로그램은 시간 지역성과 관련 있다.
• 공간 지역성은 프로세스가 어떤 페이지를 참조했다면 이후 가상 주소 공간상 그 페이지와 인접한 페이지들을
참조할 가능성이 높음을 의미
• 드레싱 현상을 방지하기 위해서는 각 프로세스가 필요로 하는 프레임을 제공할 수 있어야 한다.
• 일반적으로 페이지 수행 시간보다 교환 시간이 커질 때 발생하는걸 스레싱이라 한다.
페이지( Page )의 크기
• 페이지 크기가 작은 경우
- 기억 장소 이용 효율이 증가
- 입/출력 시간 증가
- 내부 단편화 감소
- 많은 페이징 사상 테이블 필요
• 페이지 크기가 큰 경우
- 주기억 장치 공간 절약
- 테이블이 복잡하지 않아 관리 용이
자동 반복 요청 방식( ARQ )
• Stop-and-Wait ARQ(정지-대기 ARQ)
송신 측이 하나의 블록을 전송한 후 수신 측에서 에러의 발생을 점검한 다음 에러 발생 유무 신호를 보내올 때까지 기다리는 방식
• Go-Back-N ARQ
여러 블록을 연속적으로 전송하고, 수신 측에서 부정 응답(NAK)을 보내오면 송신 측이 오류가 발생한 블록부터 모두 재 전송
• Selective-Reapeat ARQ(선택적 재전송 ARQ)
여러 블록을 연속적으로 전송하고, 수신 측에서 부정 응답(NAK)을 보내오면 송신 측이 오류가 발생한 블록만을 재전송
• Adaptive ARQ(적응적 ARQ)
전송 효율을 최대로 하기 위해서 데이터 블록의 길이를 채널의 상태에 따라 동적으로 변경하는 방식
파일 디스크립터( File Descriptor )
• 파일 관리를 위해 시스템이 필요로 하는 정보를 가지고 있다.
• 보조기억장치에 저장되어 있다가 파일이 개방( OIpen )되면 주기억장치로 이동
• 파일 제어 블록( File Control Bolock ) 이라고도 한다.
• 파일 시스템에서 관리하므로, 사용자는 직접 참조 불가능
• 파일 이름 / 위치 / 파일 구조 / 보조기억장치의 유형 / 시간 / 액세스등의 정보를 담고 있다.
기출문제 단어 및 개념
1) FTP 바운스 공격
FTP 프로토콜 구조의 허점을 이용한 공격
2) SQL 삽입
SQL의 논리적 에러를 이용한 공격
3) 디렉터리 접근 공격
웹 루트 디렉터리 위부에 저장된 파일 & 디렉터리에 접근하는 공격 방법
4) 버퍼 오버플로
메모리를 다루는데 오류가 발생하여 잘못된 동작을 하는 프로그램의 취약점
5) Bash 쉘 스크립트 제어문
if / for / while
6) IEEE 802.11e
워킹 그룹의 무선 LAN 표준화 현황 중 QoS 강화를 위해 MAC 지원 기능을 채택한 것
7) 스크립트 언어의 종류
JavaScript / ASP / JSP / PHP / Python / Perl
8) 적합 종류
• 최악 적합( Worst Fit )
들어갈 수 있는 영역 중, 자원 낭비가 제일 심한 영역에 들어가는 방법
• 최초 적합( First Fit )
들어갈 수 있는 영역 중, 가장 빠른 영역에 들어가는 방법
• 최적 적합( Best Fit )
들어갈 수 있는 영역 중, 가장 자원 낭비가 덜 한 영역에 들어가는 방법
9) UNIX SHELL 환경변수 출력 명령어
printenv / env / setenv
10) 커널( Kernal )의 기능
• 프로세스( CPU 스케줄링 ) 관리
• 기억장치 관리
• 파일 관리
• 입출력 관리
• 프로세스 간 통신
• 데이터 전송 및 변환
11) 공통모듈 재사용 범위 분류
• 컴포넌트 재사용
• 함수 / 객체 재사용
• 애플리케이션 재사용
12) 세그먼트 테이블 주소 값
• 세그먼트( Segment ) 논리주소
( 세그먼트 번호 , 변위 값)
• 세그먼트( Segment ) 물리주소
( 세그먼트 시작 주소+ 변위 값)
13) Working set
운영체제에서 가상 기억장치 관점에서 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
14) Locality
어느 한순간에 특정 부분을 집중적으로 참조
15) Tharshing
지나치게 페이지 부재가 발생함으로 인하여 전체 시스템의 성능이 저하되는 현상
16) IP Adress 범위
• A Class 주소 범위 : 0.0.0.0 ~ 127.255.255.255
• B Class 주소 범위 : 128.0.0.0 ~ 191.255.255.255
• C Class 주소 범위 : 192.0.0.0 ~ 223.255.255.255
• D Class 주소 범위 : 224.0.0.0 ~ 239.255.255.255
• E Class 주소 범위 : 240.0.0.0 ~ 255.255.255.255
17) 튜플( tuple ) 타입
Python 시퀀스( Sequence ) 데이터 타입에 해당하며, 다양한 데이터 타입들을 주어진 순서에 따라
저장할 수 있으나 저장된 내용을 변경할 수 없는 것
'■ 자격증 > 정보처리기사' 카테고리의 다른 글
[ 5과목 ] 정보시스템 구축 관리 (0) | 2022.05.18 |
---|---|
[ 3과목 ] 데이터베이스 구축( DB ) (0) | 2022.05.16 |
[ 2과목 ] 소프트웨어 개발 (0) | 2022.05.15 |
[ 1과목 ] 소프트웨어 설계 (0) | 2022.05.12 |