자격증 공부

정보 처리 기사 필기 정리

정보처리기사 필기 시험 시나공 책 두번 보고나서 

시험직전에 보기위해서 정리해놓은 내용

 

ISO/IEC 9126

기능성 – 적절성/정합성, 정밀성/정확성, 상호운용성, 보안성, 호환성

신뢰성성숙성, 고장허용성, 회복성

사용성 – 이해성, 학습성, 운용성, 친밀성

효율성 – 시간효율성, 자원효율성

유지보수성 – 분석성, 변경성, 안정성, 시험성

이식성 – 적용성, 설치성, 대체성, 공존성

 

소프트웨어 아키텍처 설계 기본원리

모듈화, 추상화, 단계적 분해, 정보 은닉

 

아키텍처 패턴

레이어 패턴, 클라이언트 - 서버 패턴, 파이프-필터 패턴, 모델-뷰 컨트롤러-패턴

 

객체 지향의 구성요소와 개념

객체, 클래스, 캡슐화, 상속, 다형성

 

모듈 결합도 (약 -> 강)

자료 -스탬프 – 제어 – 외부 – 공통 -내용

모듈 응집도 (약 -> 강)

우연적 – 논리적 – 시간적 – 절차적 – 교환적 – 순차적 – 기능적

 

 

코드

순차 - 차례로 일련번호

블록 – 공통성이 있는 것끼리 블록구분후 일련번호

10진 - 10진 분할 090506 (회사 에러처럼)

그룹 분류 – 대, 중, 소 분류 후 일련번호 1-01-001 (본사-총무부-인사계)

연상 – tv-40

표의 숫자 – 물리적 수치를 코드에 적용 120-720-1500 (두께-폭-넓이)

합성 – 2개 이상 코드 합 KE-711(대한항공 711기)

 

디자인 패턴

생성 - 추상팩토리, 빌더, 팩토리메소드, 프로토타입, 싱글톤

구조 패턴

어댑터 – 호환성 없는 클래스들의 인터페이스를 다른 클래스가 이용할 수 있도록 변환

브리지 – 구현부에서 추상층을 분리, 서로 독립적 확장 가능

컴포지트 – 복합객체, 단일객체 구분없이 다루기 위함, 트리구조 구성 -> 복합 객체안에 복합객체

데코레이터 – 객체간의 결합 -> 기능확장

퍼싸드 -상위 인터페이스 구성 -> 쉽게 서브 클래스 기능 사용

플라이 웨이트 – 인스턴스를 가능한 공유 -> 메모리 절약

프록시 – 접근 어려운 객체와 연결하려는 객체 사이 인터페이스 역할

 

행위 패턴

책임연쇄 – 둘이상의 객체 하나가 못하면 다른 하나가 처리하도록 넘기는 형태

커맨드 – 요청을 객체 형태로 캡슐화 -> 재이용, 취소 가능하도록 정보저장, 로그

인터프리터 – 언어에 문법 표현을 정의

반복자 – 접근이 잦은 객체에 대해 동일한 인터페이스 사용하도록 하는 패턴

중재자 – 객체간 상호작용을 캡슐화 하여 객체로 정의

메멘토 - 특정시점의 객체 내부상태를 객체화 -> 이후 해당 시점으로 이동 가능

옵서버 - 한 객체가 변화하면 상속되어 있는 다른 객체에게 변화된 상태 전달

상태 – 객체의 상태에 따라 동일한 동작을 다르게 처리

전략 – 동일한 계열의 알고리즘을 개별적 캡슐화 하여 상호 교환 가능하게 정의

템플릿 메소드 – 상위 클래스에서 골격 정의 -> 하위에서 세부 처리

방문자 – 각 클래스 데이터 구조에서 처리 기능 분리 -> 기능처리 각 클래스 방문하여 수행

테스트 케이스 구성

ISO/IEC/IEEE 29119-3

식별자, 테스트 항목, 입력 명세, 출력명세, 환경설정, 특수절차요구, 의존성 기술

 

20%에 해당하는 코드에서 전체 80%의 결함이 발견 -> 파레토 법칙

동일한 테스트를 반복하면 더 이상결함이 발견되지 않는 ‘살충제 패러독스’

> 테스트 케이스를 지속적 보완 개선

 

결함 X 이더라도 요구사항 만족 X 면 품질이 높다고 말할 수 없다.

è 오류-부재의 궤변

명세기반 테스트 – 동등분할, 경계 값 분석

구조기반 테스트 – 구문기반, 결정기반, 조건기반

경험기반 테스트 – 에러추정, 체크리스트, 탐색적 테스팅

 

화이트 박스 테스트

기초경로 검사

제어구조검사(조건검사, 루프검사, 데이터 흐름 검사)

 

블랙박스 테스트

동치분할검사 -타당한 입력자료, 타당하지 않은 입력자료 개수를 균등하게 해서 테스트

경계값 분석

원인-효과 그래프 검사 – 입력 데이터 간의 관계 출력영향 분석 -> 효용성 높은 케이스 선정

오류예측 검사 – 경험이나 확인자의 감각 테스트(보충적 검사 기법)

비교 검사 – 이전 버전이랑 같은 결과 출력 여부 확인

결함 관리 도구

Mantis – 단위 별 작업내용 기록 -> 결함 추적 가능한도구

Trac – 결함 추적+결함통합 관리

Redmine - 프로젝트 관리 및 결함 추적

Bugzilla – 결함 신고, 확인, 처리 등 결함을 지속적 관리 우선순위 지정 가능

 

성능테스트 도구

JMeter – 기능의 부하테스트 및 측정 지원하는 java application

LoadUI – 서버 모니터링, 드래그 엔 드랍 등 편리성 강화된 도구

OpenSTA 부하 및 생산품 모니터링 도구 윈도우용

 

시스템 모니터링 도구

Scouter - 단일뷰 통합, 실시간모니터링, 튜닝에 최적화된 인프라 통합 모니터링 도구

Zabbix - 웹기반 서버, 서비스 등 모니터링 도구

 

소스코드 품질 분석 도구

Pmd - 미사용변수, 미최적화 코드 - 리눅스 윈도우

Cppcheck – c, c++ 메모리 누수, 오버플로우 등 – 윈도우

SonarQube – 중복코드, 복잡도, 코딩설계 등 분석 – 전부

Ccm – 다양한 언어 복잡도 – 전부

Cobertura – 자바 언어의 복잡도 분석, 테스트 커버리지 측정 – 전부

Avalanche – valgrind 프레임워크 및 stp 기반, 결함, 취약점 분석 – 리눅스, 안드로이드

Valgrind – 메모리, 쓰레드 결함 분석 – 전부

 

모듈 연계

EAI (Enterprise Application Integration)

기업내 각종 애플리케이션 및 플랫폼 간의 정보 전달, 연계, 통합 등 상호 연동이 가능하게 해주는 솔루션

구축유형

포인트 투 포인트 – 1:1, 변경 재사용 어려움

Hub& spoke – 허브시스템을 통해서 전송, 중앙 집중형, 확장유지 쉬움

