본문 바로가기

정처기

프로그래밍 언어 활용

반응형

★개발 환경 구축

1) 하드웨어 및 소프트웨어 장비 구축하는 것, 성능, 편의성, 라이선스 등의 비지니스 환경에 적합한 제품을 최종적으로 결정하여 구축

2) 하드웨어 환경

 - 클라이언트와 서버로 구성됨

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

 - 웹 어플리케이션 서버(WAS): 정적인 콘텐츠 처리와 반대, 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어, 데이터 접근, 세션 관리, 트랜잭션 관리등을 위한 라이브러리 제공

 - 데이터베이스 서버: 데이터베이스와 이를 관리하는 DBMS를 운영하는 서버

 - 파일서버: 데이터베이스에 저장하기에는 비효율적이거나 서비스 제공을 목적으로 유지하는 파일들을 저장하는 서버

3) 웹서버의 기능

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

 - 통신 기록: 처리한 요청들을 로그 파일로 기록하는 기능

 - 정적파일관리★: 정적 파일들을 저장하고 관리하는 기능

 - 대역폭제한★: 네트워크 트래픽의 포화를 방지하기 위해 응답 속도를 제한하는 기능

 - 가상호스팅★: 하나의 서버로 여러 개의 도메인 이름을 연결하는 기능

 - 인증: 사용자가 합법적인 사용자인지를 확인하는 기능

4) 소프트웨어 환경

 - 시스템 소프트웨어와 개발에 사용되는 개발 소프트웨어로 구성됨

 - 시스템 소프트웨어: 운영체제, 웹서버 및 WAS 운용을 위한 서버 프로그램, DBMS

 - 개발 소프트웨어: 요구사항 관리 도구, 설계/모델링 도구, 빌드 도구, 구현 도구, 테스트 도구, 형상 관리 도구 등

 > 요구사항 관리도구: JIRA, Trello, Reqtify, inteGREAT, IMB DOORS★, 요구 사항의 수집과 분석, 추적 등 편리하게 도와줌

 > 설계/모델링도구: UML을 지원하며, 개발의 전과정에서 설계 및 모델링을 도와주는 소프트웨어

 > 빌드도구★: 구현 도구를 통해 작성된 소스의 빌드 및 배포, 라이브러리 관리를 지원하는 소프트웨어(Ant, Maven, Gradle, Jenkins)

 > 구현도구★: 개발 언어를 통해 애플리케이션의 실제 구현을 지원하는 소프트웨어(Eclipse, Intellij IDEA, Visual Studio, Node.js)

 > 테스트도구: 모듈들이 요구사항에 적합하게 구현됐는지 테스트하는 소프트웨어(JUnit, HttpUnit, NUnit, SprintTest)

 > 형상관리도구: 산출물들을 버전별로 관리하여 품질 향상을 지원하는 소프트웨어(CVS, SVN, GIT 등)

5) 개발 언어의 선정 기준★: 적정성, 효율성, 이식성, 친밀성, 범용성(적효이친범)

 

★서버개발

1) 개요

 - 웹 애플리케이션의 로직을 구현할 서버 프로그램을 제작하여 웹어플리케이션서버(WAS)에 탑재하는 것 의미

 - 서버 개발에 사용되는 프로그래밍 언어

2) 서버 개발 프레임워크

 - 프레임워크: 클래스나 인터페이스 등을 모아둔 집합체를 뜻함

 - 대부분 MVC 패턴을 기반으로 개발됨

   > Spring: JAVA기반읆 ㅏㄴ들어진 프레임워크로, 전자정부 표준 프레임워크의 기반 기술로 사용됨

   > Node.js: 자바스크립트 기반으로 만들어진 프레임워크. 비동기 입출력 처리와 이벤트 위주의 높은 처리 성능을 가짐

   > Django: 파이썬 기반으로 만들어진 프레임워크. 컴포넌트의 재사용과 플러그인화 강조

   > CodeIgniter: PHP 기반으로 만들어진 프레임워크. 인터페이스가 간편하여 서버 자원을 적게 사용함

   > Ruby on Rails: 루비 기반으로 만들어진 프레임워크. 코드의 길이가 짧아 신속한 개발 가능

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

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

 - 결합도를 약하게 하고 응집도를 강하게 하며 모듈의 크기를 작게 만들어야 함

 - 일관성 유지, 공통 모듈 = 재사용할 수 있는 모듈 -> 함수와 객체 재사용, 컴포넌트 재사용, 애플리케이션 재사용

  -> 재사용 프로그래밍 기법: 객체지향, 제네릭, 자동, 메타 프로그래밍(객제자메)

