기타내용

정보처리기사 필기 요약

k9e4h 2021. 4. 14. 12:57

2과목 소프트웨어 개발

 

1. 자료구조의 분류

- 선형구조 : 배열, 스택, 큐, 데크, 선형리스트

- 비선형구조 : 트리, 그래프

 

2. 트리

- Node와 Branch를 이용하여 사이클을 이루지 않도록 구성한 그래프의 특수한 형태

- Degree(차수) : 각 노드에서 뻗어나온 가지의 수

- Terminal Node(단말 노드) : 자식이 없는 노드, Degree가 0인 노드

 

3. 그래프

- 방향 그래프

  : 정점을 연결하는 선에 방향이 있는 그래프

  : n개의 정점으로 구성된 방향 그래프의 최대 간선수 n(n-1)

- 무방향 그래프

  : 정점을 연결하는 선에 방향이 없는 그래프

  : 최대 간선수 n(n-1)/2

 

4. 데이터베이스 - 데이터 종류

  : 공용 데이터( shared ) : 여러 응용 시스템들이 공동으로 소유하고 유지하는 재료

  : 통합된 데이터 ( integrated) : 자료의 중복을 최대로 배제한 데이터의 모임

  : 운영데이터( Operational) : 고유한 업무를 수행하는데 없어서는 안될 자료

  : 저장된 데이터( Store ) : 컴퓨터가 접근할 수 있는 저장 매체에 저장된 자료


5. 트랜잭션의 등장(ACID)

- Atomicity(원자성) : 트랜잭션 연산을 데이터베이스에 모두 변경 또는 반영하지 말아야함 ( All or Nothing )

- Consistency(일관성) : 트랜잭션 실행을 성공적으로 완료할 시 일관성있는 데이터베이스 상태를 유지

- Isolation(독립성) : 둘 이상 트랜잭션의 동시 실행시 한 개의 트랜잭션만 접근이 가능하여 간섭 불가

 

6. 프로시저 : 미리 저장해놓은 SQL 실행, 한개 이상의 값 반환 혹은 아예 하지 않음

사용자 정의 함수 : 예약어 return을 통해처리 결과를 단일값으로 반환

 

7. 소프트웨어 패키징

- 모듈별로 생성한 실행 파일들을 묶어 배포용 설치파일을 만드는 것

- 개발자가 아닌 사용자를 중심으로 진행

- 기능 식별 -> 모듈화 -> 빌드 진행 -> 사용자 환경 분석 -> 패키징 및 적용 시험 -> 패키징 변경 배포 -> 배포

- 고려사항 : 보안, 복잡성 및 비효율성 문제, 암호화 알고리즘, 다양한 이기종 연동

 

8. 릴리즈 노트 작성 순서

 모듈 식별 -> 릴리즈 정보 확인 -> 릴리즈 노트 개요 작성 -> 영향도 체크 -> 정식 릴리즈 노트 작성 -> 추가 개선 -> 항목 실별

 

9. 디지털 저작관 관리(DRM : Digital Right Management)

- 콘텐츠 제공자

- 콘텐즈 분배자

- 콘텐츠 소비자

- 패키저 : 콘텐츠를 메타 데이터와 함께 배포 가능한 형태로 묶어 암호화하는 프로그램

- 클리어링 하우스(clearing house) : 저작권에 대한 사용 권한, 라이선스 발급, 사용량에 따른 결제관리 등을 수행하는 곳

- DRM 컨트롤러 : 배포된 콘센트의 이용 권한을 통제하는 프로그램

- 보안 컨테이너 : 콘텐츠 원본을 안전하게 유통하기 위한 보안 장치

 

10. 디지털 저작권 관리의 기술 요소

- 암호화, 키 관리, 식별기술, 저작권 표현, 암호화 파일 생성, 정책 관리, 크랙 방지, 인증

 

11. 프로그램 실행 여부에 따른 테스트

- 정적 테스트 : 프로그램을 실행하지 않고 명세서나 소스코드를 대상으로 분석하는 테스트 

  : 워크 스루, 인스펙션, 코드 검사

- 동적 테스트 : 프로그램을 실행하여 오류를 찾음

  : 화이트 박스 테스트, 블랙 박스 테스트

 

12. 목적에 따른 테스트

 - 회복테스트, 안전테스트, 강도테스트, 성능테스트, 구조테스트, 병행 테스트

 - 회귀 테스트 : 변경된 코드에 새로운 결함이 없음을 확인하는 테스트

 