Message bus – 애플리케이션 사이 미들웨어를 두어 처리 확장 및 대용량 가능

Hybrid - Hub& spoke + Message bus, 데이터 병목현상 최소화

 

ESB(Enterprise Service Bus)

애플리케이션 간 연계, 데이터 변화를 웹서비스 지원 등 표준 기반의 인터페이스를 제공하는 솔루션

서비스 중심

 

인터페이스 보안 기능 적용

네트워크 영역 – 네트워크 트래픽 암호화 (IPSec, SSL, S-HTTP 등 적용)

애플리케이션 영역 – 개발보안가이드 참조

데이터베이스 영역 – 접근권한, 프로시저, 트리거 등 동작 객체 취약점에 보안기능 적용, 암호화, 익명화 등의 데이터 자체 보안 방안 적용

 

 

 

 

 

인터페이스 구현 검증 도구

xUnit - 자바(Junit), C++(Cppunit), .Net(Nunit) 등 다양한 언어 지원하는 단위 테스트 프레임 워크

STAF - 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크

FitNess – 웹 기반 테스트 케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크

NTAF – FitNess의 협업기능 + STAF의 재사용, 확정성의 네이버 테스트 자동화 프레임워크

Selenium – 다양한 브라우저 및 개발 언어 지원하는 웹 애플리케이션 테스트 프레임 워크

Watir – Ruby를 사용하는 애플리케이션 테스트 프레임워크

 

애플리케이션 성능 관리도구 (스카우터, 제니퍼)

 

데이터 베이스 설계

개념적 설계 – 개념스키마, 트랜잭션 모델링, 독립적 E-R다이어그램

논리적 설계 – DBMS에 맞는 논리스키마 설계, 트랜잭션 인터페이스 설계, 테이블 설계

물리적 설계 – 데이터베이스 파일의 저장구조 및 액세스 경로 결정, 데이터가 저장되는 방법 묘사

데이터 베이스 구현 – DDL를 통해서 스키마 기술, 데이터 입력, 응용프로그램 작성, 응용프로그램을 위한 트랜잭션 작성

 

속성의 종류

특성 – 기본, 설계, 파생

개체 구성 – 기본키, 외래키, 일반

 

 

 

튜플 – 행, 속성의 모임, 카디널리티(기수, 대응수)

속성 – 가장 작은 논리적 단위, 디그리(차수)

 

무결성 – 데이터 값과 그것이 표현하는 현실세계의 실제 값이 일치하는 정확성

개체 무결성 -기본키는 NULL값이나 중복 X

도메인 무결성 – 속성의 값이 도메인에 속한 값

참조 무결성 – 외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일

사용자 정의 무결성 – 사용자가 정의한 제약 조건

 

데이터 무결성 강화 방법

애플리케이션 – 데이터 CRUD시 무결성 조건을 검증하는 코드 사용

트리거 – 트리거를 통해서 무결성 조건을 실행하는 절차형 SQL사용

제약조건 – 데이터 베이스에 제약조건 설정(복잡하게는 X)

 

관계대수 – 원하는 정보와 그 정보를 검색하기 위해서 유도하는 방식을 기술하는 절차적인 언어

순수 관계연산자 – SELECT PROJECT, JOIN, DIVISION

일반 집합 연산자 – UNION, UNION ALL INTERSECTION, DIFFERENCE, CARTESIAN PRODUCT

 

관계해석 – 코드(CODD)가 술어해석에 기반을 두고 제안, 비절차적 특성

튜플 관계해석, 도메인 관계 해석이 있음

관계 대수와 기능과 능력이 동등, 관계대수 -> 관계해석으로 표현 가능

 

카티션 프로덕트는 차수는 + 카디널리티는 곱

EX (차수, 카디) -> (3,3) x (4,4) -> (3+4, 3*4) -> (7,12)

 

정규화

1NF – 릴레이션의 모든 속성값이 원자 값으로 구성

2NF – 기본키가 아닌 모든 속성이 기본키에 완전 함수적 종속

3NF – 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않는 정규형

BCNF - 결정자가 모두 후보키인 정규형

4NF – 특정 속성 A에 다치종속이 성립시 해당 릴레이션의 모든 속성이 A에 함수적 종속관계

5NF – 릴레이션의 모든 조인 종속이 후보키를 통해서만 성립되는 정규형

 

비정규 > 도메인의 원자값 > 1NF

1NF > 부분적 함수 종속 제거 > 2NF

2NF > 이행적 함수 종속 제거 > 3NF

3NF > 결정자이면서 후보키가 아닌 것 제거 > BCNF

BCNF > 다치종속 > 4NF

4NF > 조인 종속성 > 5NF

 

반정규화

테이블 통합

테이블 분할(수평, 수직(갱신, 자주 조회, 크기가 큰, 보안 적용 속성))

중복 테이블 추가(집계, 진행, 특정부분)

중복속성 추가

테이블

일반

클러스터드 인덱스 테이블 – 기본키나 인덱스 키의 순서에 따라서 저장

파티셔닝 테이블 – 대용량 테이블을 논리적 단위인 파티션으로 나눈 테이블

범위분할, 해시분할, 조합 분할(범위 분할 후 해시분할)

외부 테이블 – 일반 테이블처럼 이용가능한 외부파일, 객체로 존재

임시테이블 – 트랜잭션, 세션 별 저장 및 처리 가능한 테이블 끝나면 사라짐

 

트랜잭션

원자성, 일관성, 독립성, 영속성

 

인덱스

트리기반 인덱스

비트맵 인덱스 – 분포도가 좋은 칼럼에 사용, 압축효율 좋음, 다중조건을 만족하는 튜플 계산에 적합

함수 기반 인덱스 – 값 대신 특정함수나 수식을 적용하여 산출된 값을 인덱스로 사용

비트맵 조인 인덱스 – 다수의 조인된 객체로 구성된 인덱스

도메인 인덱스 – 필요한 인덱스를 직접 만들어 사용

 

분포도 10~15%가 분포도가 좋다고 함 (분포도 = (조건에 맞는 로우수 / 테이블의 총 row 수 ) x100 )

 

 

 

분산데이터베이스

구성요소 (분산처리기, 분산데이터베이스, 통신 네트워크)

목표

위치 투명성 – 실제위치를 몰라도 논리적인 명칭만으로 액세스 가능

중복투명성 – 동일데이터가 여러 곳에 중복이더라도 사용자는 하나의 데이터만 존재하는 것처럼 사용하고 시스템은 자동으로 여러 자료에 대한 작업을 수행

병행투명성 – 다수의 트랜잭션이 동시 실현되더라도 트랜잭션 결과는 영향x

장애투명성 – 트랜잭션, dbms, 네트워크, 컴퓨터 장애가 있어도 트랜잭션 처리는 정확

 

분산 설계(테이블 위치 분산, 분할, 할당)

 

데이터 베이스 이중화 분류

Eager 기법 – 데이터 변경 시 모든 데이터 베이스에 전달하여 적용

Lazy 기법 – 트랜잭션 수행 종료 후 전달하여 적용

 

이중화 구성