4) 프레임워크의 특성

  - 모듈화

  - 재사용성

  - 확장성: 다형성 통한 인터페이스 확장이 가능

  - 제어의 역흐름: 객체들의 제어를 프레임워크가 관리함으로써 생산성 향상시킴

(모재확역) 

5) 프레임워크의 구성요소: 개발환경, 실행환경, 운영환경, 관리환경(개실운관)

 

★보안 및 API

1) 소프트웨어 개발 보안: 안전한 소프트웨어를 개발하기 위한 일련의 보안 활동(시큐어코딩)

 - 기밀성, 무결성, 가용성을 유지하는 것이 목표. 소프트웨어 개발 보안 가이드를 참고하여 보안 항목 점검

2) 소프트웨어 개발 보안 점검 항목

 - 세션 통제: 세션의 연결과 연결로 인해 발생하는 정보를 관리하는 것

 - 입력 데이터 검증 및 표현: 입력 데이터에 대한 유효성. 검증실패 시 처리할 수 있도록 코딩★(XSS,경로조작, SQL삽입)

 - 보안기능: 인증, 접근제어, 기밀성, 암호화 등의 기능★(CSRF, 부적절한 인가, 중요기능 허용)

 - 시간 및 상태: 병렬 처리 시스템이나 시간과 실행상태를 관리(TOCTOU: Time of Check Time of Use), 재귀함수

 - 에러 처리: 오류들을 사전에 정의하여 문제들 예방

 - 코드 오류: 자우너의 반환 고려하여 코딩: 보안 약점 - 부적절한 자우너 해제, 널포인터 역참조

 - 캡슐화: 데이터와 데이터를 처리하는 함수를 하나의 객체로 묶어 코딩

 - API 오용: 보안에 취약한 API를 사용하지 않도록 고려하여 고딩하는 것.

3) API★: 응용 프로그램 개발 시 라이브러리를 이용할 수 있도록 함으로써 효율적인 소프트웨어 구현ㅇ르 도와주는 인터페이스

 

★배치 프로그램

1) 배치프로그램★: 미리 정해진 일련의 순서에 따라 일괄적으로 처리하는 것

 -> 이벤트성 배치(조건 충족될 때만), On-Demand배치(요청시), 정기배치(정해진 기간)

- 필수요소: 대용량 데이터, 자동화(개입 없이 수행), 견고성(중단되는 일 없이 수행), 안전성/신뢰성(추적), 성능(수행 방해하지 않고 지정된 시간 내 처리 완료)

2) 배치 스케줄러, 잡 스케줄러: 일괄 처리 작업이 설정된 주기에 맞춰 자동으로 수행되도록 지원해주는 기능

 - 스프링배치: 스프링 프레임워크의 특성을 그대로 가져와 스프링이 가지고 있는 다양한 기능들을 모두 사용할 수 있는 오픈소스 프레임워크

 - 쿼츠: 스프링 프레임워크로 갭라되는 응용 프로그램들의 일괄 처리를 위한 다양한 기능을 제공하는 오픈 소스 라이브러리(트리거, 스케줄러)

 

★패키지 소프트웨어

1) 개요: 기업에서 여러 기능들을 통합하여 제공하는 SW, 기업 환경에 적합하게 커스터마이징 후 사용, 70% 이상 충족시키는 패키지 소프트웨어 사용