13. 화이트 박스 테스트

 - 모듈안의 내용(작동)은 직접 볼수 있음

 - 내부의 논리적인 모든 경로를 테스트

 - 소스코드의 모든 문장을 한번 이상 수행

 - 선택, 반복 등의 부분을 수행함으로써 논리적 경로 점검

 - 기초 경로 검사, 제어 구조 검사( 조건 검사, 루프 검사, 데이터 흐름 검사)

 

14. 블랙 박스

 - 모듈 안에서 어떤 일(작동)이 일어나는지 알 수 없음

 - 소프트웨어가 수행할 특정 기능을 알기 위해 각 기능이 완전히 작동 되는 것을 입증하는 테스트로 기능 테스트 라고도 함

 - 소프트웨어 인터페이스에서 실시되는 테스트

 - 동치분할 검사, 경계값 분석, 비교 검사, 오류 예측 검사, 원인-효과 그래프 검사

 

15. 단위 테스트

- 최소단위인 모듈이나 컴포넌트에 초점을 맞추어 테스트

- 주로 구조기반 테스트( 명세기반 or rnwhrlqks)

 

16. 통합 테스트( Integration Test)

 - 단위 테스트가 완료된 모듈을 결합하여 하나의 시스템으로 완성시키는 과정의 테스트

- 모듈간 또는 통합된 컴포넌트 간의 상호작용

- 빅뱅 테스트, 상향식 테스트(클러스터, 드라이버), 하향식 테스트(stub)

 

17. 시스템 테스트

 - 개발된 소프트웨어가 컴퓨터 시스템에서 완벽하게 수행되는가를 점검하는 테스트

 - 실제 사용환경과 유사한 환경에서 테스트 수행

 - 기능적 요구사항(블랙박스 테스트)

 - 비기능적 요구사항(화이트박스 테스트)

 

18. 인수 테스트( Acceptance Test)

 - 개발한 소프트웨어가 사용자의 요구사항을 충족하는지에 중점을 두는 테스트

 - 알파 테스트 : 통제된 환경에서 사용자가 개발자와 함께 확인하면서 행하는 테스트

 - 베타 테스트 : 통제되지 않은 환경에서 여러명의 사용자가 행하는 테스트

 

19. 상향식 통합테스트

 - 프로그램의 하위모듈에서 상위모듈 방향으로 통합하면서 테스트하는 기법

 - 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터 필요

 - 하위 모듈을 클러스터로 결합 -> 더미 모듈인 드라이버 작성 -> 통합된 클러스터 단위로 테스트 -> 테스트 완료 후 클러스터는 프로그램 구조의 상위로 이동해 결합하고 드라이버는 실제 모듈로 대체 됨

 

20. 하향식 통합테스트

 - 깊이 우선 통합법 / 넓이 우선 통합법

 - 테스트 초기부터 사용자에게 시스템 구조를 보여줄 수 있음

 - 주요 제어 모듈은 작성된 프로그램을 사용, 주요 제어 모듈의 종속 모듈은 stub으로 대체

  -> 깊이 우선 또는 넓이 우선 등의 통합 방식에 따라 하위 모듈인 스텁들이 한번에 하나씩 실제 모듈로 교체됨

  -> 모듈이 통합될 때마다 테스트 실시

  -> 새로운 오류가 발생하지 않음을 보증하기 위해 회귀테스트 실시

 

21. 혼합식 통합 테스트

 - 하위 수준에서는 상향식 통합. 상위 수준에서는 하향식 통합을 사용해 최적의 테스트를 지원하는 방식

 - 샌드위치 통합 테스트 방법

 

22. 테스트 오라클

 - 테스트 결과과 올바른지 판단하기 위해 사전에 정의된 참 값을 대입해 비교하는 활동

 - 제한된 검증 : 모든 TC에 적용할 수 없음

 - 수학적 기법 : 값을 수학적 기법을 이용해 구할 수 있음

 - 자동화 기능 : 프로그램 실행, 결과 비교, 커버리지 측정등을 자동화 할 수 있음

 - 참(True) 오라클 : 모든 테스트케이스 입력 값에 대해 기대하는 결과를 제공하는 오라클. 발생된 모든 오류를 검출할 수 있음

 - 샘플링 오라클 : 특정한 몇몇 테스트 케이스의 입력 값들에 대해서만 기대하는 결과를 제공하는 오라클

 - 휴리스틱 오라클 : 샘플링 오라클을 개선한 오라클, 특정 테스트 케이스의 입력 값에 대해 기대하는 결과를 제공하고 나머지 입력 값들에 대해서는 추정으로 처리하는 오라클

 