활동-대기, 활동-활동

클러스터링 – 두대 이상의 서버를 하나의 서버처럼 운영하는 기술

고가용성 클러스터링 – 하나의 서버에 장애가 발생 -> 다른 서버가 처리(일반적으로 언급)

병렬 처리 클러스터링 – 전체 처리율을 위해 하나의 작업을 여러 서버가 분산하여 처리

 

 

 

 

접근 통제

임의 접근통제 – 사용자의 신원에 따라 접근 권한을 부여, grant와 revoke

강제 접근통제 - 주체와 객체의 등급 비교로 접근 권한을 부여

주체 등급 > 객체 등급 - 읽기 가능

주체 등급 = 객체 등급 - 읽고 쓰고 수정 가능

주체 등급 < 객체 등급 – 모두 불가능

 

접근 통제 3요소(접근통제 정책, 메커니즘, 보안모델)

접근 통제 정책(신분기반, 규칙 기반, 역할기반)

 

프로시저, 트리거, 사용자 정의 함수 예시

 

 

DBMS 접속기술

JDBC - java언어로 다양한 종류의 db에 접속 및 sql 수행하는 표준 api, 접속하려는 dbms에 대한 드라이버 필요

odbc - 표준 개방형 api, 개발언어와 관계없이 사용, 드라이버가 필요하지만 sql문 형태에 맞추어서 해당 dbms에 맞게 처리

mybatis - sql mapping 기반 오픈 소스 접속 프레임워크, jdbc 접속을 간소화 및 접속기능 강화, xml에 sql 적고 mapping 을 통해서 실행

 

동적 sql

sql 코드를 문자열변수에 넣어 처리

nvl 함수 사용필요 x

프리 컴파일할 때 구문분석, 접근권한확인 불가능

다양한 조건을 첨가하는 등의 유연한 개발 가능

 

DESCRIBE 명령어를 통해서 DDL로 작성된 테이블, 뷰 등을 확인가능 - EX) DESC 개체명

 

DCL 권한 조회

오라클 - SELECT * FORM DBA_ROLE_PRIVES WHERE GRANTEE = 사용자 < - 확인필요

MySQL - SHOW GRANTS FROM 사용자@호스트

 

ORM

객체지향 프로그래밍의 객체와 관계형 데이터베이스의 데이터 연결하는 기술

SQL코드를 직접 입력X, 선언문이나 할당 같은 부수적 코드X -> 직관적, 간단

 

ORM 프레임워크

JAVA - JPA, Hibernate, EclipseLink, DataNucleus, Ebean

C++ - ODB,QxOrm

Python - Django, SQLAlchemy, Storm

iOS - DatabasesObjects, Core Data

.NET - NHibernate, DatabaseObjects, Dapper

PHP - Doctrine, Propel, RedBean

 

성능 측정도구 APM

리소스 방식 - Nagios, Zabbix, Cacti

엔드투엔드 방식 - VisualVM, 제니터, 스카우트 어디서 본거 체크

 

옵티마이저

규칙기반- 개발자 숙력도

비용기반- 옵티마이저의 예측성능

 

실행계확

EXPLAIN 명령어를 통해서 실행계획 확인가능

실행 계획에 연산순서(조인, 테이블 검색, 필터, 정렬)

 

 

쿼리 성능 최적화

실행계획을 참고하여 SQL코드, 인덱스를 재구성

1. WHERE절을 통한 일부 레코드 조회 - 조회 비용 감소

2. WHERE절에 연산자 제거 (연산자의 경우 INDEX활용이 불가능) - INDEX 사용으로 조회 효율 상승

3. 인덱스 추가 및 변경 신중히 결정 - 인덱스는 다른 SQL문에도 영향을 주기 때문

4. 단일 인덱스로 쓰기나 수정없이 읽기만 할 경우 IOT 구성 고려 IOT란 - 인덱스안에 테이블 데이터를 직접 삽입 저장

5. 불필요한 인덱스 제거

 

개발환경 구축 개요

 

하드웨어 - WEB 서버, WAS 서버, DB 서버, FILE서버(DB에 저장하기에는 비효율적이나 서비스에는 필요한 파일 저장)

 

웹서버의 기능

HTTP/HTTPS 지원

통신기록 - 처리한 요청 로그 저장

정적 파일 관리 - HTML, CSS, IMG 등 정적 파일 저장

대역폭 제한 - 네트워크 트래픽 포화 방지를 위한 응답속도 제한

가상 호스팅 - 하나의 서버로 여러 개 도메인 연결

인증 - 사용자 합법적인지 확인

 

소프트웨어 환경

요구사항 관리 도구 - JIRA, IBM DOORS, inteGREAT, Trello, Reqtify

설계/모델링 도구 - DB Designer, PlatUML, ArgoUML

구현도구 - 이클립스, vscode, nodejs, netbeans, 인텔리제이

빌드 도구 - ant, Gradle, Maven, 젠킨스

테스트 - 앞에

형상관리 - git, subversion, cns, mercurial

 

 

서버 개발 언어와 서버개발 프레임워크

자바 - 스프링

자바스크립트 - nodejs

파이썬 - 디장고

PHP - Codeigniter

rudy - rudy on rails

 

배치 스케줄러

스프링 배치 job(수행할 작업), job lancher(실행을 위한 인터페이스), step(제어 정보), job repository(실행을 위한 모든 정보 저장)

Quartz - scheduler(실행환경관리), job(수행할 작업), jobdetail(job 상세 정보), trigger(실행 스케줄 정의)

 

c언어의 예약어 중 모르는

제어문 분기 - goto

자료형 - signed, struct, typeof, union, unsigned

기억 클랙스 - auto, extern, register

기타 - volatile

 

기억클래스

p556 표 그리기

 

비트연산자

& - 모든비트가 1일때만 1

^ - 모든비트가 같으면 0, 다르면 1

| - 모든 비트 중 한 비트라도 1 이면 1

~ - 각 비트의 부정, 0이면 1, 1이면 0

<< - 비트를 왼쪽으로 이동

>> - 비트를 오른쪽으로 이동

 

연산자 우선순위

1. 단항(!, ~, ++,--, sizeof)

2. 산술

3. 시프트(<<, >>)

4. 관계(<, > <=)

5. 비트 (&, ^, |)

6. 논리 (&&, ||)

7. 삼항 (? :)

8. 대입 (+=, -=)

9. 순서 (,)

 

 

 

 

포인터 공부 필요

절차적 프로그래밍 언어

C – 컴파일러 방식, 이식성 좋음, 고급, 저급 프로그램 언어 특징을 모두 갖춤

ALGOL – 수치 계산, 논리 연산을 위한 과학 기술 계산용 언어

COBOL – 사무처리용, 영어 문장 형식구성, 4개의 DIVISION

FORTRAN – 과학 기술 계산용 언어, 수학과 공학분야의 공식이나 수식과 같은 형태

 

객체지향 프로그래밍 언어

자바 – 분산네트워크 환경 적용 가능, 멀티스레드 기능 제공, 운영체제와 하드웨어에 독립적, 이식성 좋음, 캡슐화, 재사용 가능