2) 패키지 소프트웨어: 70%이상 충족시키는 패키지 소프트웨어, 품질이 검증됐고 업계 표준 주용, 라이선스는 판매자, 개발을 위한 인력과 시간 절약 가능, 호환성 보장 안 됨, 결함 발생 시 즉시 대응 어려움

3) 전용 개발 소프트웨어: 모든 기능 요구사항 반영 가능, 개발자 역량에 따라 안전성 다름, 라이선스=회사, 개발을 위한 이력과 시간 필요, 설계 단계부터 고려하여 개발해서 호환성 좋음. 결함 발생 시 즉시 대응 가능

 

★데이터타입

불린타입, 문자타입, 문자열타입, 정수 타입, 부동소수점 타입, 배열 타입

★데이터 타입 크기

- char/unsigned char: 1Byte

- short -> 2Byte

- int -> 4Byte

- long -> 4Byte

- long long 8Byte

- float: 4Byte

-double: 8Byte

-long double 8Byte

 

★ 변수

1) 발생하는 값을 저장하기 위한 공간으로 변할 수 있는 값을 의미

2) 변수명 작성 규칙★: 영문자, 숫자 _ 사용가능. 첫글자에 숫자는 올 수 없음. 대,소문자 구분. 공백이나 특수문자 사용 불가능, 예약어를 변수명으로 할 수 없음★,변수 선언 시 문장 끝에 세미콜론을 붙여야 함

3) 예약어: do, for, while(반복) case,default, else, if, switch(선택) break, continue, goto, return(분기)

  자료형: char, short, int, long, float, double, enum, signed, unsigned, union, void, struct, typedef

  기억 클래스: auto, register, static, extern

  기타: const, sizeof, volatile

4) 기억 클래스: 변수 선언 시 메모리 내에 변수의 값을 저장하기 위한 기억영역이 할당. 기억 영역을 결정하는 작업=기억 클래스

 자동변수,메모리,auto   레지스터변수,레지스터,register   정적변수,메모리,static,영구적   외부변수,메모리,extern

5) 변수선언: 자료형, 변수명, 값

 

★연산자

+, -, *, **(제곱), /, //(몫), %(나머지), ++, --

<<, >>

==, !=, >, >=, <, <=

비트연산자★: &(and), |(or), ^(xor), ~(not)

논리연산자★: &&(and), ||(or), !(not)

조건연산자: if,else

대입연산자: +=, -=, *=, /+, %=, <<=, >>=

기타연산자: sizeof, ,(순서연산자), (자료형)

단항 연산자: !, ~, -- ++ sizeof

산술연산자: * / % + -

- 연산자 우선순위★: 단항 연산자 > 산술 연산자 > 시프트 연산자 > 관계연산자 > 비트 연산자 > 논리 연산자 > 조건 연산자 > 대입 연산자> 순서연산자

]

★제어문, 반복문

1) 제어문: 위에서 아래로 실행. 프로그램의 순서를 변경할 때 사용하는 명령문 = 제어문

2) 단순 if문

3) 다중 if문

4) switch문★: 분기할 곳이 여러곳인 경우

5) 반복문의 개념: 일정한 횟수를 반복하는 명령문

6) for문: 조건이 참이면 실행할 문장을 실행한 후 증가값만큼 증가.

7) while문: 조건이 참인 동안 실행할 문장을 반복수행하는 제어문, 조건이 처음부터 거짓이면 한번도 실행하지 않음

8) do~while문: 조건이 처음부터 거짓이어도 실행할 문장을 무조건 한번 실행함. 탈출 여부를 결정함

9) break, continue: switch문이나 반복문 실행을 제어하기 위해 사용되는 예약어

 

★배열과 문자열

1) 배열: 동일한 데이터 유형을 여러 개 사용해야 할 경우 손쉬운 처리를 위해 여러 개 변수를 조합해서 하나의 이름으로 정의해 사용

- 자료형 변수명[개수]

- 2차원배열: 자료형 변수명[행개수][열개수]

 

★포인터

1) 포인터 = 변수의 주소. 변수의 주소를 저장할 때 사용하는 변수 = 포인터 변수. 동적변수

- 포인터 변수: int *a