23. 테스트 하네스( Test Harness)

 - 테스트 드라이버 : 테스트 대상의 하위 모듈을 호출하고 모듈테스트 수행 후의 결과를 도출하는 도구

 - 테스트 스텁 : 테스트 대상의 상위 모듈을 대신 하는 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구

 - 테스트 슈트(suite) : 테스트 대상 컴포넌트나 모듈 등 시스템에 사용되는 TC의 집합

 - 테스트 케이스 : 사용자의 요구사항을 정확하게 준수했는지 확인하기 위한 입력 값, 실행 조건, 기대 결과 등으로 만들어진 테스트 항목 명세서

 - 테스트 스크립트 : 자동화된 테스트 실행 절차에 대한 명세서

 - 목 오브젝트 : 사전에 사용자의 행위를 조건부로 입력해 두면, 그 상황에 맞는 예정된 행위를 수행하는 객체

 

24. 결함 상태 추적

 - 결함 분포 : 컴포넌트의 특정 속성에 해당하는 결함 수 측정

 - 결함 추세 : 테스트 진행 시간에 따른 결함 수의 추이 분석

 - 결함 에이징(Fault Aging) : 특정 결함 상태로 지속되는 시간 측정

 

25. 결함 추적 순서

 - 결함등록 -> 결함 검토 -> 결함 함ㄹ당 -> 결함 수정 -> 결함 조치 분류 -> 결함 종료 -> 결함 해제

 

26. 결함 심각도

 - critical > major > normal > minor > simple

 

27. 결함 우선순위

 - critical > high > medium > low

 

28. 어플리케이션 성능

 - 처리량(throughtput), 응답시간, 경과시간( turn around time), 자원 사용률( resource usage)

 

29. 클린코드 작성원칙

 - 가독성, 단순성, 의존성, 배제, 중복성, 최소화, 추상화

 

30 소스코드 품질 분석 도구의 종류

 - 정적 분석 도구 : pmd, cppcheck, ccm, checkstyle, sonarQube, cobertuna

 - 동적 분석도구 : avalanche, valgrind

 

31. EAI ( Enterprise Application Integration )

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

포인트 투 포인트 점대점으로 연결하는 방식, 변경 및 재사용이 어려움
메세지 버스(EBS 방식) 어플리케이션 사이에 미들웨어를 둬 처리하는 방식, 확장성이 뛰어나며 대용량 처리가 가능
허브앤스포크(Hub&Spoke) 단일 접점인 허브 시스템을 통해 데이터를 전송하는 중앙 집중형 방식
확장 및 유지보수가 용이하지만 허브 장애 발생시 시스템 전체에 영향을 미침
하이브리드 Hub&Spoke(그룹 내)와 Message Bug(그룹간)의 혼합 방식
데이터 병목 현상을 최소화 할 수 있음

 

32. ESB ( Enterprise Service Bus )

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

 - 애플리케이션 통합 측면에서 EAI와 유사하지만 어플리케이션보다는 서비스 중심의 통합을 지향

 - 결합 도구를 약하게 유지함

 - 관리 및 보안 유지가 쉽고 높은 수준의 품질 지원 가능

 

33. 인터페이스 보안 기능 적용

 - 네트워크 애플리케이션, 데이터베이스 영역

 - 스니핑 : 네트워크의 중간에서 남의 패킷 정보를 도청하는 해킹 유형

 - 소프트웨어 개발 보안 ( secure coding ) : 소프트웨어 개발과정에서 지켜야할 일련의 보안 활동

  : 입력데이터 검증 표현, 보안 기능, 시간 및 상태, 에러 처리, 코드 오류, 캡슐화, API 오용

 

34. 인터페이스 구현 검증 도구

xUnit java, c++, net등 다양한 언어를 지원하는 단위 테스트 프레임 워크 (Junit, Nunit,,,,)
STAF 서버 호출 및 컴포넌트 재사용등 다양한 환경을 지원하는 테스트 프레임워크
FitNess 웹 기반 테스트케이스 설계, 실행, 결과 확인등을 지원하는 테스트 Framework
NTAF STAF의 장점인 재사용 및 확장성과 FitNess의 장점인 협업 기능을 통합한 NHN의 테스트 자동화 Framework
Selenium 다양한 브라우저 및 개발 언어를 지원하는 웹 애플리케이션 테스트 프레임워크
Watir Ruby 언어를 사용하는 어플리케이션 테스트 프레임워크

 


4과목 프로그래밍 언어 확용

 

1. 개발 환경 구축의 개요

- 개발 프로젝트를 이해하고 하드웨어 및 소프트웨어 장비를 구축하는 것