C++ - C언어에 객체지향 개념 적용, 모든 문제를 개체로 모델링하여 표현

Smalltalk – 1세대 객체지향 프로그래밍 언어, 최초의 GUI 제공

 

객체지향 프로그래밍 언어으 구성요소

객체(속성+연산)

클래스(공통된 특성과 행위를 갖는 객체의 집합)

메시지(메서드를 일으키는 외부 요구사항)

 

객체지향 프로그래밍 언어의 특징

캡슐화, 정보은닉, 추상화, 상속성, 다형성

 

 

스크립트 언어

HTML 문서 안에서 직접 프로그래밍 언어를 삽입하여 사용하는 것

컴파일 X, 별도의 번역기가 소스를 분석하여 동작

 

서버용 스크립트 언어 – JSP, PHP, ASP, 파이썬

클라이언트용 – JAVA Script

 

선언형 언어

프로그램이 수행해야하는 문제를 기술하는 언어

- 함수형 언어 (LISP)

수학적 함수를 조합하여 문제 해결

알려진 값을 함수에 적용 기반

적용형 언어라고도 함

병렬 처리에 유리

재귀호출에 자주 이용

- 논리형 언어 (PROLOG)

논리 문장을 이용하여 프로그램 표현 및 계산

선언적 언어라고도 함

반복문이나 선택문을 사용하지 않음

비절차적 언어

선언형 프로그래밍 언어 종류

HTML, LISP, PROLOG, XML, Haskell(부작용 없는 함수형 프로그래밍 언어)

 

 

운영체제 성능평가

처리능력, 반환시간, 사용가능도, 신뢰도

 

운영체제 종류

윈도우 – GUI, 개인용 유닉스 – CLI, 서버용

리눅스 - CLI, 서버용 맥OS – GUI, 개인용

MS-DOS – CLI, 단일작업 처리 시스템용, 개인용

 

윈도우

GUI, 선점형 멀티태스킹,PnP(자동 감지 기능 EX) 주변장치),

OLE (다른 응용프로그램에서 작성된 개체를 현재 작성중인 문서로 자유롭게 연결, 삽입 가능),

VFAT응 이용 255자의 파일명,

한사람만 독점해서 사용(SINGLE-USER)

 

유닉스

대화식 운영체제, 개방형 시스템, C언어 기반 , 이식성 좋음, 장치, 프로세스간 호환 좋음, 많은 네트워킹 기능 제공, 트리구조 파일 시스템, 다중사용자

 

리눅스

리누스 토발즈, 유닉스 기반

MacOS

유닉스 기반, 드라이버 설치 및 install, uninstall 과정이 단순

기억장치의 관리 전략

보조기억장치의 프로그램이나 데이터를 주기억장치에 적재 시키는 시기 및 위치를 효율적으로 하기위한 전략

1. 반입전략

요구반입 – 실행중인 프로그램이 참조를 요구할 때 적재

예상반입 – 실행중인 프로그램에 의해 참조될 프로그램, 데이터를 미리 예상 후 적재

2. 배치전략

최초적합 – 들어갈 수 있는 크기의 빈 영역 중 첫번째 영역에 배치

최적적합 – 들어갈 수 있는 크기의 빈 영역 중 단편화가 가장적은 영역에 배치

최악적합 - 들어갈 수 있는 크기의 빈 영역 중 단편화가 가장 큰 영역에 배치

3. 교체전략

OPT(최적교체) - 가장오랫동안 사용하지 않을 페이지 교체, 벨레이디 제안

FIFO - 스택과 같음

LRU - 최근에 가장 오랫동안 사용하지 않은 페이지 교체

LFU - 사용빈도가 가장적은 페이지 교체

NUR - 최근에 사용하지 않은 페이지를 교체, LRU의 오버헤드를 줄임, 사용여부 확인을 위한 두개의 비트(참조, 변형)을 사용

변형쪽이 우선순위가 낮음

SCR(2차 기회 교체) - 가장오래있었던 주기억장치의 페이지 중 사용빈도가 높은 페이지 교체를 방지

 

가상기억 장치

보조기억장치의 일부를 주기억장치처럼 사용하는 기법

주소변환 작업이 필요

 

가상기억장치 기법 종류

페이징기법

가상기억장치에 보관된 프로그램과 주기억장치의 영역을 동일한 크기로 나눈뒤 적재시켜 실행하는 기법

나눈 단위 - 페이지, 주기억장치의 단위를 페이지 프레임이라고 함

내부 단편화 발생가능

주소변환을 위한 페이지 맵 테이블 필요

 

세그먼테이션기법

가상기억장치에 보관된 프로그램을 다양한 크기의 논리적인 단위로 나눈후 주기억장치에 적재시켜 실행하는 기법

각 세그먼트 마다 고유의 이름과 크기

기억장치의 사용자 관점을 보존하는 기억장치 관리 기법

세그먼트 맵 테이블 필요

세그먼트영역 침범방지를 위해서 기억장치 보호키 필요

외부 단편화 발생가능

 

가상기억장치 구현 시 시스템 성능에 영향을 미치는 것

1. 페이지 크기

작을수록 단편화 감소, 주기억장치로 이동 시간 감소, 불필요한 내용X -> 효율적인 워킹 셋 유지, 페이지 맵 데이터가 커지고 매핑 속도 감소

 

2.LOCALITY(지역성, 국부성)

참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론

데닝의 구역성 개념 증명 -> 캐시메모리 시스템의 이론적 근거

시간 구역성(하나의 페이지를 일정시간동안 집중적으로 액세스하는 현상) - LOOP, 스택, 부 프로그램, 집계사용함수, 1씩증가 등

공간구역성(일정 위치의 페이지를 집중적으로 액세스하는 현상) - 배열순회, 순차적 코드, 같은영역에 있는 변수 참조 등

 

3. 워킹셋

일정시간 동안 자주 참조하는 페이지들의 집합

시간에 따라 자주 참조하는 페이지들의 집합이 변화 -> 워킹 셋 변화

 

4.페이지 부재 빈도 방식

페이지 부재 율에 따라 주기억장치의 프레임 수를 늘리거나 줄여 부재율을 적정 수준으로 유지하는 방식

 

5. 프리 페이징

필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 방법

 

6. 스래싱

프로세스 처리시간보다 페이지 교체에 소요되는 시간이 더 많아 지는 현상

다중 프로그래밍 정도와 CPU 사용율이 비례하다 어느 수준에 도달하면 스래싱이 나타난다.

 

 

 

 

 

 

 

 

 

PCB(프로세스 제어 블록)

프로세스의 현재상태, 포인터(부모, 자식, 위치한 메모리, 할당된 자원), 고육식별자, 스케줄링 및 프로세스의 우선순위,

CPU 레지스터 정보, 주기억장치 관리 정보(기준 레지스터, 페이지 테이블), 입출력 상태 정보, 계정정보(CPU사용시간, 한정시간)

 

프로세스 상태

제출, 접수, 준비, 실행, 대기(보류, 블록), 종료

 