- 변수의 주소 &b

- 포인터 변수에 간접 연산자*를 붙이면 해당 포인터 변수가 가리키는 곳의 값을 말함

   > c = *a;

2) 포인터와 배열

 - 배열을 포인터 변수에 저장한 후 포인터를 이용해 배열의 요소에 접근할 수 ㅇㅆ음

 - 배열 요소에 대한 주소를 지정할 때는 일반 변수와 동일하게 & 연산자를 사용

 

★절차적 프로그래밍 언어

1) 실행되는 절차를 중요시함

2) 실행속도가 빠르고, 다른 위치에서 호출하여 사용할 수 있음, 구조적인 프로그래밍이 가능함, 분석하기 어렵고 유지보수나 코드의 수정이 어려움

3) 종류★: C, Algol, Cobol, Fortran, Basic

 

★객체지향 프로그래밍 언어

1) 소프트웨어를 개발할 때도 객체들을 조립해서 프로그램을 작성할 수 있또록 한 프로그래밍 기법

2) 장단점: 재사용과 시스템 확장이 용이하고 대형 프로그램 작성이 용이함. 정형화된 분석 및 설계 방법이 없음. 실행 속도가 느림

3) 종류★: C++, C#, JAVA, Delphi, Smalltalk

4) 구성요소: 객체(기억장소 가짐), 클래스(속성과 연산 정의, 데이터를 추상화하는 단위), 인스턴스(각 객체), 메서드(객체 사용 방법), 메시지(지시 위한 방법)

5) 특징★: 캡슐화, 상속성, 다형성, 추상화, 정보 은닉

 

★스크립트 언어

: 기계어로 컴파일되지 않고 별도의 번역기가 소스를 분석하여 동작하게 되는 언어

: 클라이언트용 언어(자바스크립트), 서버용 스크립트 언어(ASP, JSP, PHP, Python)

2) 장단점: 컴파일 없이 바로 실행하므로 결과 바로 확인 가능, 갭라 시간 짧고 소스코드를 쉽고 빠르게 수정 가능, 실행속도가 느림

3) 스크립트언어종류

 - 자바스크립트: 클래스가 존재하지 않으며 변수 선언도 필요 없음

 - ASP: 동적으로 수행되는 페이지를 만들기 위한 언어

 - JSP: 자바로 만들어진 서버용 스크립트

 - PHP: C, JAVA 등과 문법과 유사

 - Python: 라이브러리 풍부, 들여쓰기를 사용하여 블록 구분

 - Perl: 인터프리터 방식의 프로그래밍 언어

 

★선언형 언어

1) 개요: 프로그램이 수행해야 하는 문제를 기술하는 언어. 함수형 언어와 논리형 언어가 있음. 알고리즘은 명시하지 않음

 - 명령형 언어: 폰노이만 구조에 개념적인 기초를 두고 있음

2) 선언형 언어의 장단점: 가독성이나 재사용이 좋고 오류가 적음. 프로그램 동작을 변경하지 않고도 관련값을 대체할 수 있음.

3) 선언형 언어의 종류: 하스켈(함수형 프로그래밍 언어), 리스프(함수평 프로그래밍 언어. 함수 이름혹은 연산자가 첫번째로 위치), 프롤로그(논리식), HTML, XML(HTML 단점 보완해 상호교환)

 

★라이브러리

1) 개념: 자주 사용하는 함수와 데이터들을 미리 만들어 모아 놓은 집합체로 필요할 때 언제든지 호출해 사용 가능

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

  - 외부 라이브러리: 다운받아 설치한 후 사용

2) C언어 표준라이브러리

 - stdio.h -> 입출력, math.h -> 수학함수, string.h -> 문자열 처리, stdlib.h -> 자료형변환, 난수 발생, 메모리 할당, time.h -> 시간처리

3) JAVA 표준 라이브러리

 - java.lang -> 기본적으로 필요 import문 없이도 사용 가능, java.util -> 날짜처리, 난수발생, 복잡한 문자열 처리, java.io -> 파일 입출력, java.net -> 네트워크와 관련된 기능 제공, java.awt: 사용자 인터페이스와 관련된 기능 제공

 