- 하드웨어와 소프트웨어의 성능, 편의성, 라이선스 등의 비즈니스 환경에 적합한 제품들을 최종적으로 결정하여 구축

 

2. 하드웨어 환경

- 사용자와 인터페이스 역할을하는 클라이언트와, 클라이언트와 통신하여 서비스를 제공하는 서버로 구성됨

- Web Server : 클라이언트로부터 직접 요청을 받아 처리하는 서보로 저용량의 정적 파일을 제공

  -> Apache Http Server, Microsoft Internet Service, Google Web Server

- Web Application Server : 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어(소프트웨어)

  -> 데이터 접근 ,세션 관리, 트랜잭션 관리등을 위한 라이브러리를 제공

  -> Apache Tomcat, IBM WebSphere, Oracle WebLogic, JEUS, JBoss, Jetty, Resin

 

3. 웹 서버의 기능

- HTTP/HTTPS 지원 : 브라우저로부터 요청을 받아 응답할 때 사용되는 프로토콜

- 통신 기록(Communication Log) : 처리한 요청들을 로그 파일로 기록

- 정적 파일 관리(Managing Static Files) : HTML, CSS, 이미지 등의 정적 파일을 저장하고 관리

- 대역폭 제한(Bandwidth Throttling) : 네트워크 트래픽의 포화를 방지하기 위해 응답 속도를 제한

- 가상 호스팅 : 하나의 서보로 여러 도메인 이름을 연결

- 인증(Authentication) : 사용자가 합법적인 사용자인지 확인

 

4. 시스템 소프트 웨어 : 클라이언트와 서버 운영을 위한 시스템 소프트 웨어

- 운영체제, 웹 서버 및 WAS 운용을 위한 서버 프로그램, DBMS

 

5. 개발 소프트웨어 : 개발에 사용되는 소프트웨어

- 요구사항 관리 도구 : jira, IMB DOORS, inteGREAT, Reqtify, Trello

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

- 빌드 도구 : Ant, maven, gradle, jenkins

- 구현 도구 : Eclipse, IntelliJ, Visual Studio, NodeJs

- 테스트 도구 : CppUnit, JUnit, HttpUnit, SprintTest

- 형상 관리 도구 : CVS, SVN, GIT

 

6. 개발 언어의 선정 기준

- 적정성, 효율성, 이식성, 친밀성, 범용성

 

7. 서버 개발 프레임워크

- Spring 

- NodeJs : JavaScript 기반 프레임워크, 비동기 입출력 처리와 이벤트 위주으이 높은 처리 성능을 갖고 있어 실시간으로 입출력이 빈번한 애플리케이션에 적합함

- Django : Python 기반, 컴포넌트의 재사용과 플러그인화를 강조하여 신속한 개발이 가능하도록 지원함

- Codeigniter : PHP 기반, 인터페이스가 간편하며 서버 자원을 적게 사용함

- Ruby on Rails : Ruby 기반, 테스트를 위한 웹 서버를 지원하며 데이터 베이스 작업을 단순화, 자동화시켜 개발 코드의 길이가 짧아 신속한 개발 가능

 

8. 서버 프로그램 구현(효과적인 모듈 설계)

- 모듈 및 공통 모듈을 개발한 후, 모듈들을 통합하는 방식으로 구현, 유지보수가 용이해야함

- 모듈의 독립성을 높이려면 모듈의 결합도를 약하게하고 응집도(Cohesion)를 강하게하며 모듈의 크기를 작게 만들어야함.

- 복잡도와 중복성을 줄이고 일관성 유지

- 공통 묘듈은 여러 프로그램에서 재사용 할 수 있는 모듈을 의미

 

9. 재사용 프로그래밍 기법

- 객체지향 프로그래밍, 제네릭 프로그래밍, 자동 프로그래밍, 메타 프로그래밍

 

10 프레임워크의 특성

- 모듈화, 재사용성, 확장성, 제어의 역흐름(IoC)

 

11. 프레임워크의 구성요소 

- 개발환경, 실행환경, 운영환경, 관리환경

 

12. 소프트웨어 개발 보안의 개요

- 시큐어 코딩