프로세스 상태 전이 관련 용어

dispatch - 준비 상태의 프로세스 중 하나가 프로세서 할당 받아 실행

wake up - 대기 상태에서 준비상태가 되는 과정

spooling - 입출력 장치의 처리속도 보완 및 시스템 성능향상을 위해 처리할 데이터를 한꺼번에 디스크에 저장

 

스케줄링 종류

장기 - 프로세스를 결정하여 준비상태 큐로 보내는 작업

중기 - 어떤 프로세스가 CPU를 할당 받을지 결정하는 작업, 프로세스가 많으면 일시보류 후 활성화해서 처리

단기 - CPU할당 시기와 특정 프로세스를 지정하는 작업

 

문맥교환

하나의 프로세스에서 다른 프로세서로 CPU가 할당되는 과정에서 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고

새로운 프로세스의 상태 정보를 설정한후 할당 실행되도록 하는 작업

 

비선점 스케줄링

이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법

등답 시간 예측 용이, 일괄처리 방식에 적합, 공정하게 처리

FIFO, FCFS, SJF, HRN, 기한부, 등의 알고리즘

SJF – CPU 점유시간이 가장 짧은 프로세스에 먼저 할당

HRN – 우선순위 = (대기시간 + 서비스 시간) / 서비스 시간의 에이징 기법으로 할당

(에이징은 기다린 시간에 비례한 우선순위 부여)

 

선점 스케줄링

우선순위가 높은 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법

빠른 응답 -> 대화식 시분할 시스템에 사용, 많은오버헤드, 인터럽트용 타이머 클록 필요(장치 감시를 위한 주기적 신호 발생시크는 것 - 자원독점 방)

Round Robin, SRT, 다단계 큐, 다단계 피드백 큐 알고리즘

SRT – SJF +선점형의 중요한 프로세스가 있으면 먼저 실행시키는 권한

RR(Round Robin) – 우선순위 x 순서대로 할당

MQL(단단계 큐) – 프로세스를 특정 그룹으로 분류, 그룹에 따라 각기 다른 준비 상태 큐, 큐에 들어가면 다른 큐로 이동 불가, 각 큐에서는 RR 기법 적용

 

 

 

 

 

 

인터넷

ip주소

A클래스 - 국가나 대형 통신망 - 0~127로 시작

B클래스 - 중대형 통신망 - 128~191

C클래스 - 소규모 - 192~223

D클래스 - 멀티캐스트용- 224~239

E클랙스 - 실험적 주소

 

서브네팅

할당된 네트워크 주소를 다시 여러개의 작은 네트워크로 나누어 사용

서브넷 마스크 - 네트워크 주소와 호스트 주솔ㄹ 구분하기 위한 비트, 이를 변경하여 주소를 여러개로 분할 사용

 

IPv6

주소 부족 문제 해결하기 위해 개발

128비트 사용가능, 자료전송 속도빠름

인증성, 기밀성, 데이터무결성의 지원으로 보안 문제 해결

ipv4와 호환성 좋음

주소 확장성, 융통성, 연동성 뒤어남, 실시간 흐름제어로 향상된 멀티미니어 기능 지원

트래픽 클래스(패킷의 클래스나 우선순위를 나타내는 필드)와 플로우 레이블(패캣들의 흐름에 대한 특성을 나타내는 필드)를 이용

등급별, 서비스별로 패킷 구분하여 품질보장에 용이

16비트씩 8부분, 16진수로 표현, 세가지 주소체계(유니캐스트, 멀티캐스트, 애니캐스트)

 

도메인 네임

ip를 이해하기 쉬운 문자로 표현

호스트 컴퓨터 이름, 소속기관명, 기관종류, 소속 국가명 순

도메인 -> ip 주소로 변환 -> DNS가 담당

 

OSI참조모델 (ISO가 제안한 통신규약)

7단계표준화(프로토콜 데이터 단위)

물리(비트) - 데이터 링크(프레임) - 네트워크(패킷) - 전송(세그먼트) - 세션(메세지) - 표현(메세지) - 응용(메세지)

 

물리계층 - 기계적, 전기적, 기능적, 절차적 규칙 정의 - 리피터, 허브

데이터 링크 계층 - 신뢰성, 효율적인 정보 전송, 흐름제어 기능, 프레임 동기화, 오류 제어, 순서제어, HDLC, LAPB, LLC, MAC, LAPD, PPP 등의 표준 - 랜카드, 브리지, 스위치

네트워크 계층 - 네트워크 연결 관리, 데이터 교환 및 중계 경로설정, 트래픽 제어, 패킷 정보 전송 수행 - 라우터

전송계층 - 논리적 안정, 균일한 데이터 전송 서비스 제공 -> 종단 시스템 간에 투명한 데이터 전송, 하위, 상위 3계층의 인터페이스 담당, 주소설정, 다중화, 오류제어, 흐름제어 수행 -게이트 웨이

세션계층 - 송수신 간의 관계성 유지, 대화제어, 동기점을 통해 정보의 수신 상태를 체크, 데이터 회복을 위한 동기점에는 소동기점과 대동기점이 있음

표현계층 - 응용 계층의 데이터를 통신에 적당한 형태로 변환, 세션 계층의 데이터를 응용계층에 맞게 변환, 코드 변환, 데이터 암호화, 데이터 압축, 포맷 변환 등

응용계층 - 사용자가 OSI환경에 접근할 수 있도록 서비스 제공, 정보 교환 사서함, 파일전송 등의 서비스 제공

 

 

프로토콜

서로 다른 기기들간 데이터 교환을 원활하게 수행할 수 있도록 표준화 시켜 놓은 통신 규약

 

프로토콜 기본 요소

구문 - 존송하고자하는 데이터 형식, 보호화, 신호 레벨 등 규정

의미 - 협조사항과 오류관리를 위한 제어정보 규정

시간 – 두 기기 간의 통신속도, 메세지 순서 제어등을 규정

 

TCP/IP

표준 프로토콜, TCP +IP 형태

TCP

OSI 전송계층에 해당

패킷의 다중화, 순서 제어, 오류제어, 흐름제어 가능 제공

스트림 전송 기능 제공

연결성 서비스 제공

IP

OSI 네트워크 계층에 해당

비연결성 서비스 제공

 

 

 

 

 

 

응용계층의 주요 프로토콜

FTP - 원격 파일 전송 프로토콜

SMTP - 전자 우편 교환

TELNET - 원격 사용 서비스, 가상 터미널 기능 수행

SNMP - 네트워크 관리 프로토콜, 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는데 사용

DNS - 도메인 네임을 IP 주소로 매핑하는 시스템

HTTP - 월드 와이드 웹에서 HTTP 문서 송수신을 위한 프로토콜

 

전송 계층의 주요 프로토콜

TCP- 양방향 연결, 가상 회선 연결, 스트림 위주 전달, 패킷 분실, 손상, 지연, 순서 등 발생시 투명성 보장

UDP - 비연결형 서비스, 단순한 헤더, 오버헤드 작음, 빠른 속도가 필요할 떼, 동시 여러 유저 전송, 정기적 반복 전송 시 사용, 실시간 전송에 유리