★데이터 입출력

1) scanf('%d', &a)함수

- 서식 문자열: %d, %u(부호 없는 10진수), %o, %x(16진수), %c, %s, %f, %e, %ld, %lo, %lx, %p

2) printf()함수, \n, \b, \t, \r, \0, \', \", \a(벨소리 출력), \\, \f(한페이지 넘김)

3) 기타 표준 입출력 함수

 - 입력: getchar(), gets()

 - 출력: putchar(), puts()

 

★운영체제의 개념

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

2) 목적: 처리 능력, 반환시간, 사용 가능도, 신뢰도

3) 기능

 - 자원 관리, 스케줄링 기능, 인터페이스 제공, 입출력 장치와 사용자 프로그램 제어, 데이터 및 자원의 공유 기능 제공, 시스템의 오류 검사 및 복수, 자원 보호 기능 제공, 보조 기능 제공

4) 자원 관리: 프로세스 관리, 기억장치 관리, 주변장치 관리, 파일 관리

5) 운영체제 종류★: Windows, UNIX, LINUX, MacOS, MS-DOS

6) Windows의 주요 특징★: GUI, 선점형 멀티태스킹, PnP(필요한 시스템 환경을 OS가 자동으로 구성), OLE(연결하거나 삽입하여 편집할 수 있게 하는 기능), VFAT(virtual File Allocation Table)를 이용해 최대 255자까지 파일 이름 지정 가능, 개인 사용자 시스템(컴퓨터 한대를 한 사람만이 독점해서 사용)

7) UNIX 개요 및 특징★: 시분할 시스템을 위해 설계된 대화식 운영체제, 다중 작업과 다중 사용자 지원. 이식성ㅇ ㅣ높고 계층 구조.

  - 커널: UNIX의 핵심 부분. 프로그램과 하드웨어 간의 인터페이스 역할 담당.

  - 쉘: 프로그램 호출하고 명령 수행하는 명령어 해석기. 인터페이스 담당. 파이프라인 기능. 여러 종류 쉘이 있음.

8) UNIX에서의 프로세스 간 통신

 - 시그널: 간단한 메시지 이요해 통신

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

 - 소켓: 대화를 가능하게 하는 쌍방향 통신 방식

9) 리눅스 개요 및 특징: UNIX와 완벽하게 호환됨. 소스코드가 무료로 공개

10) MacOS

 

★기억장치관리

1) 반입, 배치, 할당, 교체. 주기억장치 공간을 효율적으로 사용 위함

2) 반입(Fetch) 전략: 언제 주기억장치로 적재할 것인지 결정 -> 요구 반입, 예상 반입

3) 배치 전략: 어디에 위치시킬 것인가 결정 -> 최초적합(첫번째에), 최적 적합(가장 적게), 최악적합(가장 많이 남김)

4) 교체 전략(어느 영역을 교체할 짓) ex) FIFO, LRU, LFU, NUR, OPT, SCR

5) 주기억장치 할당 개념

 - 연속 할당 기법 -> 단일 분할 할당(오버레이, 스와핑), 다중분할할당기법(고정분할 할당 기법, 가변분할 할당기법)

 - 분산 할당 기법 -> 페이징 기법, 세그먼테이션 기법(특정 단위의 조각으로 나누어 할당)

6) 가상기억장치 개요

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

 - 주소 변환 작업 필요

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

7) 페이징기법

 - 동일한 크기로 나눈 후 페이지 프레임에 적재시켜 실행

 - 일정한 크기로 나눈 단위를 페이지라 하고, 주기억장치의 단위를 페이지 프레임이라 함.

 - 내부 단편화 발생

 - 페이지 맵 테이블 필요

8) 세그먼테이션 기법

 - 다양한 크기의 논리적인 단위로 나눈 후 기억 공간을 절약하기 위해서 사용하는 실행시키는 방법

 - 논리적인 크기로 나눈 단위 = 세그먼트

