Chapter 01 서버 프로그램 구현
개발환경구축 | - 응용 소프트웨어의 개발 편의성, 개발 성능 향상을 위해 (하드웨어 및 소프트웨어) 개발환경을 구축하는 과정 - 빌드도구, 구현도구, 테스트도구, 형상관리도구 |
빌드도구 | 작성한 코드의 빌드 및 배포, 각각 구성요소와 모듈에 대한 의존성 관리 지원 |
구현도구 | 코드의 작성과 디버깅, 수정 등과 같은 작업 시 사용되는 도구 |
테스트도구 | 전체 품질 향상을 위해 코드의 기능 검증 |
형상관리도구 | 산출물에 대한 버전 관리를 위한 도구(필수) |
웹 서버 | -웹 브라우저의 요청을 받아 http를 통해 웹 브라우저에서 요청하는 html문서나 오브젝트(이미지 파일 등)를 전송해주는 서버 -클라이언트와 서버를 웹을 통해 보여주는 서버 |
WAS | -Web Application Server -동적 서비스 제공, 인터페이스 역할 => 웹 요청시 처리 해주는 역할 -Oracle WebLogic, Apache Tomcat, IBM WebSphere, Jeus등 |
데이터베이스 서버 | -데이터(자료)를 관리하는 서버 |
파일 서버 | -물리 저장 장치를 활용한 서버(이동형 장치를 연결하기 위해 사용) |
프레임워크 | -반복적으로 사용되는 일련의 작업 단위를 묶어 재사용이 가능하게끔 제공하는 뼈대 -개발환경/실행환경/관리환경/관리환경 |
다형성 | (객체지향언어의 특징) 시스템을 다양한 형태로 제공 |
전자정부 프레임 워크 | 정부에서 모든 기관들이 자주 사용하는 기본 작업들을 모아 만든 프레임워크, 주로 sping f/w사용 |
재사용 | -검증된 기능을 파악하고 재구성하여 시스템에 응용하기 위한 최적화 작업 (기존의 소프트웨어 기능을 활용하여 새로운 소프트웨어를 구축함으로써 목표 시스템의 개발 시간 및 비용 절감) -함수와 객체 재사용/ 컴포넌트 재사용/ 애플리케이션 재사용 |
컴포넌트 | - S/W 프로그램 (특정 기능의 집합) |
객체지향 프로그래밍 | 객체 단위로 재사용 (구조화된 프로그래밍) |
제네릭 프로그래밍 | 하나의 값이 여러 데이터 타입 (재사용성 향상) |
자동 프로그래밍 | 사용자가 설정 변수에 근거한 프로그램 생성 |
메타 프로그래밍 | 런타임에 수행해야 할 작업의 일부를 컴파일 타임 동안 수행 |
컴파일 타임 | 소스코드를 작성하고 컴파일하는 과정( 실행 가능한 프로그램이 되기 위한 편집 과정) |
런타임 | 컴파일 타임을 마친 프로그램이 실제 동작되어지는 시간 |
라이브러리 | -소프트 웨어 개발 시 공통으로 사용될 수 있는 특정한 기능을 모듈화(프레임워크에 포괄되는 개념) -표준라이브러리/런타임 라이브러리 |
프레임워크 | 클래스와 라이브러리가 합쳐진 형태 |
S/W아키텍처 | 설계도(청사진) |
모듈화 | 시스템을 분할하고 추상화함으로써 소프트웨어 성능을 향상시키거나, 재사용, 유지보수에 용이하도록 "모듈 단위"로 분할하는 기법 |
분할과 정복 | 복잡한 문제를 분해하여 모듈 단위로 해결(정복) |
정보 은닉 | 타 모듈로부터 내부의 정보를 은폐 |
데이터 추상화 | 복잡한 것을 간단하게 보여주는 게 추상화 구체적이고 복잡한 데이터에 대해 간단하게 보여주어 내부 표현을 은폐 |
모듈독립성 | 모듈의 크기를 작게 만들어 낮은 결합도와 높은 응집도를 통해 모듈독립성이 높아진다 |
모듈(설계측면) | 라이브러리 형태로 사용 |
컴포넌트(설계측면) | 바이너리 형태로 사용(로직을 수행할 수 있는 모듈 단위) |
서비스(설계측면) | 기존 컴포넌트보다는 느슨한 결합의 형태로 사용 |
함수(구현측면) | 코드로 제공 |
매크로(구현측면) | 반복실행되는 부분에 특정 이름을 부여하여 제공 |
인라인(구현측면) | (매크로와 비슷하게 사용) |
결합도(Coupling) | 모듈 간의 상호 의존성(외부 모듈과의 연관도) => 낮은 결합도를 통해 외부 의존성, 복잡성, 파급효과를 최소화 |
내용 결합도(Content) | 다른 모듈 내부에 있는 변수나 기능을 직접적으로 참조 |
공통 결합도(Common) | 전역 변수를 참조하여 전역 데이터에 접근하면 상호작용하여 공통 결합 (공유되는 공유 데이터 영역을 여러 모듈이 사용) |
외부 결합도(External) | 외부에서 선언한 데이터를 외부의 다른 모듈에서 참조 |
제어 결합도(Control) | 권리 전도 현상 발생 |
스탬프 결합도(Stamp) | 모듈의 자료 구조 형태로 전달, 두 모듈이 동일한 자료 구조를 조회하는 경우 |
자료 결합도(Data) | 가장 낮은 결합도, 모듈의 자료 형태로 전달, 모듈 간의 파라미터를 통해서만 모듈 간의 상호 작용이 일어나는 경우 |
응집도(Cohesion) | 모듈 내부 구성요소 간의 연관성(정보은닉, 하나의 모듈은 하나의 기능 수행) => 모듈이 하나의 기능을 분리 구현하여 독립성이 보장되고, 변경이 쉬워 유지보수에 편리 |
우연적 응집도 (Coincidental) |
모듈 내부 구성요소가 서로 어떠한 의미 관련도 없는 경우로, 서로 다른 상위 모듈에 의해 호출되어 처리상의 연관성이 없는 서로 다른 기능을 수행 |
논리적 응집도 (Logical) |
유사한 성격이나 특정 형태로 분류된 요소들이 한 모듈에서 처리되는 경우 |
시간적 응집도 (Temporal) |
서로 다른 기능을 특정 시간에 처리하기 위해 한 모듈에서 처리되는 경우 |
절차적 응집도 (Procedural) |
모듈 기능을 순차적으로 수행 |
통신적 응집도 (Communication) |
동일한 입/출력을 사용하여 다른 기능을 수행 |
순차적 응집도 (Sequential) |
모듈 내로부터 나온 출력값을 다른 활동이 사용 |
기능적 응집도 (Funtional) |
가장 강한 응집도, 모듈 내부의 모든 기능이 단일한 목적을 위해 수행 |
보안 취약성 Vulnerability |
불법적 사용자의 접근, 정상적 서비스 방해, 정보시스템에서 관리하는 중요 데이터의 유출, 변조, 삭제에 대한 위협 |
침투테스트 Penetration |
전문해커가 공격자보다 먼저 시스템의 취약점을 찾기 위한 "보안 취약성 테스트" |
서비스거부(DoS) | 서버에 무의미한 요청을 반복해서 서버의 과부하 유발 |
코드실행 | Shell명령을 이용해 적절한 입력 유효성 검사 없이 임의 코드 실행 |
버퍼오버플로우 | 정해진 메모리를 넘치게 하여 오류발생과 잘못된 동작 유발 |
정보수집 | 스캐닝을 통해 불법적으로 정보 수집 |
권한상승 | 루트권한(마스터)획득 |
SQL Injection SQL삽입 |
SQL문을 삽입하는 방법으로 DB에 침투하여 정보를 열람 |
XSS 크로스 사이트 스크립팅 |
게시판에 악성 스크립트를 작성하고 사용자가 열람했을 때 쿠키정보나 개인정보를 빼내는 기법 => 클라이언트 대상(사용자의 정보) |
CSFS 사이트 간 요청 위조공격 |
크로스 사이트 스크립팅과 비슷한 방법 =>서버 대상(서버를 공격해 사용자가 이상행위를 하도록 유도) |
디렉터리 접근 | 제한된 디렉토리(폴더)에 접근 |
FTP 바운스 공격 | FTP서버가 데이터 전송시 목적지를 확인하지 않는 취약점을 이용해 데이터를 엉뚱한 곳으로 전송 |
방화벽 | Firewall. 불법적인 사용자나 데이터의 침투를 막아주는 보안 시스템 |
시큐어 코딩 | Secure Coding(보안 개발), 보안 취약성을 막는 프로그래밍 |
API | 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스 (Application Programming Interface) 프로그래머가 특정 기술을 사용하기 쉽게 해주는 프로그램의 일종, 오픈API&비공개API |
XML | 확장된 마크업 언어(범용적으로 사용 가능) |
JSON | 비동기 브라우저/서버통신(ajax)을 위해 "키-값 쌍", "속성-값 쌍"으로 이루어진 데이터를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷 |
REST | 자원의 존재/상태정보를 표준화된 http메서드로 주고받는 웹 아키텍처 |
SOAP | XML기반의 메시지를 컴퓨터 네트워크 상에서 교환하는 프로토콜 |
배치 프로그램 | -사용자와의 상호작용없이 일괄처리(일련의 작업단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라) -자동화 / 안정성(추적가능) / 대용량 데이터 / 견고성(비정상적중단X) / 성능(주어진 시간내 처리, 동시동작방해X) -이벤트 배치: 조건 충족시 일괄 처리 -온디맨드 배치: 사용자 요구에 따라 일괄 처리 -정기 배치: 정해진 정기 시점에 일괄 처리 -스프링 배치(대용량 처리), 쿼츠 스케줄러(오픈소스 기반 스케줄러) |
Chapter 02 프로그래밍 언어 활용
데이터타입 | -실수형. 정수형과 같은 여러 종류의 데이터를 식별하는 형태(2진수 데이터를 다양한 형태로 활용가능) -데이터 타입은 변수가 가질 수 있는 속성값의 길이 및 성질 |
변수(Valiable) | -어떤 값(속성값)주기억 장치에 기억하기 위한 사용하는 공간 -사용 가능 문자: 영어 대/소문자, 숫자, 밑줄_ -변수 사용 규칙: 첫 자리 숫자 사용 불가, 변수명에 공백 사용 불가 -변수 의미 부여: 데이터 값의 의미나 역할, 예약어는 사용불가 |
예약어 | 정해진 기능을 수행하도록 이미 용도가 정해져 있는 단어(변수나 다른 목적으로 사용불가) |
배열(Array) | 같은 타입의 변수들로 이루어진 집합 "구조적 자료형" |
포인터(Pointer) | 변수의 주소값을 저장하는 공간 데이터타입* 포인터변수명 = &변수명; |
명령문 | 프로그램을 구성하는 문장으로 지시사항을 처리하는 단위(조건문 & 반복문) |
조건문 | if문, swich문(swichcase문) |
if문 | 조건이 참인지 거짓인지에 따라 경로를 선택 |
swich문 (파이썬 지원 X) |
조건에 따라 여러 개의 선택 경로 중 하나 선택 실행 |
반복문 | 특정 부분을 조건이 만족할 때까지 실행(무한 처리 반복) |
for문 | -C언어는 초기식, 조건식, 증감식을 지정하여 반복 -파이썬은 for 변수 in range (반복횟수), for 변수 in range (시작값, 끝값+1) |
while문 | 조건이 참인 동안에 해당 분기를 반복해서 실행 (자바,C는 불린타입을 지원 안함, 따라서 while의 조건문이 불린타입(참,거짓)이 아닌경우 오류 발생) |
do while문 | 참, 거짓과 관련없이 무조건 한번 (do)문 실행하고, 다음부터 조건이 참인 동안에 해당 분기를 반복해서 실행 (자바,C는 불린타입을 지원 안함, 따라서 while의 조건문이 불린타입(참,거짓)이 아닌경우 오류 발생) |
루프 제어 명령어 | break문, continue문 |
사용자 정의함수 | 특별한 목적의 작업을 수행하도록 설계된 블록 |
클래스 | 객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메서드를 정의 *C언어는 명령형 프로그래밍(객체지향X)으로 클래스를 지원하지 안함 |
this포인터 | |
self | |
생성자 | |
소멸자 | |
절차적 프로그래밍언어 | - 명령형 프로그래밍, 프로시저 호출에 따라 순서대로 진행되어 흐름 파악이 용이 - 복잡하지 않고 유지보수가 용이(직관적) - 같은 코드 재사용 가능 - 모듈화, 구조화 가능 - 포트란(FORTRAN) - 알골(ALGOL) - C언어 |
객체지향프로그래밍언어 | - 독립된 단위인 "객체"중심의 프로그래밍 언어 (명령어X) - 자료 추상화, 상속, 다중상속, 다형성, 동적바인딩, 접근제어자(접근제한자) - C++ 성능하락이 없는 형태로 개발 가능한 언어로 메모리 관리가 많아서 개발이 어려움 접근 제어자 default 빼고 제공 - C# 마이크로소프트 개발(c++과 자바) 자바와 달리 불안전코드를 통해 플랫폼 간 상호 운용성 확보 접근 제어자 모두 제공 - JAVA 썬 마이크로 시스템즈(오라클합병)개발 자바 언어로 작성된 프로그램을 바이트코드로 변환(특수한 바이너리 형태) 정수형 int 4바이트 기준으로 short는 2바이트(1/2), long은 8바이트(2배) - 델파이 파스칼 문법, 높은 생산성과 간결한 코드, 저수준 프로그래밍도 가능<-기계어와 가까울수록 저수준 |
자료 추상화 | 중요한 정보만 표현(복잡하고 불필요한 정보는 숨기고 보기 쉽게) |
상속 | 새로운 클래스가 기존 클래스의 자료와 연산을 이용가능 |
다중상속 | |
다형성 | 여러 한 요소에 여러 개념을 넣는 것 오버라이딩과 오버로딩 |
동적 바인딩 | 런타임에 여러 속성이나 연산에 바인딩 함으로써 호출될 함수가 결정됨 (<-> 정적바인딩) 즉, 실행되는 동안 포인터가 가리키는 객체에 따라서 호출될 함수가 유동적 |
접근 제어자 | 클래스, 변수, 메소드를 외부에서 접근할 수 있도록 권한 설정 public + protected # default ~ private - |
가비지 컬렉터 | 메모리 관리용(더 이상 사용되지 않는 객체를 제거해주는 역할) |
스크립트 언어 | -컴파일 하지 않고도 실행할 수 있는 프로그래밍 언어 -시작에서 끝날 때까지 실행되며, 시작점이 따로 명시되지 않음(상대적으로 단순한 구문과 의미 내포) -인터프리터 방식: 프로그래밍 소스코드를 바로 실행하는 환경 -PHP 동적 웹페이지, 명령 줄 인터페이스(CLI) @ 오류억제자, <>값이 다름, ===값과 타입이 같은지 확인 -Perl(펄) 인터프리터 방식, 실용성 중시, 불특정한 데이터 길이의 제약없이 강력한 문자열 처리 기능 제공 -Python 귀도 반 로섬, 인터프리터 방식이면서 객체 지향적, 다양한 플랫폼에서 풍부한 라이브러리 보유 유니코드 문자열을 지원하기에 다양한 언어의 문자 처리 굿(이식성 좋음) 리스트는 slice를 이용, 들여쓰기 사용해 블록 구분 -Javascript 객체 기반의 스크립트 프로그래밍 언어, 타입을 명시할 필요 없는 인터프리터 언어 브라우저마다 지원되는 버전 상이 프로토타입(프로토타입 링크와 프로토타입 오브젝트 활용) -bash Shell명령과 호환되며 리눅스에 기본 탑재 -Basic 교육용, 다양한 종류의 베이직 언어 존재하며 문법 차이 큼 |
선언형 언어 | -문제를 설명하는 언어, "무엇"을 할 것인지에 중점을 둔 언어(Declarative Language) -함수형 언어: 자료 처리를 수학적 함수의 계산으로 취급_하스켈, 리스프 ✓ 순수함수(Pure function): 부작용이 없는 함수(어느 순간에도 동일한 값 반환) ✓ 익명함수(Anonymous function)(=림다식): 이름이 없는 함수 ✓ 고계함수(Higher-oder function): 함수를 또 하나의 값으로 간주하여 함수의 인자 혹은 반환값으로 사용 -논리형 언어: 논리 문장을 이용 예_프롤로그 ✓ 사실: 객체와 객체 간의 관계에 대한 논리적 사실을 포함한 문장 ✓ 규칙: 지식베이스로부터 새로운 논리를 찾는 과정 ✓ 질문: 추론이 참인지 거짓인지 확인 |
라이브러리 | - 효율적인 프로그램 개발을 위해 필요한 프로그램을 모아놓은 집합체 (라이브러리는 모듈과 패키지의 총칭. 모듈이 개별 파일이라면, 패키지는 파일들을 모아놓은 폴더) - 도움말, 설치 파일, 샘플 코드 등으로 구성 - 표준 라이브러리 & 외부 라이브러리 |
데이터 입출력 | 데이터가 입력 및 출력되도록 하기 위한 기법 표준 입력, 표준 출력, 표준 오류(표준 오류는 오류메시지나 진단의 출력을 위해 쓰이는 또 다른 출력 스트림) |
예외 처리 | 오류가 발생 시 오류를 그대로 실행시키지 않고 대응하는 방법으로 처리하는 프로그래밍 기법 - throw: 정상적으로 실행될 수 없은 상황일 때 예외를 던짐 - try: 예외가 발생할만한 코드 블록{ }을 지정 - catch: 예외 핸들러, try-catch문(try안에서 throw한 예외 객체에 대한 예외처리) |
프로토타입 | 객체지향 프로그래밍과 달리 클래스를 명확하게 정의하지 않아도 되며, 속성과 메서드를 다른 클래스의 인스턴스나 빈 객체에 추가하는 작업을 덜 수 있는 프로그래밍 스타일 |
Chapter 03 응용 SW기초 기술활용
운영체제(OS ;Operating System) |
-사용자가 하드웨어를 편리하게 사용할수 있도록 인터페이스를 제공해주는 소프트웨어 (하드웨어는 중앙처리 장치, 기억장치, 통신장치, 입출력 장치 등으로 구분) - 운영체제는 하드웨어를 편리하게 제어하고 처리 ✓제어 프로그램 : 감시 프로그램 / 작업 제어 프로그램 / 데이터 관리 프로그램 ✓처리 프로그램 : 언어 번역 프로그램 / 서비스 프로그램 / 문제 프로그램 -사용자 편리성 제공, 인터페이스 기능을 담당, 스케줄링 담당, 자원 관리, 제어 기능 -운영체제는 크게 인터페이스(쉘)과 커널의 구조 |
커널 | 운영체제의 핵심적인 기능 프로세스 관리, 기억장치 관리, 주변장치 관리, 파일관리, 자원관리, 보안 |
쉘 | 커널을 편리하게 사용하게끔 "인터페이스"를 제공, 사용자의 명령어를 커널로 전달하는 "명령어 해석기" |
윈도우 OS | GUI기반 운영 체제, 트리 디렉터리 구조, 선점형 멀티 태스킹, 자동감지(플러그앤플레이),OLE(객체 연결 삽입) |
리눅스/유닉스 OS | |
맥 OS | |
안드로이드 OS | |
메모리 관리 | - 메모리는 고가의 자원이기 때문에 시스템에서 중요한 역할을 수행 - 반입기법: 적재 시기 결정 - 배치기법: 적재 위치 결정 - 할당기법: 적재 방법 결정 -교체기법: 교체 대상 결정 |
반입기법(When) | 반입 시기를 결정하는 관리 기법 ✓요구 반입 기법: 요구가 있을 경우에 적재 ✓예상 반입 기법: 사전에 미리 예측해서 요구되는 페이지 이외 다른 페이지 함께 적재 |
배치기법(Where) | 어느 위치에 저장할 것인지 결정하는 관리 기법 ✓최초 적합(Fist fit): 적재될 가용 공간 중에서 첫 번째에 분할 할당 ✓최적 적합(Best fit): 가용 공간 중 가장 크기가 비슷한 공간 선택(공백 최소화) ✓최악 적합(Worst fit): 가용 공간 중 가장 큰 공간에 할당 |
할당기법(How) | 어떻게(어떤 방법) 할당할 것인지 결정하는 관리 기법 <연속 할당 기법> ✓단일 분할 할당: 오버레이, 스와핑 ✓다중 분할 할당: 고정 분할 할당, 동적 분할 할당 <분산 할당 기법> 분산하여 배치하는 비연속적 할당 배치 ✓페이징 기법: 고정된 크기의 일정한 크기(프레임)로 분할 -> 내부 단편화 현상 발생 ✓세그먼테이션 기법: 가변적 크기(세그먼트)로 분할-> 외부 단편화 현상 발생 ✓페이징/세그먼테이션 기법: 내/외부 단편화 최소화를 위해 결합된 기법, 하나의 세그먼트를 정수 배의 부분 페이지로 다시 분할(효과적이나 고비용) |
교체기법(Who) | 어떤 프로세스를 제거할 것인지 결정하는 관리 기법 p4-86 ✓FIFO: 선입선출(Fist In Fisrt Out) ✓LRU: 사용된 시간을 확인하여 가장 오랫동안 사용되지 않은 페이지를 교체(Least Recently Used) ✓LFU: 참조횟수가 가장 적은 페이지를 교체(Least Frequently Used) ✓OPT: 페이지 부재 횟수가 가장 적게 발생하는 최적의 알고리즘 (OPTimal replacement) ✓NUR: LRU와 비슷, 단 시간이 아닌 사용여부에 따라 최근에 사용하지 않은 페이지 교체(Not Used Recently) ✓SCR: 오랫동안 주기억장치에 있지만 자주 사용되는 페이지 교체 방지, FIFO 보완(Second Chance Replace) |
페이지 부재 | 현재 없던 페이지가 참조되었을 때 일어나는 인터럽트 |
메모리 단편화 | - 내부단편화 해결 -> slab allocator(동적 메모리 관리), 통합, 압축 - 외부단편화 해결 -> 버디 메모리 할당, 통합 압축 |
스레싱 | - 계속적 페이지 부재 발생으로 인해 프로세스 실제 처리 시간보다 페이지 교체 시간이 더 많아지는 현상 - 페이징 기법의 문제점, 스레싱으로 인해 전체 시스템의 성능 및 처리율 저하 ✓스레싱 해결 방안으로 워킹세트(Working Set), 페이지 부재 빈도(PFF) |
지역성(Locality) | -어느 한 순간에 특정부분, 일부 페이지만 집중적으로 참조하는 특성(=국부성 =구역성 =국소성 =참조 지역성) -> 스레스 방지를 위한 워킹 셋 이론의 기반 -시간 지역성: 최근 참조했던 메모리가 가까운 장래에도 참조되는 경향 예)루프(반복, 순환), 스택, 부 프로그램(서브루틴), 카운팅, 집계 등 -공간 지역성: 하나의 기억장소가 참조되면 그 근처의 기억장소가 계속 참조되는 경향 예)배열순회, 같은 영역에 있는 변수 참조 -순차 지역성: 데이터가 순차적으로 참조되는 경향(공간 지역성에 편입되어 설명되기도 함) 예)순차적 코드 실행 |
프로세스 | 실행 중인 프로그램 (Job, Task) 생성→준비→실행→대기→완료 |
PCB | -프로세스 제어 블록(Process Control Block) 프로세스 관리를 위해 필요한 자료를 담고있는 자료 구조 |
스레드 | -프로세스의 실행 단위(=경량 프로세스) -하나의 프로세스는 여러개의 스레드를 가질 수 있다 |
프로세스 상태 전이 | 프로세스 상태가 변하는 활동 -디스패치(dispatch): 준비 상태의 프로세스 중 실행될 프로세스를 CPU에 할당-> 문맥교환 발생 -할당 시간 초과(timeout): 지정된 시간이 초과되면 실행에서 준비로 전이(스케줄러에 의해 PCB저장 후 반환) -입출력 발생(block): 지정된 시간을 초과하기 전에 입출력이나 기타 사건 발생시 실행에서 대기상태로 전이 -깨움(wake-up): 입출력이 종료되면 대기에서 준비상태로 전이 |
문맥 교환 | CPU가 현재 실행되는 프로세스의 문맥상태를 PCB에 저정하고, 다음 프로세스의 PCB로부터 문맥을 복원 |
프로세스 스케줄링 | -하나의 CPU를 사용하려고 하는 여러 프로세스들 사이의 우선 순위를 관리하는 작업 (처리율과 CPU이용률을 증가시키고 오버헤드, 응답시간, 반환시간, 대기시간을 최소화) |
선점형 스케줄링 | -우선순위가 높은 프로세스가 현재 프로세스를 중단시키고 CPU를 점유하는 선점형 -비교적 빠른 응답과, 대화식 시분할 시스템에 적합 -단, 오버헤드 초래(높은 우선 순위 프로세스들이 계속해서 선점하려고 하기때문에) ✓ 라운드 로빈(RR): 타임 퀀텀(시간 할당량)을 통해 균등한 CPU점유시간, 시분할 시스템(Time Sharing) 사용 ✓ SRT(Shortest Remaining Time First): 가장 짧은 수행시간의 프로세스 우선 수행 ✓ 다단계 큐(MLQ): 여러 종류의 그룹으로 분할하여 여러 개의 큐 이용, 독립된 스케줄링 큐 ✓ 다단계 피드백 큐(MLFQ,MFQ): 큐마다 서로 다른 cpu시간 할당량 부여 (상위단계에서 완료되지 못한 작업은 하위 단계로 전달되어 마지막에 RR방식 사용) |
비선점형 스케줄링 | -한 프로세스가 CPU를 할당받으면 작업을 끝까지 종료 후 반환까지 다른 프로세스는 점유 불가능 -응답시간예상이 용이하고, 모든 프로세스에 대한 요구를 공정하게 처리가능 -단, 기아현상 발생(짧은 작업을 수행하는 프로세스가 긴 작업 종료 시까지 무한정 대기) ✓ 우선순위(Priority): 우선순위에 따라 할당 (동일 순위는 FCFS) ✓ 기한부(Deadline): 명시된 시간이나 기한 내에 완료되도록 할당 ✓ FCFS(First Come First Serverd): 대기 큐에 먼저 도착한 순서대로 할당(=FIFO알고리즘) ✓ SJF(Shortest Job First): 최단 작업 우선 할당->기아현상발생 ✓ HRN(Highest Response Ratio Next): 대기 시간이 긴 프로세스의 우선순위를 높아지게 하여 결정 HRN의 우선순위 계산식=(대기시간+서비스시간)/서비스시간, 수치가 높을 수록 우선순위가 높다 반환 시간 = 종료시간 - 도착시간 대기시간 = 반환시간 -서비스시간 **반종도 대반서 |
교착상태 | 두 개 이상의 프로세스가 특정 자원할당을 무한정 대기하는 상태 상호배제 / 점유와 대기 / 비선점/ 환형 대기 💡 교착상태 해결 방안 p4-104 - 예방, 회피(은행가 알고리즘), 발견, 복구 |
디스크 스케줄링 | -많은 양의 데이터에 빠르게 엑세스 하기 위해 디스크 헤드를 움직이는 경로를 결정 -FCFS, SSTF, SCAN, C-SCAN, LOOK(엘레베이터 알고리즘), N-STEP SCAN, SLTF(섹터큐잉) |
환경변수 | 컴퓨터 동작하는 방식에 영향을 미치는 동적 값들의 모임 💡 유닉스 시스템의 환경 변수 env : 전역 변수 설정 및 조회 set(setenv) : 사용자 환경 변수 설정 및 조회 export : 사용자 환경변수를 전역 변수로 설정(변수를 export시키면 끝까지 기억) ㄴ 위의 명령어는 변수 없이 사용하면 모든 환경 변수 및 그에 따른 모든 값을 보여준다 |
쉘 스크립트 | 쉘이나 명령줄 인터프리터(CLI)에서 동작되도록 사용하는 스크립트 💡 리눅스는 최상위 유저를 #으로 표시, 일반 유저를 $로 표시 uname: 시스템의 모든 정보 확인(버전 확인) last: 부팅부터 현재까지의 모든 사용자 로그인과 로그아웃 정보 확인 pwd: print working directory. 현재 작업중인 디렉토리의 절대 경로 출력 ls: list. 현재 디렉터리 내 파일 및 폴더들을 표시하는 명령어 fork: 새로운 프로세스를 생성 cat: 파일의 내용을 화면에 출력 rm: 파일 삭제 cp: 파일 복사 mv: 파일 이동 chmod: 특정 파일 또는 디렉토리의 퍼미션 수정 ifconfig: 네트워크 인터페이스 설정 및 확인(ip확인) / : 최상위 디렉터리 root : 최상위 디렉터리 아래 root 계정의 홈 디렉터리 |
파일 디스크립터 (파일 서술자) |
-운영체제가 필요로 하는 파일에 대한 정보가 있는 파일 제어 블록(FCB) -파일마다 독립적으로 존재하며, 시스템에 따라 다른 구조 -보통 보조기억장치 내에 저장되어 있다가 파일이 개방될때 주기억장치로 이동 -파일시스템에서 관리하므로 사용자가 직접 참조불가 |
인터넷 | TCP/IP 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크 <구성요소> 종단 시스템, 통신망, 프로토콜, 인터넷 주소체계, 인터넷 접속제공 |
종단 시스템 | 호스트와 서버, 통신링크, 처리량 등으로 구성 |
통신망 | ▸ 근거리 통신망(LAN; Local Area Network) 유선, 네트워크 매체를 이용하여 집, 사무실, 학교 등의 건물과 같은 가까운 지역을 한데 묶은 컴퓨터 네트워크 버스형, 트리형, 링형, 매시형, 성형 ▸ 무선랜 통신망(WLAN; Wireless Local Area Network) 유선랜과 무선 단말 사이를 무선 주파수를 이용하여 전송하는 네트워크 IEEE802.11 ▸ 원거리 통신망(WAN; Wide Area Network) 국가망 또는 각 국가의 국제 정보통신망으로 운용되는 네트워크, 거리에 제약이 없지만 속도가 느리고 높은 에러율 <WAN연결기술> 전용 회선 방식, 회선 교환방식, 패킷 교환 방식 |
QoS (Quality of Service) |
QoS 강화를 위해 MAC지원 기능 채택IEEE802.11e-> 초고속 서비스(IP전화,비디오)등 |
AP | Access Point. 무선공유기(무선랜 단말과 유선랜 간의 연계) |
전용 회선 방식 | 전용 회선 활용, 통신 사업자가 사전에 계약을 체결한 송신자와 수신자 끼리만 데이터를 교환 |
회선 교환방식 | 물리적 전용선을 활용, 데이터가 정해진 동일 경로로만 전달 대역폭(동시에 전송할 수 있는 양)이 고정되고, 안정적인 전송률 확보 |
패킷 교환 방식 | 전체 메시지를 각 노드가 수용할 수 있는 크기(패킷)로 잘라서 보내는 방식 |
전송 매체 접속 제어 | 통신망 사용시 공유 매체에 대한 다중 접근제어 중요 CSMA/CD: 반송파 감지 다중 접속/충돌 탐지, IEEE802.3 유선LAN 반이중방식 CSMA/CA: 반송파 감지 다중 접속/충돌 회피, IEEE802.11 무선LAN 반이중방식 |
프로토콜 | 서로 다른 시스템에 있는 두 개체 간의 데이터 교환을 원활히 하기 위한 일련의 통신 규약 톰 마린, 프로토콜은 기술적 은어 구문, 의미, 타이밍 |
인터넷 주소체계 | - IP주소 방식 - DNS 방식(도메인 주소) |
인터넷 접속 제공 | - ISP: 통신회사(인터넷 서비스 제공자로 인터넷 접속의 수단 제공) - URL: 네트워크상에서 자원이 어디 있는지 알려주기 위한 규약 -웹 브라우저:쌍방향 통신 |
OSI 7계층 | 개방형 시스템 상호 연결 모델로 각 계층은 서로 독립적으로 구성 |
계층1 물리 Physical |
◼︎ 실제 장치들을 연결하기 위해 필요한 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환(물리 신호) ◼︎ 전송단위: 비트 ◼︎ 프로토콜 RS-232C ◼︎ 물리 계층 장비 -허브: 여러 대의 컴퓨터를 연결하여 네트워크로 송신하거나, 하나의 네트워크로 수신된 정보를 여러 대의 컴퓨터로 송신하기 위한 장비, 물리선으로 연결되는 장비 -리피터: 디지털 신호를 증폭시켜주는 역할을 하며 신호가 약해지지 않고 컴퓨터로 수신되도록 하는 장비 (디지털 신호 증폭기) |
계층2 데이터 링크 Data Link |
◼︎ 하위 두 계층 사이에 물리적 연결을 이용해 신뢰성 있는 정보 전송, 링크의 설정과 유지 및 종료를 담당하며 노드 간의 동기화, 오류제어, 흐름제어, 회선 제어, 오류검출/ 재전송 ◼︎ 전송단위: 프레임(mac#, ip#, port#, data) ◼︎ 프로토콜 HDLC, PPP, 프레임 릴레이, ATM ◼︎ 데이터 링크 계층 장비 - 스위치: 프레임을 MAC주소 기반으로 빠르게 전송시키는 데이터 링크 계층의 통신 장치(브리지와 허브 단점 개선) - 브리지: 두개의 근거리 통신망을 연결해주는 통신망 연결 장치 ** 스위치 장비의 주요 기술 - VLAN: 물리적 배치와 상관없이 논리적으로 LAN을 구성하여 Broadcast domain을 구분할 수 있게 해주는 기술로 접속된 장비들의 성능향상 및 보안성 증대 효과 - STP: 스위치 무한 루프 현상을 막기 위해서 우선 순위에 따라 1개의 경로로만 통신하도록 하는 프로토콜 **데이터 링크 계층의 오류 제어-데이터 전송 시 감쇠, 왜곡, 잡음에 의해 생성된 오류를 검출하고 정정하는 기능 💡 전진(순방향)오류 수정(FEC) 검출된 오류를 재전송 오류없이 수신 측에서 스스로 수정 [오류 검출 및 수정] 해밍 코드 방식, 상승 코드 방식 💡 후진(역방향)오류 수정(BEC) 오류가 발생 시 수신측에서 송신측으로 재전송을 요구하는 방식 [오류 검출] 패리티 검사, CRC, 블록합 검사 [오류 제어] 자동 반복 요청(ARQ; Automatic Repeat reQuest) • Stop-and-wait ARQ : 한 개의 프레임 전송하고 수신측에서 수신할 때까지 정지하고 기다리는 방식(정지-대기 반복) • Go-back-N ARQ : 데이터 프레임을 연속적으로 전송하다가 NAK을 수신 시 오류 발생한 프레임 후로 전송된 모든 프레임을 재전송 • Selective repeat ARQ : 연속적으로 데이터 프레임을 전송하고 에러가 발생한 데이터 프레임만 재전송 (수신측에서 전부 다 받고 안받은 걸 요청해서 송신쪽에서 재전송) |
계층3 네트워크 Network |
◼︎ 다양한 길이의 패킷을 네트워크를 통해 전달, 최적화 된 경로를 제공(라우팅) 그 과정에서 전송계층이 요구하는 서비스 품질(QoS)을 위한 수단을 제공 ◼︎ 전송단위: 패킷 (ip#, port#, data) ◼︎ 프로토콜 IP, ICMP, ARP(<->RARP), IMGP, 라우팅 프로토콜(RIP, OSPF, EGP, BGP) ◼︎ 장비 라우터 L3스위치 |
계층4 전송 Transport |
◼︎ 단말기 사이에 신뢰성 있고 명확한 데이터를 전달 (송/수신 프로세스 간 연결하여 신뢰성 있는 통신 보장) 데이터 분할, 재조립, 흐름 제어, 오류 제어, 혼잡 제어 ◼︎ 전송단위: 세그먼트 (port#, data) ◼︎ 프로토콜 TCP(연결지향,신뢰성), UDP(비연결지향,비신뢰성) ◼︎ 장비 L4스위치 |
계층5 세션 Session |
◼︎ 송/수신 간의 논리적인 연결, 연결접속, 동기제어 ◼︎ 전송단위: 데이터 ◼︎ 프로토콜 RPC, NetBIOS ◼︎ 장비: 호스트(PC등) |
계층6 표현 Presentation |
◼︎ 하위 계층에서 온 데이터를 사용자가 이해할 수 있는 형태로 데이터 형식 설정, 부호 교환, 암/복호화 ◼︎ 전송단위: 데이터 ◼︎ 프로토콜 JPEG, MPEG ◼︎ 장비: 호스트(PC등) |
계층7 응용 Application |
◼︎ 사용자와 네트워크 간 응용서비스를 수행하고 데이터 생성(인터페이스 역할) ◼︎ 전송단위: 데이터 ◼︎ 프로토콜 HTTP(텍스트 전송), FTP(파일 전송, 포트번호20번/21번) SMTP(이메일 전송,포트번호25번),POP3, IMAP telnet(보안없는 원격 접속,포트23번), SSH(강력한 보안의 원격접속, 포트22번) ◼︎ 장비: L7스위치, 호스트(PC등) |
페이징 기법 | ■ 페이지 크기가 작을 경우 ■ 더 많은 페이지 사상 테이블 공간이 필요 내부 단편화는 줄고, 특정한 참조 구역성만을 포함하기 때문에 기억 장치 효율 증가 페이지 정보가 갖는 페이지 맵 테이블의 크기가 커지면서 맵핑 속도가 늦어짐 디스크 접근 횟수가 많아 져서 전체적인 입/출력 시간의 증가 ■ 페이지 크기가 큰 경우 ■ 테이블의 크기가 작아지므로 주기억 장치의 공간이 절약 페이지 정보를 갖는 페이지 맵 테이블의 크기가 작아져서 관리가 용이하고, 맵핑속도가 빨라짐 디스크 접근 횟수가 줄고, 전체적인 입/출력 시간 감소 페이지 단편화가 증가하고, 이에 따라 기억공간의 낭비 초래 |
'자격증 > 정보처리기사' 카테고리의 다른 글
정처기 실기 약술형 대비 정리 (1) | 2022.03.28 |
---|---|
정처기필기 오답정리 (0) | 2022.03.04 |
[정처기필기] 소프트웨어 설계 (0) | 2022.03.04 |
[정처기필기] 데이터베이스 구축 (0) | 2022.03.02 |
자료구조와 알고리즘 (0) | 2021.12.09 |