RTCP - 패킷 전송 품질 제어 프로토콜, 세션 참여자에게 주기적 제어 정보 전송, 데이터 패킷과 제어 패킷의 다중화 제공, 최소한의 제어와 인증 기능만 제공, 항상 32비트의 경계로 끝남

 

인터넷 계층의 주요 프로토콜

IP - 전송 데이터에 주소 지정, 경로 설정 기능, 비 연결 데이터 그램 방식

ICMP – 통신 중 발생하는 오류 처리와 전송경로 변경 등을 위한 제어 메시지를 관리하는 역할, 8바이트로 구성

IGMP - 멀티 캐스트 그룹 유지

ARP - 호스트의 IP주소를 물리적 주소로 변경

RARP - 물리적 주소를 호스트의IP 주소로 변경

 

소프트웨어 개발 방법론

개발, 유지보수 등에 필요한 일들의 수행방법, 효율적 수행 과정에 필요한 각종 기법 및 도구를 정리, 표준화

1.구조적 방법론

정형화된 분석 절차 -> 요구사항 파악 및 문서화 – 처리 중심의 방법론

쉬운 이해 및 검증이 가능한 프로그램 코드 생성이 목적, 분할과 정복 원리

2.정보공학 방법론

정형화된 기법들을 통합 및 적용하는 자료 중심의 방법론

개발 주기를 이용 -> 대규모 정보시스템 구축에 적합

객체지향 방법론

개체를 조립하여 소프트웨어를 구현하는 방법론

컴포넌트 기반

컴포넌트를 조립하여 애플리케이션을 만드는 방법론

애자일 방법론

일정한 주기를 반복하면서 개발 과정을 진행하는 방법론

소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합

익스트림 프로그래밍, 스크럼, 칸반, 크리스탈 등이 있음

제품 계열 방법론

특정 제품에 적용하고자 하는 공통된 기능을 정의하여 개발하는 방법론

영역광학- 핵심 자산을 구현하는 영역

응용공학 – 제품을 구현하는 영역

 

 

 

소프트웨어 비용 결정 요소

프로젝트 요소 – 제품 복잡도, 시스템 크기, 요구되는 신뢰도(일정기간내 필요한 기능수행 정도)

자원 요소 – 인적자원, 하드웨어 자원, 소프트웨어 자원

생산성 요소 – 개발자 능력, 개발 기간

 

비용 산정 기법

하향식

전문가 감정기법(두 명 이상의 전문에게 의뢰)

델파이기법(많은 전문가의 의견 종합)

상향식

LOC(원시 코드 라인 수)기법 – 원시 코드 라인 수를 비관치, 낙관치, 기대치를 측정 후 예측치 구함 ( 예측치 = (낙관치 + 4*기대치+ 비관치 / 6) )

개발 단계별 인원수 기법 - 기능구현 시 필요한 노력을 생명주기 각 단계별 산정

 

수학적 산정 기법 -상향식

개발 비용 산정 자동화가 목표

과거 유사한 프로젝트를 기반으로 경험적으로 유도

 

COCOMO 모형 - 보헴

LOC 기반 비용 산정 기법

소프트웨어의 종류에 다라 다르게 책정되는 방정식 이용해서 산정

규모가 같아도 그 성격에 따라서 비용이 다르게 선정

비용 산정 결과는 노력으로 나타남

규모

조직형 - 5만 라인 이하 (2.4, 1.05, 2.5, 0.38)

반분리형 – 30만 라인 이하 (3.0, 1.12, 2.5, 0.35)

내장형 – 30만 라인 이상 (3.6, 1.20, 2.5, 0.32)

 

노력(MM) = x1 x (KDIS)^x2

개발기간(TDEV) = x3 x (MM)^x4

 

종류

기본형 – 크기와 개발 유형만

중간형 – 기본 공식에 4가지 특성의 15가지 요인에 의해 비용을 산정

1.제품의 특성 (요구되는 신뢰도, 데이터베이스 크기, 제품의 복합도)

2.컴퓨터의 특성 (수행시간의 제한, 기억장소의 제한, 가상기계의 안정성, turn around time)

3.개발요원의 특성 (분석가의 능력, 개발 분야의 경험, 가상기계 경험, 프로그래머 능력, 언어의 경험)

4.프로젝트 특성(소프트웨어 도구의 이용, 개발일정, 최신 기법의 이용)

노력 = 기본 공식 x 요인별 노력 승수

발전형 – 개발 공정별로 보다 자세하고 정확하게 노력을 산출하여 비용을 산정

노력 승수 = 개발 공정별 노력 승수 x 개발 공정별 가중치

 

 

 

 

Putnam 모형

소프트웨어 생명주기의 전 과정 동안에 사용될 노력이 분포를 가정해주는 모형

생명 주기 예측 모형

Rayleigh -norden 고선의 노력 분포도를 기초로 함

개발 노력 = 원시코드 라인수^3 / (환경상수^3*개발기간^4)

 

기능점수 모형(FP)

알브레히트 제안

소프트웨어 기능을 증대시키는 요인별 가중치 부여, 합산하여 총 기능점수 산출

기능점수와 영향도를 이용해서 기능 점수를 구함

기능점수 = 총기능점수 x[0.65 + (0.1 x 총 영향도)]

 

자동화 추정도구

SLIM – PUTNAM + RAYLEGIGH 곡선을 기초

ESTIMACS – FP 모형 기초

 

가상기억 장치

보조기억장치의 일부를 주기억장치처럼 사용하는 기법

주소변환 작업이 필요

 

가상기억장치 기법 종류

페이징기법

가상기억장치에 보관된 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 뒤 적재시켜실행하는 기법

나눈 단위 - 페이지, 주기억장치의 단위를 페이지 프레임이라고 함

내부 단편화 발생가능

주소변환을 위한 페이지 맵 테이블 필요

 

세그먼테이션기법

가상기억장치에 보관된 프로그램을 다양한 크기의 논리적인 단위로 나눈후 주기억장치에 적재시켜 실행하는 기법

각 세그먼트 마다 고유의 이름과 크기

기억장치의 사용자 관점을 보존하는 기억장치 관리 기법

세그먼트 맵 테이블 필요

세그먼트영역 침범방지를 위해서 기억장치 보호키 필요

외부 단편화 발생가능

 

페이지 교체 알고리즘

OPT(최적교체) - 가장오랫동안 사용하지 않을 페이지 교체, 벨레이디 제안

FIFO

LRU - 최근에 가장 오랫동안 사용하지 않은 페이지 교체

LFU - 사용빈도가 가장적은 페이지 교체

NUR - 최근에 사용하지 않은 페이지를 교체, LRU의 오버헤드를 줄임, 사용여부 확인을 위한 두개의 비트(참조, 변형)을 사용

변형쪽이 우선순위가 낮음

SCR(2차 기회 교체) – 가장 오래 있었던 주기억장치의 페이지 중 사용빈도가 높은 페이지 교체를 방지

 

 

가상기억장치 구현시 시스템 성능에 영향을 미치는 것