9) 페이지 교체 알고리즘

 - FIFO = FCFS

 - LRU(Least Recently Used): 최근 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법, 가장 오래 전에 사용된 페이지 교체

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

 - OPT(최적 교체): 앞으로 가장 오랫동안 사용되지 않을 페이지 교체

 - NUR(Not Used Recently): LRU와 비슷한 알고리즘으로 최근에 사용하지 않은 페이지를 교체하는 기법. 참조비트와 변형비트 사용

 - SCR(2차 기회 교체): 자주 사용되는 페이지의 교체를 방지하기 위한 것으로 FIFO 기법의 단점 보완

10) 페이지 크기

 - 페이지 크기가 작으면: 페이지 단편화 감소, 주기억장치 이동 시간 줆, 효율적인 워킹셋 유지, 기억장치 효율 높아짐, 테이블 크기 커지고 매핑속도 늦어짐. 전체적인 입출력 시간은 늘어남

 - 페이지 크기가 커지면 페이지 단편화 증가. 주기억장치 이동 시간 늘어나고. 테이블 크기 작아지고 매핑 속도 빨라짐, 입출력 효용성 증가

11) 지역성, 구역성

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

 - 워킹셋 이론의 기반, 데닝 교수에 의해 구역성 개념이 증명

  > 시간적 구역성(가까운 시간 내 계속 참조)_, 공간적 구역성(근처 페이지 계속 참조. 배열,순차적코드)

12) 워킹셋★: 자주 참조하는 페이지들의 집합. 시간에 따라 변경됨

13) 페이지 부재 빈도(PFF): 페이지 부재율을 적정 수준으로 유지. 참조할 페이지가 없는 현상이 일어나는 횟수

14) 프리페이징: 필요할 것 같은 모든 페이지를 미리 한꺼번에 페이지 프레임에 적재하는 기법

15) 스레딩★: 페이지 교체에 소요되는 시간이 더 많아지는 현상. 다중 프로그래밍 정도가 더욱 커지면 스래싱이 나타나고 CPU 이용률이 급격히 감소

16) 스래싱 현상 방지 방법: 다중 프로그래밍 정도 적정 수준 유지★, 페이지 부재 빈도 조절, 워킹셋 유지, 부족한 자원 증설하고 일부프로세스 중단

 

★프로세스 및 스케줄링

1) 프로세스 정의: 실행중인 프로그램을 의미하며 작업, 태스크라고도 함

- 프로세스 정의★: 프로시저가 활동중인 것, 비동기적 행위를 일으키는 주체★,운영체제가 관리하는 실행 단위,실행중인 프로그램,PCB을 가진 프로그램,실기억장치에 저장된 프로그램,프로세서가 할당되는 실체로서 디스패치가 가능한 단위

2) PCB

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

3) 프로세스 상태 전이

https://hi5june.tistory.com/30

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

  - 디스패치: 준비상태에서 실행 상태로 전이되는 과정

  - wake up: 대기상태에서 준비상태로

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

5) 스레드

 - 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당 받아 실행하는 단위

 - 경량 프로세스라고도 함.

 - 독립적인 다중 수행 가능 -> 병행성 증진, 성능과 처리율 향상, 프로그램 응답 시간 단축과 기억장소의 낭ㄴ비가 줄어들고 통신이 향상

   > 단일 스레드: 하나의 스레드

   > 다중 스레드: 하나 이상의 스레드가 존재하는 경우

6) 스케줄링 개요

 - 장기 스케줄링: 어떤 프로세스가 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업 -> by 작업 스케줄러

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

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

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

7) 스케줄링 목적

- 공정성: 모든 프로세스에 공정하게 할당

- 처리량 증가, CPU 이용률 증가, 우선순위 제도, 오버헤드 최소화, 응답시간, 반환시간, 대기시간 최소화, 균형 잇는 자원 사용, 무한 연기 회피 -> CPU 이용률, 처리율, 반환 시간, 대기시간, 응답시간