- 기밀성(Confidentiality, 무결성(Integrity), 가용성(Availability)을 유지하는 것을 목표

 

13. 소프트웨어 개발 보안 점검 항목

- 세션 통제

- 입력 데이터 검증 및 표현

- 보안 기능

- 시간 및 상태 : 병렬 처리 시스템등에서 시간과 실행상태 관리

- 에러 처리

- 코드 오류

- 캡슐화

- API 오용

 

14. API(Application Programming Interface)

- Windows API, 단일 유닉스 규격(SUS), Java API, 웹 API 등

 

15. 배치 프로그램의 개요

- 사용자와의 상호 작용 없이 여러 작업을 미리 정해진 순서에 따라 일괄적으로 처리하는 것

- 이벤트성 배치, 정기 배치, On-demand 배치(사용자 요청 시 수행)

- 대용량 데이터의 처리 가능, 자동화, 견고성, 안정성/신뢰성, 성능

 

16. 스프링 배치

- 주요 구성 요소 : job, job launcher, job repository, step

 

17. 쿼츠

- 주요 구성 요소 : job, job detail, trigger, scheduler

 

18. 패키지 소프트웨어

- 기업에서 일반적으로 사용하는 여러 기능들을 통합하여 제공하는 소프트웨어

- 기업에서 패키지 소프트웨어를 구입해 기업 환경에 적합하게 커스터마이징 후 사용

- 기능 요구사항을 70%이상 충족시키는 패키지 소프트웨어 사용

 

19. 패키지 소프트웨어 vs 전용 개발 소프트 웨어

  패키지 소프트웨어 전용 개발 소프트웨어
기능 요구사항 70% 이상 충족시키는 패키지 소프트웨어 모든 기능 요구사항 반영 가능
안정성 품질이 검증됐고, 업계 표준 준용 개발자의 역량에 따라 달라짐
라이선스 판매자 회사
생산성 개발을 위한 인력과 시간 절약 가능 개발을 위한 인력과 시간 필요
호환성 보장 안됨 설계 단계부터 고려하며 개발해서 호환성 좋음
유지보수 결함 발생 시 즉시 대응 어려움 결함 발생 시 즉시 대응 가능

 

20. 산술 연산자

- // : 나누기 연산 후 소수점 이하의 수를 버리고 정수 부분의 몫을 구함

- % : 나누기 연산 후 나머지

 

21. 비트 연산자

- & : and, 모든 비트가 1일때만 1

- | : or, 모든 비트중 1개라도 1이면 1

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

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

 

22. 절차적 프로그래밍 언어의 장, 단점

- 컴퓨터의 처리 구조와 유사하여 실행 속도가 빠름

- 같은 코드를 복사하지 않고 다른 위치에서 호출하여 사용할 수 있음(이식성)

- 모듈 구성이 용이하며, 구조적인 프로그래밍이 가능함

- 프로그램을 분석하기 어렵고, 유지 보수나 코드의 수정이 어려움

 

23. 절차적 프로그래밍 언어의 종류

- C, Algol(알골), Cobol(코볼), Fortran(포트란), Basic(베이직)

 

24. 객체지향 언어의 장,단점

- 상속을 통한 재사용과 시스템의 확장이 용이, 코드의 재활용성이 높음

- 사용자와 개발자 사이의 이해를 쉽게해주고, 대형 프로그램 작성 용이

- 프로그래밍 구현을 지원해주는 정형화된 분석 및 설계 방법이 없음

- 구현시 처리시간이 지연됨 -> 실행 속도가 느림

 

25. 객체지향 프로그래밍 언어의 종류

- C++, C#, Java, Delphi(델파이), Smalltalk

 

26. 객체지향 프로그래밍 언어의 구성 요소

- 객체, 클래스, 인스턴스, 메서드, 메시지

 

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

- 캡슐화(Encapsulation), 상속성, 다형성, 추상화, 정보 은닉

 

28. 스크립트 언어

- HTML 문서 안에 직접 프로그래밍 언어를 삽입하여 사용하는 것으로, 기계어로 컴파일되지 않고 별도의 번역기가 소스를 분석하여 동작하게하는 언어

- 클라이언트용 언어 : javaScript , 클라이언트의 웹 브라우저에서 해석되어 실행

- 서버용 스크립트 언어 : ASP, JSP, PHP, Python, 서버에서 해석되어 실행된 후 결과만 클라이언트로 보냄

 

29. 스크립트 언어의 장, 단점

- 컴파일 없이 바로 실행하므로 결과를 바로 확인할 수있음

- 개발 시간이 짧고, 소스코드를 쉽고 빠르게 수정할 수 있음

- 코드를 읽고 해석해야하므로 실행 속도가 느리고, 런타임 오류가 많이 발생함

 

30. 스크립트 언어의 종류

- Javascript, Asp, Jsp, PHP, Python, Perl

 

31. 표준 라이브러리 : 프로그래밍 언어에 기본적으로 포함되어 있는 라이브러리

 

32. C언어의 대표적인 표준 라이브러리

- stdio.h : 데이터의 입출력

- stdlib.h : 자료형 변환, 난수 발생, 메모리 할당에 사용되는 기능 제공

 

33. Java의 대표적인 표준 라이브러리

- java.awt : 사용자 인터페이스(UI)와 관련된 기능 제공

 

34. 운영체제 정의

- 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임

 

35. 운영체제의 목적

- 처리 능력(Throughput) : 일정 시간 내에 시스템이 처리하는 일의 양

- 반환 시간(Turn Around Time) 

- 사용 가능도(Availability) : 시스템을 사용할 필요가 있을 때 즉시 사용가능한 정도

- 신뢰도(Reliability) : 시스템이 주어진 문제를 정확하게 해결하는 정도

 

36. 운영체제의 기능

- 자원 관리

- 스케줄링 기능

- 사용자와 시스템간의 인터페이스 제공, 입출력 장치와 사용자 프로그램 제어

- 데이터 및 자원의 공유 기능

- 시스템의 오류 검사 및 복구, 자원 보호 기능

- 입,출력에 대한 보조 기능 제공 -> 가상 계산기 기능 제공

 

37. 운영 체제의 주요 자원 관리

- 프로세스 관리, 기억장치 관리, 주변장치 관리, 파일 관리

 

38. OS 특성

- Window : GUI, 선점형 멀티태스킹, PnP, OLE, 긴 파일명, 개인 사용자 시스템

- UNIX

  -> Open System, 시분할 시스템, 다중 사용자, 다중 작업, 호환성 높음, 계층 구조(트리 구조)

  -> 커널 : 컴퓨터가 부팅될때 주기억장치에 적재, 프로그램과 하드웨어 간의 인터페이스 역할, 

  -> 쉘 : 명령어 해석기, 시스템과 사용자 간의 인터페이스 역할, 파이프라인 기능, 여러 종류의 쉘이 있음

- LINUX : Unix 기반

- MacOs : Unix rlqks, 

 

39. UNIX에서의 프로세스 간 통신

- 각 프로세스는 시스템 호출을 통해 커널의 기능을 사용, 프로세스간 통신은 시그널, 파이프, 소켓을 사용

- 시그널 : 간단한 메세지를 이용하여 통신

- 파이프 : 한 프로세스의 출력이 다른 프로세스의 입력으로 사용되는 단방향 통신

- 소켓 : 프로세스 사이의 대화를 가능하게 하는 쌍방향 통신

 


40. 기억장치 관리 전략

- 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재시키는 시기, 위치등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위함

- 반입(Fetch), 배치(Placement), 할당(Allocation), 교체(Replacement)

 

41. 반입(Fetch) 전략

- 보조 기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략

- 요구 반입(Demand Fetch) : 실행중인 프로그램미 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법

- 예상 반입(Anticipatory Fetch) : 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법

 

42. 배치 전략

- 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬지 결정하는 전략

- 최초 적합(First Fit) : 빈 영역 중에서 첫번째 분할 영역에 배치

- 최적 적합(Best Fit) : 빈 영역 중에서 단편화를 가장 적게 남기는 분할 영역에 배치

 

43. 교체 전략

- 이미 사용되고 있는 영역 중에서 어느(Who) 영역을 교체할지 결정하는 전략

- FIFO, LRU, LFU, NUR, OPT, SCR

 

44. 주기억장치 할당(Allocation)의 개념

- 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할지 정함

- 연속 할당 기법 : 프로그램을 주기억장치에 연속으로 할당하는 기법

  -> 단일 분할 할당 기법 : 오버레이, 스와핑

  -> 다중 분할 할당 기법 : 고정(정적) 분할 할당 기법, 가변(동적) 분할 할당 기법

- 분할 할당 기법 : 프로그램을 특정 단위의 조각으로 나누어 할당하는 기법

  -> 페이징 기법, 세그먼테이션 기법

 

45. 가상기억장치

- 용량이 작은 주기억장치를 마치 큰 용량을 가진 것 처럼 사용하는 기법

- 주소 변환 작업 필요

- 연속 할당 방식의 단편화 해결 가능

 

46. 페이징(Paging) 기법

- 가상 기억장치에 보관되어있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램(페이지)를 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행하는 방법

- 페이지 : 일정한 크기로 나눈 단위

- 페이지 프레임 : 페이지 크기로 일정하게 나누어진 주기억장치의 단위

- 주소 변환을 위해 페이지 위치 정보를 갖고 있는 페이지 맵 테이블 필요

- 페이지 맵 테이블 사용으로 비용 증가, 처리 속도 감소

- 외부 단편화는 발생하지 않으나 내부 단편화 발생

 

47. 세그먼테이션(Segmentation) 기법

- 가상기억자치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 기억공간을 절약하기 위해서 사용하는 방법

- 세그먼트 : 논리적인 크기로 나눈 단위, 각 세그먼트는 고유한 이름과 크기를 가짐

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

- 주소 변환을 위해서 세그먼트가 존재하는 위치정보를 갖고 있는 세그먼트 맵 테이블 필요

- 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침법할 수 없으며, 이를 위해 기억장치 보호키가 필요

- 내부 단편화는 발생하지 않으나, 외부 단편화 발생

 

48. 페이지 교체 알고리즘

- FIFO = FCFS(First Come, First Service)

- LRU( Least Recently Used) : 가장 오래전에 사용된 페이지 교체

- LFU( Least Frequently Used) : 사용빈도가 가장 적은 페이지 교체

- OPT(Optimal replacement, 최적 교체) : 앞으로 오래동안 사용하지 않을 페이지 교체, 페이지 부재 횟수가 가장 적게 발생하는 효율적인 알고리즘

- NUR(Not Used Recently) : 최근에 사용하지 않은 페이지 교체

 

49. 페이지 크기가 작을 경우

- 페이지 단편화 감소, 한 개의 페이지를 주기억장치로 이동하는 시간이 줄어듬

- 불필요한 내용이 주기억장치에 적재될 확률이 적으므로 효율적인 워킹 셋 유지 가능

- 기억장치 효율 높아짐

- 페이지 맵 테이블의 크기가 커지고, 매핑 속도가 늦어짐

- 디스크 접근 횟수가 많아져 전체적인 입,출력 시간은 늘어남

- 페이지 크기가 클경우 -> 반대

 

50. Locality(지역성, 구역성)

- 프로세스가 실행되는 동안 주기억장치를 참조할 떄 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론

- 스래싱(Thrashing)을 방지하기 위한 워킹 셋 이론의 기반

- 데닝(Denning) 교수에 의해 구역성의 개념 증명, 캐시 메모리 시스템의 이론적 근거

- 시간적 구역성(Temporal) : 한번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음( Loop, Stack, Subroutine, Counting, Totaling)

- 공간적 구역성(Spatial) : 어느 하나의 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음( Array, Sequential Code)

 

51. 워킹 셋

- 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합

- 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정됨

- 시간이 지남에 따라 자주 참조하는 페이지들의 집합이 변화하기 떄문에 워킹 셋은 시간에 따라 변경됨

 

52. 페이지 부재 빈도(PFF, Page Fault Frequency) 방식

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

- 페이지 부재는 프로세스 실행 시 참조할 페이지가 주기억장치에는 없는 현상이며, 페이지 부재 빈도는 페이지 부재가 일어나는 횟수를 의미함

 

53. 프리페이징(Prepaging)

- 처음의 과도한 페이지 부재를 방지하기 위해 필요할 것 같은 모든 페이지를 미리 한꺼번에 페이지 프레임에 적재하는 기법

- 기억장치에 들어온 페이지들 중에서 사용되지 않는 페이지가 많을 수도 있음

 

54. 스래싱(Thrashing)

- 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상 -> 전체 시스템 성능 저하

- 다중 프로그래밍(멀티 태스킹)의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만, 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고, CPU의 이용률은 급격히 감소됨

 

55. 스래싱 현상 방지 방법

- 다중 프로그래밍의 정도를 적정 수준으로 유지

- 페이지 부재 빈도를 조절해 사용

- 워킹셋을 유지함

- 부족한 자원을 증설하고 일부 프로세스를 중단 시킴

 

56. 프로세스의 정의

- 프로시저가 활동중인 것

- 비동기적 행위를 일으키는 주체

- 운영체제가 관리하는 실행 ㄴ위

- 실행중인 프로그램

 

57. PCB(Process Control Block, 프로세스 제어 블록)

- 프로세스 고유 식별자, 프로세스의 현재상태, 프로그램 카운터, CPU 레지스터 정보, 스케줄링 및 프로세스의 우선순위, 계정 정보, 입출력 상태 정보, 메모리 장치 관리 정보, 포인터

 

58. 프로세스 상태 전이

- 생성(New), 준비(Ready), 실행(Run), 대기(Wait), 종료(Exit)

 

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

- 디스패치 : 준비-> 실행 / 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당 받아 실행 상태로 전이되는 과정

- Wake Up : 대기 -> 준비 / 프로세스가 대기 상태에서 준비 상태로 전이되는 과정

- 스풀링(Spooling) : 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정

 

60. 스레드(Thread)

- 프로세스 내에서의 작업 단위

- 독립정인 다중 수행 가능

- 병행성 증진 및 성능과 처리율 향상, 프로그램 응답시간 단축

- 기억장소의 낭비가 줄어들고 통신이 향상됨

 

61. 스케쥴링

- 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업

- 장기 스케줄링( 작업, 상위 스케줄링 : 작업 스케줄러에 의해 수행됨, 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보냄

- 중기 스케줄링 : 어떤 프로세스들이 CPU를 할당 받을 것인지 결정

- 단기 스케줄링(프로세서, 하위 스케줄링) : 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업, 프로세서 스케줄링 및 문맥교환은 프로세서 스케줄러에 의해 수행됨

- 문맥교환(Context Switching) : 하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생되는 것

 

62. 스케줄링의 목적

- 공정성, 처리량 증가, CPU 이용량 증가, 우선순위 제도, 오버헤드 최소화, 응답시간 최소화, 반환시간 최소화, 대기시간 최소화, 균현있는 자원의 사원, 무한 연기 회피

 

63. 선점 스케줄링(Preemptive)

- 하나의 프로세스가 CPU를 할당받아 실행되고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 선점할 수 있는 기법

- 우선순위가 높은 프로세스 빠르게 처리

- 대화식 시분할 시스템에 사용

- 많은 오버헤드 발생

- 인터럽트 타이머 클록 필요

- Round Robin, SRT, MLQ, MFQ

 

64. 비선점 스케줄링

- 이미할당된 CPU를 다른 프로세스가 강제로 빼앗아 선점할 수 없는 기법

- CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU 사용

- 모든 프로세스에 대한 요구를 공정하게 처리 가능

- 프로세스 응답 시간의 예측 용이

- 일괄 처리 방식에 적합

- 가뭄 현상 : 중요한 작업(짧은 작업)이 중요하지 않은 작업(긴 작업)을 기다리는 경우 발생

- 우선순위, 기한부, FCFS,SJF,HRN

 

65. HRN ( Hightest Response-ratio Next)

- SJF기법의 가뭄 현상을 보완하기 위한 방식

- 대기시간이 긴 프로세스일 경우 우선순위가 높아지고

- 우선순위의 계산식 수치가 가장 높은 것부터 우선순위를 부여

- 우선순위 계산식 : (대기시간+서비스시간)/서비스시간

 

66. 서브네팅(Subnetting)

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

- 서브넷 마스크 : 네트워크 주소와 호스트 주소를 구분하기 위한 비트

 

37. IPv6

- 128비트, 자료 전송속도 빠름

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

- IPv4와 호환성 뛰어남, IPv6 확장 헤더로 네트워크 기능 확장이 용이

- 품질보장 용이(QoS, Quality of Service)

- 유니캐스트, 멀티캐스트, 애니캐스트

 

38. 도메인 내임

- 숫자로된 IP주소를 문자형태로 표현

- DNS : 문자로된 도메인 네임을 IP주소로 변환하는 역할

 

39. OSI(Open System Interconnection) 참조 모델

계정 설명 주요 프로토콜
7. 응용 계층(Application) 사용자와 네트워크 간 응용서비스 연결, 데이터 생성 HTTP, FTP, TELNET, SMTP / SNTP, DNS
6. 표현 계층(Presentation) 구문 검색, 코드 변환, 암복호화, 데이터 압축, 문맥 관리 기능 JPEG, MPEG
5. 세션 계층(Session) 연결 접속(유지), 동기 제어, 동기점(대화) SSH, TLS
4. 전송 계층(Transport) 종단간(End to End) 신뢰성 있는 데이터 전송, 흐름 제어(슬라이딩 윈도우), 오류 및 혼잡 제어 TCP/UDP, RTCP
-> 세그먼트
3. 네트워크 계층(Network) 단말기 간 데이터 전송을 위한 최적화된 경로(라우팅) 제공 IP, ICMP, ARP, RIP, OSPF
-> 패킷
2. 데이터링크 계층(Data Link) 인접 시스템(노드)간 물리적 연결을 이용해 데이터 전송, 동기화, 오류 및 흐름제어, 오류 검출 및 재전송 MAC, LLC,HDLC,PPP
-> 프레임
1. 물리계층(Physical) 매체 간 전기적, 기능적, 절차적 기능 정의 -> 비트

 

 

 

 

 

 

 

 

 

 

 

 

반응형