1. 페이지 크기

작을수록 단편화 감소, 주기억장치로 이동 시간 감소, 불필요한 내용X -> 효율적인 워킹셋 유지, 페이지 맵 데이터가 커지고 매핑속도 감소

 

2.LOCALITY(지역성, 국부성)

참조할 때 일부 페이지만 집중저으로 참조하는 성질이 있다는 이론

데닝의 구역성 개념 증명 -> 캐시메모리 시스템의 이론적 근거

시간 구역성(하나의 페이지를 일정시간동안 집중적으로 액세스하는 현상) - LOOP, 스택, 부 프로그램, 집계사용함수, 1씩증가 등

공간구역성(일정 위치의 페이지를 집중적으로 액세스하는 현상) - 배열순회, 순차적 코드, 같은영역에 있는 변수 참조 등

 

3. 워킹셋

일정시간 동안 자추 참조하는 페이지들의 집합

시간에 따라 자주 참조하는 페이지들의 집합이 변화 -> 워킹셋 변화

 

4.페이지 부재 빈도 방식

페이지 부재 율에 따라 주기억장치의 프레임 수를 늘리거나 줄여 부재율을 적정 수준으로 유지하는 방식

 

5. 프리페이징

필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 방법

 

 

6. 스래싱

프로세스 처리시간보다 페이지 교체에 소요되는 시간이 더 많아 지는 현상

다중 프로그래밍 정도와 CPU 사용율이 비례하다 어느 수준에 도달하면 스래싱이 나타난다.

 

PCB(프로세스 제어 블록)

프로세스의 현재상태, 포인터(부모, 자식, 위치한 메모리, 할당된 자원), 고육식별자, 스케줄링 및 프로세스의 우선순위,

CPU 레지스터 정보, 주기억장치 관리 정보(기준 레지스터, 페이지 테이블), 입출력 상태 정보, 계정정보(CPU사용시간, 한정시간)

 

프로세스 상태

제출, 접수, 준비, 실행, 대기(보류, 블록), 종료

 

프로세스 상태 전이 관련 용어

dispatch - 준비 상태의 프로세스 중 하나가 프로세서 할당 받아 실행

wake up - 대기 상태에서 준비상태가 되는 과정

spooling - 입출력 장치의 처리속도 보완 및 시스템 성능향상을 위해 처리할 데이터를 한꺼번에 디스크에 저장

 

스케줄링 종류

장기 - 프로세스를 결정하여 준비상태 큐로 보내는 작업

중기 - 어떤 프로세스가 CPU를 할당 받을 지 결정하는 작업, 프로세스가 많으면 일시보류 후 활성화해서 처리

단기 - CPU할당 시기와 특정 프로세스를 지정하는 작업

 

문맥교환

하나의 프로세스에서 다른 프로세서로 CPU가 할당되는 과정에서 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고

새로운 프로세스의 상태 정보를 설정한후 할당 실행되도록 하는 작업

 

비 선점 스케줄링

이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법

응답 시간 예측 용이, 일괄처리 방식에 적합, 공정하게 처리

FCFS, SJF, HRN, 기한부, 등의 알고리즘

 

선점 스케줄링

우선순위가 높은 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법

빠른 응답 -> 대화식 시분할 시스템에 사용, 많은 오버헤드, 인터럽트용 타이머 클록 필요(장치 감시를 위한 주기적 신호 발생시키는 것 - 자원독점 방)

Round Robin, SRT, 다단계 큐, 다단계 피드백 큐 알고리즘

 

인터넷

ip주소

A클래스 - 국가나 대형 통신망 - 0~127로 시작

B클래스 - 중대형 통신망 - 128~191

C클래스 - 소규모 - 192~223

D클래스 – 멀티 캐스트용- 224~239

E클랙스 - 실험적 주소

 

서브네팅

할당된 네트워크 주소를 다시 여러개의 작은 네트워크로 나누어 사용

서브넷 마스크 - 네트워크 주소와 호스트 주소를 구분하기 위한 비트, 이를 변경하여 주소를 여러개로 분할 사용

 

IPv6

주소 부족 문제 해결하기 위해 개발

128비트 사용가능, 자료전송 속도빠름

인증성, 기밀성, 데이터 무결성의 지원으로 보안 문제 해결

ipv4와 호환성 좋음

주소 확장성, 융통성, 연동성 뛰어남, 실시간 흐름제어로 향상된 멀티미디어 기능 지원

트래픽 클래스(패킷의 클래스나 우선순위를 나타내는 필드)와 플로우 레이블(패캣들의 흐름에 대한 특성을 나타내는 필드)를 이용

등급별, 서비스별로 패킷 구분하여 품질보장에 용이

 

16비트씩 8부분, 16진수로 표현, : 으로 구분, 세가지 주소체계(유니캐스트, 멀티캐스트, 애니캐스트)

 

도메인 네임

ip를 이해하기 쉬운 문자로 표현

호스트 컴퓨터 이름, 소속기관명, 기관종류,소속 국가명 순

도메인 -> ip 주소로 변환 -> DNS가 담당

 

OSI참조모델 (ISO가 제안한 통신규약)

7단계표준화(프로토콜 데이터 단위)

물리(비트) - 데이터 링크(프레임) - 네트워크(패킷) - 전송(세그먼트) - 세션(메세지) - 표현(메세지) - 응용(메세지)

 

물리계층 - 기계적, 전기적, 기능적, 절차적 규칙 정의 - 리피터, 허브

데아터 링크 계층 - 신뢰성, 효율적인 정보 전송, 흐름제어 기능, 프레임 동기화, 오류 제어, 순서제어, HDLC, LAPB,LLC,MAC,LAPD,PPP 등의 표준 - 랜카드, 브리지, 스위치

네트워크 계층 - 네트워크 연결 관리, 데이터 교환 및 중계 경로설정, 트래픽제어, 패킷 정보 전송 수행 - 라우터

전송계층 - 논리적 안정, 균일한 데이터 전송 서비스 제공 -> 종단 시스템간에 투명한 데이터 전송, 하위,상위 3계층의 인터페이스 담당,주소설정, 다중화,오류제어, 흐름제어 수행 -게이트 웨이

세션계층 - 송수신 간의 관계성 유지, 대화제어, 동기점을 통해 정보의 수신 상태를 체크, 데이터 회복을 위한 동기점에는 소동기점과 대동기점이 있음

표현계층 - 응용 계층의 데이터를 통신에 적당한 형태로 변환, 세션 계층의 데이터를 응용계층에 맞게 변환, 코드 변환, 데이터 암호화, 데이터 압축, 포맷 변환 등

응용계층 - 사용자가 OSI환경에 접근할 수 있도록 서비스 제공, 정보 교환 사서함, 파일전송 등의 서비스 제공

 

프로토콜

서로 다른 기기들간 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약

 

프로토콜 기본 요소

구문 - 전송하고자하는 데이터 형식, 보호화, 신호 레벨 등 규정

의미 - 협조사항과 오류관리를 위한 제어정보 규정

시간 - 두기기 간의 통신속도, 메세지 순서 제어등을 규정

 