8) 프로세스 스케줄링의 기법

 - 선점 스케줄링: CPu 강제로 배앗아 선점 가능. 대화식 시분할 시스템에 사용, 많은 오버헤드 발생. 선점이 가능하도록 인터럽트용 타이머 클록 필요 -> Round Robin, SRT(Remaining Time), MLQ(Multi-Level Queue), MFQ

 - 비선점 스케줄링: 강제로 뺏어 선점 불가능. 공정하게 처리 가능. 응답 시간의 예측 용이. 일괄처리방식에 적합. 가뭄현상

  > 우선순위, 기한부, FCFS, SJF, HRN(SJF의 가뭄현상ㅇ르 보완하기 위한 방식으로 가장 높은 것부터 낮은 순으로 우선순위 부여)

 

★인터넷 및 OSI 참조 모델

1) IP주소: 컴퓨터 자원을 구분하기 위한 고유한 주소. 숫자로 8비트씩 4부분 총 32비트로 구성

-> A클래스(0~127), B클래스(128~191), C클래스(129~223), D클래스(224~239), E클래스(240~255)

2) 서브네팅: 여러 개의 작은 네트워크로 나누어 사용. IPv4에서 네트워크 주소와 호스트 주소를 구분하기 위한 비트 서브넷 마스크라 함.

3) IPv6★: 128비트 긴 주소 사용 .인증성, 기밀성, 무결성 지원으로보안 문제 해결 가능, 품질 보장(QoS)이 용이

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

  + IPv4: 유니캐스트, 멀ㄹ티캐스트, 브로드캐스트

4) 도메인네임: IP주소를 문자형태로 표현한 것. DNS(IP주소로 변환하는 역할)

5) OSI 참조 모델★: 응용계층(HTTP, FTP, SMTP...), 표현계층(코드변환, 암/복호화, 구문검색, JPEG, MPEG), 세션계층(연결 접속, 동기점SSH, TLS), 전송계층(종단간 신뢰성 있는 TCP/UDP, RTCP->세그먼트), 네트워크계층(경로라우팅 제공. IP, ICMP 패킷), 데이터링크계층(노드 간 물리적 연결 동기화, 오류 및 흐름제어, 오류 검출 및 재전송 -> 프레임(HDLC, PPP, LLC, MAC)), 물리 계층: 전기적 기능적 절차적 기능 정의(비트)

 

★네트워크 관련 장비 및 프로토콜

1) 네트워크 관련 장비

 - 게이트웨이: 전 계층의 프로토콜 구조가 다른 네트워크의 연결 수행

 - 라우터: 데이터 전송의 최적 경로를 선택할 수 있는 기능이 추가된 것 -> 네트워크 계층

 - 스위치: 큰 LAN을 만드는 장치, 하드웨어 기반으로 처리해서 전송 속도가 빠름 -> 데이터 링크 계층

 - 브리지: 컴퓨터 그룹을 연결하는 기능 수행, MAC브리지라고도 함 -> 데이터 링크 계층

 - 리피터: 다시 전송하는 역하 ㄹ수행 -> 물리 계층

 - 허브: 한 사무실이나 가까운 거리 컴퓨터들을 연결하는 장치 -> 물리계층

2) 프로토콜 정의: 데이터 교환을 원활하게 수행할 수 있도록 표준화시켜 놓은 통신 규약

3) 프로토콜 기본 요소★: 구문(데이터 형식, 부호화, 신호 레벨 규정), 의미(효율적이고 정확한 정보 전송을 위한 협조 사항과 오류 관리를 위한 제어 정보 규정), 타이밍(두 기기 간의 통신 속도, 메시지 순서 제어 등 규정)

 

★TCP/IP

1) TCP/IP

 - TCP: 신뢰성 있는 연결형 서비스, 순서제어,오류제어, 흐름제어 기능 제공. 스트림 전송 기능 제공

 - IP: 데이터그램을 기반으로 하는 비연결형 서비스 제공. 경로선택기능 제공

2) TCP/IP 구조

 - 응용계층: 데이터 송수신 제공

 - 전송계층: 신뢰성 있는 통신 제공

 - 인터넷 계층: 경로 설정 제공

 - 네트워크 액세스 계층: 실제 데이터를 송수신하는 역할

3) 응용 계층의 주요 프로토콜

 - HTTP: HTML 문서를 송수신하기 위한 표준 프로토콜

 - FTP: 파일을 주고 받을 수 있는 원격 파일 전송 프로토콜

 - TELNET: 멀리 떨어져있는 컴퓨터에 접속하여 자신의 컴퓨터처럼 사용할 수 있도록 해주는 서비스

 - SMTP: 전자 우편을 교환하는 서비스

 - SNMP: 네트워크 관리 프로토콜로 네트워크 정보를 관리 시스템에 보내는 데 사용되는 표준 통신 규약

 - DNS: 도메인 네임을 IP 주소로 매핑

4) 전송 계층의 주요 프로토콜

 - TCP: 신뢰성 있는 연결형 서비스, 스트림 전송 기능, 양방향 연결

 - UDP: 속도가 중요시. 실시간 전송에 유리. 비연결형 서비스 제공. 오버헤드 적음

 - RTCP: 제어 프로토콜, 주기적으로 제어 정보 전송, 다중화 제공, 최소한의 제어와 항상 32비트 경계로 끝남

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

 - IP: 경로설정 기능, 데이터그램 방식을 사용해 신뢰성 보장 안 함

 - ICMP: 제어 메시지를 관리하는 역할

 - IGMP: 멀티캐스트 그룹 유지를 위해 사용

 - ARP: IP -> MAC주소

 - RARP: MAC -> IP주소

6) 네트워크 액세스 계층의 주요 프로토콜

 - 이더넷: CSMA/CD방식의 LAN

 - IEEE 802: LAN을 위한 표준 프로토콜

 - HDLC: 비트 위주의 데이터링크 제어 프로토콜

 - X.25: 패킷 교환망을 통한 인터페이스 제공하는 프로토콜

 - RS-232C: 공중 전화 교환망을 통한 인터페이스 제공

 

★기출

1) 형상관리 절차

- 형상 식별: 수정 및 추적 용이

- 형상 통제: 식별된 형상 항목에 대한 변경 요구 검토

- 형상 감사: 기준선의 무결성 평가

- 형상 기록(상태보고): 작업의 결과를 기록, 관리하고 보고서 작성 작업

-> 식통감기

 

2) 모듈화

-> 정보은닉, 분할과 정복, 데이터 추상화, 모듈 독립성(낮은 결합도와 높은 응집도)

 

3) 예외 처리 구성

-> throw, try, catch

 

4) 프로토타입: 복제 생성하는 작업을 덜 수 있는 프로그래밍 스타일, 클래스를 명확히 정의하지 않아도 됨.

 

5) 라우팅 프로토콜

 - RIP: Bellman-Ford 알고리즘을 이용하여 최적의 경로를 설정하는 소규모 프로토콜 -> 최대홉수를 15로 제한. 거리 벡터 프로토콜.

 - OSPF: 다익스트라 알고리즘 및 링크 static 기반으로 최단 경로를 찾는 대규모 프로토콜

 - BGP: EGP 단점을 보완하기 위해 만들어짐. 라우팅 테이블을 교환하고 이후에는 변화된 정보만 교환

 

6) 교착 상태 발생의 필요 충분 조건

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

 

7) IEEE 802.11e: QoS 강화를 위해 MAC 지원 기능을 채택한 것

 

8) JAVA 언어의 접근 제한자

 - public: 모든 접근 허용

 - protected: 상속 관계의 객체만 접근 가능

 - default: 같은 패키지에 있는 객체들만 접근 허용

 - private: 현재 객체 내에서만 접근 허용

 

출처: m.blog.naver.com/wook2124/222102990691

반응형

'정처기' 카테고리의 다른 글

정보처리기사 실기 정리  (0) 2021.07.07
정보시스템 구축 관리  (0) 2021.05.14
소프트웨어 개발  (0) 2021.05.08
데이터베이스 구축  (0) 2021.05.07
소프트웨어 설계  (1) 2021.05.06