TCP/IP

표준 프로토콜, TCP +IP 형태

 

TCP

OSI 전송계층에 해당

패킷의 다중화, 순서 제어, 오류제어, 흐름제어 가능 제공

스트림 전송 기능 제공

연결성 서비스 제공

 

IP

OSI 네트워크 계층에 해당

비연결성 서비스 제공

 

응용계층의 주요 프로토콜

FTP - 원격 파일 전송 프로토콜

SMTP - 전자 우편 교환

TELNET - 원격 사용 서비스, 가상 터미널 기능 수행

SNMP - 네트워크 관리 프로토콜, 네트워크 기기의 네트워크 정보를 네트워크 관리 시스템에 보내는데 사용

DNS - 도메인 네임을 IP 주소로 매핑하는 시스템

HTTP - 월드 와이드 웹에서 HTTP 문서 송수신을 위한 프로토콜

 

전송 계층의 주요 프로토콜

TCP- 양방향 연결, 가상 회선 연결, 스트림 위주 전달, 패킷 분실, 손상, 지연, 순서 등 발생시 투명성 보장

UDP - 비연결형 서비스, 단순한 헤더, 오버헤드 작음, 빠른 속도가 필요할 떼, 동시 여러 유저 전송, 정기적 반복 전송 시 사용, 실시간 전송에 유리

RTCP - 패킷 전송 품질 제어 프로토콜, 세션 참여자에게 주기적 제어 정보 전송, 데이터 패킷과 제어 패킷의 다중화 제공, 최소한의 제어와 인증 기능만 제공, 항상 32비트의 경계로 끝남

 

인터넷 계층의 주요 프로토콜

IP - 전송 데이터에 주소 지정, 경로 설정 기능, 비 연결 데이터 그램 방식

ICMP - 통신 중 발생하는 오류 처리와 전송경로 변경 등을 위한 제어 메시지를 관리하는 역할, 8바이트로 구성

IGMP - 멀티 캐스트 그룹 유지

ARP - 호스트의 IP주소를 물리적 주소로 변경

RARP - 물리적 주소를 호스트의IP 주소로 변경

 

 

 

 

 

 

 

 

 

 

 

UML 확장모델 표현 기호들

자료사전 기호

UML 모델

구조 다이어그램 (클래스, 객체, 복합체, 배치, 컴포넌트, 패키지)

행위 다이어그램 (활동, 상태머신, 유스케이스, 상호 작용(순차, 상호작용 개요, 통신, 타이밍 다이어))

 

 

Hipo

시스템 분석 및 설계나 문서화 할대 상요되는 기법으로 입력, 처리, 출력의 기능을 나타냄

하향식 소프트웨어 개발

 

객체지향 분석 방법론

럼바우 – 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링

, 분석활동을 객체, 동적, 기능 모델로 나누어 수행

coad와 yourdon 방법 – E-R 다이어그램을 사용 객체의 행위를 모델링하며 연산과 메시지 연결 정의 등의 과정으로 구성하는 방법

booch방법 – 미시적, 거시적 개발 모드 사용, 클래스와 객체들을 분석 및 식별하고 클래스의 속성과 연산을 정의

jacobson 방법 – 유스 케이스를 강조하는 분석방법

wirfs-brocks방법 – 분석과 설계간 구분이 없고 고객명세서를 평가해서 설계작업까지 연속적으로 수행

 

트리 순회

전위 순회

중위 순회

 

후위 순회

레벨 순회

소스코드 품질분석 도구(정적)

 

병행제어의 로킹

병행제어에서 한꺼번에 로킹할 있는 단위이다.

데이터베이스, 파일, 레코드, 필드 등은 로킹 단위가 있다.

로킹 단위가 크면 로크 수가 작아 관리하기 쉽지만 병행성 수준이 낮아지고, 로킹 단위가 작으면 로크 수가 많아 관리하기 복잡하지만 병행성 수준이 높아진다.

교착상태 발생 조건

상호배제, 점유와 대기, 비 선점, 환형대기

교착상태 해결 방법

예방, 회피(자원할당, 은행원 알고리즘), 회복, 무시

스택가드

스택 가드란, 해당 프로그램 구동시 Stack 상에 일정한 주소번지에 프로그램이 선언한 canary를 심어 두어, 스택의 변조된 경우에, canary를 체크하여 프로그램이 비정상적으로 종료시키는 기법

스택 쉴드

스텍 쉴드는 함수의 리턴 주소를 복사하여 실제 리턴 주소를 참조하지 않고 복사된 함수의 리턴 주소를 사용하는 방식이다.

실제 리턴 주소와 복사된 주소는 참조되지 않으므로 리턴 주소를 변조하는 것이 불가능하다.

하지만 안전한 장소로 함수의 리턴 주소를 복사하는 과정에서 프로그램의 성능이 다소 떨어질 수 있다.

백도어 탐지기법

1. 현재 동작중인 프로세스 및 열린 포트 확인

2. SetUID 파일 검사

3. 바이러스 및 백도어 탐지 툴 사용

4. 무결성 검사

5. 로그분석

 

 

 

tripwire

파일 시스템 무결성 점검하는 보안 도구

Udpdump

명령 줄에서 살행하는 일반적인 패킷 가로채기 소프트웨어

비컨

근거리에 있는 스마트 기기를 자동으로 인식하여 필요한 데이터를 전송할 수 있는 무선 통신 장치(블루투스 비콘) - 최대 50m

C-BRAIN

최초의 MS-DOS 용 컴퓨터 바이러스, 파일시스템으로 포맷된 기억매체의 시동 섹터 감염

트로이 목마

악성 루틴이 숨겨진 프로그램, 겉으로는 정상적이나 실행하면 악성코드 실행, 백도어로 사용

브룩스의 법칙

지체되는 소프트웨어 개발 프로젝트에 인력을 더하는 것은 개발을 늦출 뿐이다"라고 주장한 법칙

CASE

소프트웨어 생명 주기의 전체 단계를 연결해 주고 자동화해주는 통합된 도구를 제공해주는 기술

주요기능 – 전 생명주기 전 단계 연결, 다양한 개발모형 지원, 그래픽 지원

분류

Upper CASE – 생명 주기의 전반부에 사용, 문제를 기술하고 계획하며 요구 분석과 설계 단계를 지원

Lower CASE – 생명주기 하반부에 사용, 코드의 작성과 테스트 문서화하는 과정 지원

Intergrate CASE – 생명 주기에 포함되는 전체 과정 지원

 

 

데이터 처리 소요 시간 O(Nlog2N)

관계대수

트랜잭션 특성

CMM 모델의 레벨

SPICE

라우팅 프로토콜

애자일 소프트웨어 공학

맴리스터

소프트웨어 품질 측정 개발자관점

XP의 5가지 가치

미들웨어

'자격증 공부' 카테고리의 다른 글

제 34 회 SQL 개발자 시험 합격  (0) 2021.02.15
정보처리기사 실기 합격  (0) 2021.02.15
정보처리기사 필기 합격  (0) 2021.02.15