본문 바로가기
License

[정보처리기사필기] 4과목 프로그래밍 언어 활용 기출문제 해설 요약정리

by prinha 2023. 5. 6.
반응형

OSI 7계층 & TCP/IP 4계층 (물 데 네 전 세 표 응)

7. 응용계층 - 게이트웨이 / 메시지전송

6. 표현계층 - 게이트웨이 / 메시지전송

5. 세션계층 - 게이트웨이 / 메시지전송

4. 전송계층 - 게이트웨이 / 메시지전송

3. 네트워크계층 - 라우터 / 패킷단위전송

2. 데이터링크계층 - 브릿지 / 프레임단위전송

1. 물리계층 - 리피터, 허브 / 비트단위전송

 

 

TCP/IP 프로토콜이 OSI모델보다 먼저 개발되었으며 두 모델의 계층이 정확하게 일치하지는 않는다.

두 모델 모두 계층형이라는 공통점이 있고, TCP/IP는 인터넷 개발 이후 계속 표준화되어 신뢰성이 우수한 반면,

OSI모델은 표준이 되기는 하지만 실제적으로 구현되는 예가 거의 없어 신뢰성이 저하되었다.

OSI모델은 장비 개발과 통신 자체를 어떻게 표준으로 잡을 사용되는 반면 실질적인 통신 자체는 TCP/IP 프로토콜을 사용한다.

 


OSI 7계층

OSI 모델(Open Systems Interconnection Reference Model)은 네트워크를 이루고 있는 구성 요소들을 7단계의 계층적 방법으로 나누고, 각 계층의 표준을 정한 네트워크 모델이다.

계층형 모델이라 통신이 일어나는 과정을 단계적으로 파악하기쉽다.

흐름을 한 눈에  알아보기 쉽고, 한 계층에 이상이 생기면 해당하는 계층만 고치면 된다.

 

7계층 - 응용 계층 (Application)

네트워크 소프트웨어 UI부분, 사용자의 입출력(I/O)부분

사용자에게 보이는 부분으로 최종 사용자에게 가장 가까운 계층이다.

구글 크롬, 사파리와 같은 웹 브라우저부터 여러 응용 프로그램이 있다.

- 사용자와 가장 밀접한 계층으로 인터페이스 역할

- 응용 프로세스 간의 정보 교환 담당

- 전송 단위 : Message

- 프로토콜 : HTTP, FTP, SMTP, POP3, IMAP, Telnet 등

 

6계층 - 표현 계층 (Presentation)

사용자의 명령어를 완성 및 결과 표현, 포장/압축/암호화

데이터 표현이 상이한 응용 프로세스의 독립성을 제공하고, 암호화한다.

표현 계층은 코드 간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로부터 덜어준다. EBCDIC로 인코딩된 문서를 ASCII로 인코딩된 파일로 바꿔주거나 해당 데이터가 텍스트인지 그림인지 또는 확장자를 구분해주는 것이 표현 계층이 하는 일이다.

- 데이터 표현에 차이가 있는 응용처리에서 제어 구조를 제공

- 데이터 표현의 차이 - ASCII, JPED, MPEG 등의 번역

- 전송하는 데이터의 인코딩, 디코딩, 암호화, 코드 변환 등을 수행

- 전송 단위 : Message 

 

5계층 - 세션 계층 (Session)

응용 프로그램간의 연결을 지원해주는 계층

데이터가 통신하기 위한 논리적인 연결을 담당한다. 통신을 하기위한 대문이라고 보면 된다.

하지만 4계층에서도 연결을 맺고 종료할 수 있기때문에 우리가 어느 계층에서 통신이 끊어졌는지 판단하기에는 한계가 있다. 그러므로 세션 계층은 4계층과 무관하게 응용프로그램 관점에서 보아야 한다.

세션 설정, 유지, 종류, 전송 중단 시 복구 등의 기능을 담당한다.

- 통신 장치 간 상호 작용 및 동기화를 제공

- 연결 세션에서 데이터 교환, 에러 발생시 복구 관리 -> 논리적 연결 담당

- 전송단위 : Message 

 

4계층 - 전송 계층 (Transport) - Segment

서비스를 구분하고 데이터의 전송 방식을 담당하는 계층

통신을 활성화하기 위한 계층으로 최종 시스템 및 호스트간의 데이터 전송 조율을 담당한다.

보낼 데이터의 용량과 속도, 목적지 등을 처리한다.

전송 계층의 예 중에서 가장 잘 알려진 것이 전송 제어 프로토콜(TCP)이다.

TCP는 인터넷프로토콜(IP)위에 구축되는데 흔히 TCP/IP로 알려져있다. 기기의 IP주소가 여기서 작동한다.

- 종단간(End to End)에 신뢰성 있고 정확한 데이터 전송을 담당

- 전송 단위 : Segment 

- 프로토콜 : TCP, UDP 등

 

3계층 - 네트워크 계층 (Network) - Packet

네트워크를 논리적으로 구분하고 연결하는 계층 -> 논리적 주소 사용

네트워크 계층에서 가장 중요한 기능은 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)이다.

이곳에서 사용되는 프로토콜의 종류도 다양하고, 라우팅하는 기술도 다양하다.

경로를 선택하고 주소를 정하고, 경로에 따라 패킷을 전달해주는 것이 네트워크 계층의 역할이다.

- 중계 노드를 통하여 전송하는 경우, 어떻게 중계할 것인가를 규정

- 데이터를 목적지까지 가장 안전하고 빠르게 전달 -> 라우팅

- 전송 단위 : Packet 

 

2계층 - 데이터 링크 계층 (Data Link) - Frame

물리적 매체에 패킷 데이터를 실어 보내는 계층 -> 환경에 맞는 다양한 통신 프로토콜을 지원

두 개의 직접 연결된 노드 간 데이터 전송을 제공하며, 물리 계층의 오류 수정도 처리한다.

데이터 링크 계층에는 두 개의 부 계층이 존재하는데,

매체 접근 제어(Media Access Control, MAC)계층논리적 연결 제어(Logical Link Control, LLc)계층이 있다.

네트워킹 세계에서 대부분의 스위치는 2계층에서 작동된다.

- 물리적인 연결을 통하여 인접한 두 장치간의 신뢰성있는 정보 전송을 담당

- 정보의 오류와 흐름을 관리

- 안정된 정보 전달

- 전송 단위 : Frame (인접한 노드 사이의 프레임 전송 및 오류 제어)

 

1계층 - 물리 계층 (Physical) - Bit

신호로 변환하여 전송하는 계층

시스템의 전기적, 물리적 표현을 나타낸다. 사용되는 통신 단위는 비트이다.

이 계층에서는 단지 데이터만 전달할 뿐 송수신하는 데이터가 무엇인지, 어떤 에러가 있는지는 신경쓰지않는다.

데이터를 전기적인 신호로 변환해서 주고 받는 기능만 할 뿐이다.

- 전기적, 기계적 특성을 이요하여 통신 케이블로 전기적 신호(에너지)를 전송

- 데이터 전달 역할만 하고, 알고리즘, 오류제어 기능은 없음

- 전송 단위 : Bit 


TCP 프로토콜

패킷의 전송 및 오류를 제어한다

- 흐름 제어(Flow Control)

- 전이 중(Full Duplex) 방식으로 양방향 가상회선 제공

- 전송 데이터와 응답 데이터를 함께 전송할 수 있다

 

TCP/IP 4계층

TCP/IP는 현재의 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 통신규약의 모음이다.

1960년대 말 미국방성의 연구에서 시작되어 1980년대 초 프로토콜 모델이 공개되었다.

하드웨어, 운영체제, 접속 매체에 관계없이 동작할 수 있는 개방성을 가진다.

사실상 인터넷 프로토콜을 대표하는 용어로 사용된다.

 

4계층 - Application Layer

OSI 7계층에서 세션계층, 표현계층, 응용계층에 해당된다.

응용 프로그램들이 네트워크 서비스, 메일 서비스, 웹 서비스 등을 할 수 있도록 표준 인터페이스를 제공한다.

- TCP/IP기반의 응용 프로그램을 구분할 때 사용

- 프로토콜 : TTP, FTP, Telnet, DNS, SMTP, SSH 등

 

3계층 - Transport Layer

OSI 7계층에서 전송계층에 해당되며 네트워크 양 단의 송수신 호스트 사이에서 신뢰성 있는 전송 기능을 제공한다.

시스템의 논리 주소와 포트를 가지고 있어서 각 상위 계층의 프로세스를 연결하여 통신한다.

정확한 패킷의 전송을 보장하는 TCP나 정확한 전송을 보장하지 않지만 더 빠른 속도의 UDP 프로토콜을 이용한다.

- 통신 노드간의 연결을 제어하고, 자료의 송수신을 담당

- 프로토콜 : TCP, UDP, QUIC 등

 

2계층 - Internet Layer

OSI 7계층에서 네트워크계층에 해당한다.

3계층으로부터 받은 데이터에 IP패킷 헤더를 붙여 IP패킷을 만들고 이를 전송한다.

- 통신 노드간의 IP패킷을 전송하는 기능 및 라우팅 기능을 담당

- 프로토콜 : IP, ARP, RARP, ICMP(전송 오류가 발생하는 경우에 대비해 오류 정보를 전송하는 목적의 프로토콜), OSPF 등

 

1계층 - Network Interface

OSI 7계층에서 물리계층과 데이터링크계층에 해당한다.

OS의 네트워크 카드와 디바이스 드라이버 등과 같이 하드웨어적인 요소와 관련되는 모든 것을 지원한다.

물리적인 주소로 MAC주소를 사용한다.

- CSMA/CD, MAC, LAN 등 전송에 사용

- 프로토콜 : Ethernet, Token Ring, PPP


C언어 문자열 처리 함수

- strlen(s) : s의 길이

- strcpy(s1, s2) : s2를 s1으로 복사

- strcmp(s1, s2) : 문자열 비교

- strrev(s) : s를 거꾸로 변환

- strcat(s1, s2) : 문자열 연결

 

C언어 연산자 -> 0이 아닌 모든 값은 1(TRUE)

&& : AND

|| : OR

! : NOT

(ex. int a=5 와 int=1 같다는 소리)

 

C언어 연산자의 우선순위

() 

/

<<

<

==

||

 

 

[C언어 라이브러리]

stdio.h

표준 입출력 라이브러리

 

stdlib.h

C언어의 표준 라이브러리로 문자열 변환, 난수 생성, 동적 메모리 관리등의 함수들을 포함하고 있다

문자열을 수치 데이터로 바꾸는 문자 변환함수와 수치를 문자열로 바꿔주는 변환함수 등이 있다

 

string.h

strlen() 함수

 

math.h

삼각 함수, 제곱근, 지수 등의 수학적인 함수 내장

 

 

Python

귀도 반 로섬이 발표한 언어로 인터프리터 방식이자 객체지향적이며, 배우기 쉽고 이식성이 좋은 것이 특징인 스크립트 언어

 

Python의 조건문

if , elif, else   (else if X)

 

Python range([시작,끝])

range(11) -> 0~11

 

Python에서 print()하면 자동으로 개행됨

 

Python출력

list = ['a', 'b', 'c']

dict = {'a':90, 'b':100}

print(list[0])    ->  a

print(dict['a'])    ->   90

 

Sequence(Python의 데이터 타입)

리스트 타입(가변형)

- 순서가 있고 가변 [1,2,3]

 

튜플 타입(불변형)

- 순서가 있고 불변 (1,2,3)

 

Set(Python의 데이터 타입)

순서없고 중복불가 {1,2,3}

 

Map - Dictionary(Python의 데이터타입)

순서가 없고 key-value쌍의형태 {'a':1, 'b':2, 'c':3}

 

JAVA 연산자 우선순위

--   >   %   >   &   >   =


IP 주소 체계의 차이

IPv4 IPv6
- 32 비트 주소
- 유니캐스트/멀티캐스트/브로드캐스트
- 128 비트 주소
- 기존 IPv4의 주소 부족 문제 해결
- 인증성/기밀성/무결성 지원
- 보안성 강화
- 유니캐스트/애니캐스트/멀티캐스트

 

IP프로토콜에서 사용하는 필드

- Header Length는 IP 프로토콜의 헤더 길이를 32비트 워드 단위로표시한다

- TIme To Live는 송신 호스트가 패킷을 전송하기 전 네트워크에서 생존할 수 있는 시간을 지정한 것이다

- Version Number는 IP 프로토콜의 버전번호를 나타낸 것이다

- Total Packet LengthIP 헤더 및 데이터를 포함한 IP 패킷 전체의 길이를 바이트 단위로 표시한 것이다 (최대값 : 65,535 = 2^16 -1)

 

RIP 라우팅 프로토콜(Routing Information Protocol)

경로 선택 메트릭은 홉 카운트(hop count)이다 (최대 홉 카운트 15홉이하)

최단 경로 탐색에는 Bellman-Ford 알고리즘을 사용하는 거리 벡터 라우팅 프로토콜

각 라우터는 이웃 라우터들로부터 수신한 정보를 이용하여 라우팅 표를 갱신한다

라우팅 프로토콜을 IGP와 EGP로 분류했을 때 IGP에 해당한다

최적 경로를 산출하기 위한 정보로서 홉(거리 값)만을 고려하므로, RIP을 선택한 경로가 최적 경로가 아닌 경우가 발생할 수 있다

소규모 네트워크 환경에 적합하다

 

UDP 프로토콜(User Datagram Protocol)

비연결형 및 비신뢰성 전송 서비스를 제공한다

흐름 제어나 순서 제어가 없어 전송 속도가 빠르다

수신된 데이터의 순서 재조정 기능을 지원하지 않는다

복구 기능을 제공하지 않는다

 

IP 프로토콜(IP Protocol)

주로 주소를 지정하고, 경로를 설정하는 기능을 한다

패킷을 분할, 병합하는 기능을 수행하기도 한다

비연결형 서비스를 제공한다

Best Effort 원칙에 따른 전송 기능을 제공한다

헤더 체크섬(Header Checksum)기능을 제공한다(데이터 체크섬 X)

 

IP Class

 A Class : 0.0.0.0 ~ 127.255.255.255 

 B Class : 128.0.0.0 ~ 191.255.255.255 (+128)

 C Class : 192.0.0.0 ~ 223.255.255.255 (+64)

 D Class : 224.0.0.0 ~ 239.255.255.255 (+32)  멀티캐스트

 E Class : 240.0.0.0 ~ 255.255.255.255 (+16)  연구용


스케줄러(Scheduler)

언제, 어떤 프로세스를 선택해서 CPU에서 실행시키는지 선택하는 모듈

멀티 프로그래밍의 목적이 CPU 효율 극대화이므로 적절한 스케쥴링 필요하다

대기 시간은 최소화하고 최대한 공평하게 처리하는 것을 목적으로 한다

 

 

장기 스케줄링(Long-term scheduling)

어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 지를 결정하여 준비상태 큐로 보내는 작업을 의미함

상위 스케줄링이라고도 하며, 작업 스케줄러에 의해 수행된다

수행빈도가 적고 느리다

 

중기 스케줄링(middle-term scheduling)

어떤 프로세스들이 CPU를 할당 받을 것인지를 결정하는 작업을 의미함

CPU를 할당받으려는 프로세스가 많을 경우 프로세스를 일시 대기시킨 후 활성화하여 일시적으로 부화를 조절한다

스왑 인/아웃 결정(메모리 부족시 swap out, 남으면 swap in)

 

단기 스케줄링(Short-term scheduling)

프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업을 의미함

프로세서 스케줄링, 하위 스케줄링이라고도 한다

프로세서 스케줄링 및 문맥 교환은 프로세서 스케줄러에 의해 수행한다

자주 수행되며 빠르다

 

프로세스의 상태

- 생성(Create) : 프로세스가 생성되는 중

- 실행(Running) : 프로세스가 프로세서를 차지하여 명령어들이 실행되는 중

- 준비(Ready) : 프로세스가 프로세서를 사용하고 있지는 않지만 언제든지 사용할 수 있는 상태로, CPU가 할당되기를 기다림

- 대기(wating) : 프로세스가 입출력 완료, 시그널 수신 등 어떤 사건을 기다리고 있는 상태

- 종료(terminated) : 프로세스의 실행이 종료됨

 

준비큐 : 준비 상태에 있는 프로세스들을 모아놓은 큐

디스패치 : 운영체제가 프로세스를 프로세서에 할당하는 것

 

스케줄링 알고리즘의 평가기준

- CPU이용률 : 전체 시스템 시간 중 CPU가 작업을 처리하는 시간의 비율

- 처리량 : CPU가 단위 시간당 처리하는 프로세스의 개수

- 총 처리 시간 : 프로세스가 시작해서 끝날 때 까지 걸린 시간

- 대기시간 : 프로세스가 준비완료 큐에서 대기하는 시간의 총 합

- 응답시간 : 대화식 시스템에서 요청 후 첫 응답이 오기까지 걸린 시간

 

스케줄링의 기법

선점(Pre-emptive), 비선점(Non-Pre-emptive)

 

1. 선점 스케줄링(Pre-emptive Scheduling)

CPU를 할당받은 프로스세가 실행하고 있을 때 다른 프로세스가 CPU를 사용하고 있는 프로세스를 중지시키고 CPU를 차지할 수 있는 기법

우선순위가 높은 프로세스를 먼저 수행할 때 유리하고 빠른 응답시간을 요구하는 대화식 시분할 시스템에 유리함

많은 오버헤드를 초래함

 

- STR(Shortest Remaining Time)

시간 순서대로 프로세스를 수행한다

남은 처리 시간이 더 짧은 프로세스가 Ready큐에 들어오면 그 프로세스가 바로 선점된다

SJF의 선점 버전이라고 할 수 있다

 

- 라운드로빈(Round-Robin)

각 프로세스는 같은 크기의 CPU 시간을 할당 받고 선입선출에 의해 수행된다

할당시간이 너무 크면 선입선출과 다를 바 없어지고, 너무 작으면 오버헤드가 커진다

 

- 다단계 큐(Multi-Level Queue)

Ready큐를 여러 개 사용하는 기법으로 각각의 큐는 자신의 스케줄링 알고리즘을 수행하며, 큐와 큐 사이에 우선순위 부여

 

- 다단계 피드백 큐 스케줄링

다단계 큐와 비슷하나 프로세스들이 큐를 이동할 수 있다

 

2. 비선점 스케줄링(Non-Pre-emptive Scheduling)

이미 사용되고 있는 CPU를 빼앗지는 못하고 사용이 끝날 때 까지 기다리는 기법

할당 받은 CPU는 끝날 때 까지 사용한다

응답 시간을 예측할 수 있고 일괄처리 방식이 적합하다

모든 프로세스에 대하여 공정하지만 중요도가 높은 작업이 낮은 작업을 기다리는 경우가 발생할 수 있다

 

- HRN(Highest Response ratio Next)

긴 작업과 짧은 작업간의 지나친 불평등을 어느정도 보완한 기법으로, 수행시간과 대기시간을 모두 고려하여 우선순위를 정한다

최소우선작업(SJF) 기법의 약점을 보완함

 

- SJF(Shortest Job Fisrt)

큐 안에 있는 프로세스 중 수행시간이 짧은 것을 먼저 시행하여 평균 대기 시간을 감소시킴

 

- 우선순위(Priority)

프로세스에게 우선순위를 정적, 동적으로 부여하여 우선순위가 높은 순서대로 처리함

동적으로 부여할 경우 구현이 복잡하고 오버헤드가 많다는 단점이 있으나 시스템의 응답속도를 증가 시킨다

 

- 기한부(Dealine)

작업을 명시된 기간이나 기한 내에 완료하도록 계획

 

- FIFO

Ready큐에 도착한 순서대로 CPU를 할당 받는다

작업 완료 시간을 예측하기가 용이하지만 덜 중요한 작업이 중요한 작업을 기다리게 할 수 있다

 

 

SSTF(Shortest Seek Time First) 스케쥴링

현재 헤드위치에서 가장 까까운 것부터 -> 가장 이동 거리가 짧은 것 -> 현재 트랙과 남아있는 트랙 중 가장 차이가 적은 것

ex. 큐의 내용 ( 98, 183, 37, 122, 14, 124, 65, 67) 이고 현재 헤드 위치 53, 가장 안쪽이 1번, 가장 바깥쪽이 200번의 처리순서

53 -> 65 -> 67 -> 37 -> 14 -> 98 -> 122 -> 124 -> 183

 


UNIX 운영체제

주로 서버용 컴퓨터에서 사용되며 대화식 운영체제이다

이식성이 높으며 장치간의 호환성이 높다

하나 이상의 작업에 대하여 백그라운드 수행이 가능하다

Multi-User, Multi-Tasking 모두 지원한다

 

UNIX Shell(쉘)

- 사용자 명령을 해석하고 커널로 전달하는 기능을 제공

- 반복적인 명령 프로그램을 만드는 프로그래밍 기능을 제공

- 초기화 파일을 이용해 사용자 환경을 설정할 수 있는 기능을 제공

 

리눅스 Bash Shell export

export가 매개변수 없이 쓰일 경우 현재 설정된 환경 변수들이 출력된다

사용자가 생성하는 변수는 export 명령어를 표시하지 않는 한 현재 쉘에 국한된다

변수를 export 시키면 전역(Global) 변수처럼 되어 끝까지 기억된다

리눅스 변수 출력 명령어 -> Echo $변수명

 

커널 : 프로세스, 메모리 관리


모듈(Module)

시스템의 각 기능으로 소프트웨어의 성능을 향상시키거나 수정 및 재사용을 용이하게 하기 위해 기능 단위로 분해한 것

모듈의 독립성은 결합도를 약하게, 응집도를 강하게, 모듈의 크기가 작을수록 높아진다

독립성이 높은 모듈일수록 모듈을 수정하더라도 다른 모듈에게 영향을 거의 미치지않고, 오류가 발생해도 쉽게 발견 수정 가능함

다른 것들과 구별될 수 있는 독립적인 기능을 가진 단위(Unit)

독립적인 컴파일이 가능하고 유일한 이름을 가진다

-> 모듈의 수가 감소하면 모듈의 크기가 커지고, 모듈의 수가 증가하면 모듈의 크기가 작아진다

 

모듈화(Modularity)

시스템을 모듈로 분할하면 각각의 모듈을 별개로 만들 수 있고 수정할 수 있기때문에 좋은 구조가 된다

모듈 간의 결합도가 약하고 응집도가 강해야 좋은 모델 설계가 될 수 있다

 

프레임워크(Framework)

소프트웨어 구성에 필요한 기본 구조를 제공함으로써 재사용이 가능하게 해준다

모듈화 가능, 확정성, 제어의 역 흐름

 

소프트웨어 모듈화의 장점

- 오류의 파급 효과를 최소화한다

- 모듈의 재사용 가능으로 개발과 유지보수가 용이하다

- 프로그램의 효율적인 관리가 가능하다

- 기능 분리가 가능하여 인터페이스가 복잡하지않다


결합도(Coupling) -> 자스제외공내

모듈과 모듈 사이의 상호의존 또는 연관 정도를 의미로 결합도는 약할수록 좋다

자료결합도 Data < 스탬프결합도 Stamp < 제어결합도 Control < 외부결합도 External < 공유결합도 Common < 내용결합도 Content

 

-> 결합도 약한 순서대로

1. 자료결합도(Data)

모듈간의 인터페이스가 자료 요소로만 구성될 때의 결합도

 

2. 스탬프결합도(Stamp)

모듈 간의 인터페이스로 배열이나 레코드 등의 자료 구조가 전달될 때의 결합도

 

3. 제어결합도(Control)

어떤 모듈이나 다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 통신하거나 제어 요소를 전달(Flag)

 

4. 외부결합도(External)

어떤 모듈에서 선언한 데이터(변수)를 외부의 다른 모듈에서 참조할 때의 결합도

 

5. 공유결합도(Common)

공유되는 공통 데이터 영역(전역 변수)을 여러 모듈이 사용할 때의 결합도

 

6. 내용결합도(Content)

한 모듈이 다른 모듈의 내부 기능 및 내부 자료를 직접 참조하거나 수정할 때의 결합도(Public)

 

 

응집도(Cohesion) ->  기순교절시논우

모듈이 독립적인 기능으로 구성되었는지 정도를 의미하며 응집도가 강할수록 독립적이다

기능적응집도 Functional > 순차적응집도 Seqentail > 교환적응집도 Communication > 절차적응집도 Procedural

> 시간적응집도 Temporal > 논리적응집도 Logical > 우연적응집도 Coincidental

 

-> 응집도 강한 순서대로

1. 기능적응집도(Functional)

모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도

 

2. 순차적응집도(Seqential)

모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력 데이터로 사용할 경우의 응집도

 

3. 교환적응집도(Communication)

동일한 입력과 출력을 사용해 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도

 

4. 절차적응집도(Procedural)

모듈의 다수의 관련 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도

 

5. 시간적응집도(Temporal)

특정 시간에 처리되는 몇 개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도

 

6. 논리적응집도(Logical)

유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도

 

7. 우연적응집도(Coincidental)

모듈 내부의 각 구성요소들이 서로 관련 없는 요소들로만 구성된 경우의 응집도


가상 메모리 기법

운영체제는 주기억장치보다 더 큰 용량의 프로그램을 실행하기 위해 프로그램의 일부만 주기적장치에 적재하여 사용하는 법

 

[페이징 기법]

컴퓨터가 메인 메모리에서 사용하기 위해 데이터를 저장하고 검색하는 메모리 관리 기법

페이징기법을 통해 물리적 메모리는 연속적으로 할당되어 존재할 필요가 없음

페이징 기법을 통해 비연속적 메모리를 연속적메모리처럼 만들 수 있다

 

프레임 : 물리 메모리를 일정한 크기로 나눈 블록

페이지 : 가상 메모리를 일정한 크기로 나눈 블록

결함 : 주기억장치의 페이지가 변동 되는것

 

1) 페이지 크기가 작은 경우

더 많은 페이징 사상테이블 필요

내부 단편화 감소

페이지의 집합을 효율적으로 운영가능

기억장치의 효율이 좋음

총 입출력 시간 증가

 

2) 페이지 크기가 큰 경우

주기억 장치 공간의 절약

참조되는 정보와 무관한 양의 정보가 주기억 장치에 남게 됨

테이블이 복잡하지 않아 관리가 용이함

페이지 맵 테이블의 크기가 감소한다

 

 

페이지 교체 알고리즘(Page Replacement Algorithm)

페이징 기법으로 메모리를 관리하는 운영체제에서 필요한 페이지가 주기억장치에 적재되지 않았을 때(페이지 부재)

어떤 페이지 프레임을 선택하여 교체할것인지 결정하는 방법

 

- OPT(Optional)

앞으로 가장 오랫동안 사용되지 않을 페이지 교체

 

- FIFO(선입선출)

가장 먼저 들어온 페이지 교체

 

- LRU(Least Recently Used)

가장 오랫동안 사용되지 않은 페이지 교체

1,2,3,1,2,4,1,2,5  -> 페이지결함 5회

 

- LFU(Least Frequently Used)

참조 횟수가 가장 작은 페이지 교체

 

- MFU(Most Frequently Used)

참조 횟수가 가장 많은 페이지 교체

 

- NUR(Not Used Recently)

최근에 사용하지 않은 페이지 교체 -> LRU를 근사한 알고리즘


커널 수준의 스레드의 장점

- 한 프로세스가 운영체제를 호출할 때 전체 프로세스가 대기할 필요가 없으므로 시스템 성능을 높일 수 있다

- 동시에 여러 스레드가 커널에 접근할 수 있으므로 여러 스레드가 시스템 호출을 동시에 할 수 있다

- 각 스레드를 개별적으로 관리할 수 있으므로 스레드의 독립적인 스케줄링이 가능하다

 

사용자 수준의 스레드의 장점

- 커널 모드로의 전환 없이 스레드 교환이 가능하므로 오버헤드가 줄어든다


데커의 알고리즘

프로세스가 두개일 때 상호 배제를 보장하는 최초의 알고리즘 (flag과 turn 변수를 사용하여 조정)

 

피터슨 알고리즘

프로세스가 두개일 때 상호 배제를 보장

데커의 알고리즘과 유사하지만 상대방에게 진입 기회를 양보한다는 차이가 있고 더 간단함

 

램퍼드 알고리즘

프로세스 n개의 상호 배제 문제를 해결한 알고리즘

프로세스에게 고유한 번호를 부여하고, 번호를 기준으로 우선순위를 정하여 우선순위가 높은 프로세스가 먼저 임계구역에 진입하도록 함

 

세마포어 알고리즘

공유된 자원의 데이터 혹은 임계영역 등에 따라 여러 프로세스 혹은 스레드가 접근하는 것을 막아줌 (임계 구역 접근 제어)


기억장치 배치 전략 Best Fit

내부단편화가 제일 작은 것을 물을 시 가장 작은 크기의 KB를 고르면 됨

 

개발 환경 구성을 위한 빌드(build)도구

- Ant : 아파치 재단에서 개발한 자바의 공식적인 빌드 도구

- Maven : 아파치 재단에서 개발, Ant의 대안으로 개발

- Gradle : Ant, Maven의 보안으로 개발된 빌드 도구

 

자동반복 요청방식(ARQ : Automatic Repeat reQuest) -> 오류 제어

Stop-and-wait(정지-대기)

송신 측이 하나의 블록을 전송한 후 수신 측에서 에러의 발생을 점검한 다음, 에러 발생 유무 신호를 보내올 때까지 기다리는 방식

 

Go-back-N(재전송)

여러 블록을 연속적으로 전송하고, 수신 측에서 부정 응답(NAK)을 보내오면 송신측이 오류가 발생한 블록부터 모두 재전송

 

Selective-Repeat(선택적 재전송)

여러 블록을 연속적으로 전송하고, 수신측에서 부정 응답(NAK)을 보내오면 송신측이 오류가 발생한 블록만을 재전송

 

Adaptive(적응형)

전송 효율을 최대로 하기 위해서 데이터 블록의 길이를 채널의 상태에 따라 동적으로 변경하는 방식

 

 

Garbage Collector(가비지)

JAVA에서 힙에 남아있으나 변수가 가지고 있던 참조값을 잃거나 변수 자체가 없어짐으로써 더이상 사용되지 않는 객체를 제거하는 모듈

'정리되지 않은' or '사용되지 않은' 메모리 제거

 

Process(프로세스)

- Thread(스레드) : 프로세스의 실행 단위

- Dispatch(디스패치) : 프로세스가 준비 상태에서 프로세서가 배당되어 실행상태로 변화하는 것

- 프로세스 제어 블록(PCB, Process Control Block)프로세스 식별자, 프로세스 상태 등의 정보로 구성된다

- 문맥 교환(Context Switching) : 이전 프로세스의 상태 레지스터 내용을 보관하고 다른 프로세스의 레지스터를 적재하는 과정

 

파일 디스크립터(File Descriptor) = 파일 제어 블록(File Control Block)

- 파일 관리를 위해 시스템이 필요로 하는 정보를 가지고 있다

- 보조기억장치에 저장되어 있다가 파일이 오픈되면 주기억장치로 이동된다

- 파일 시스템에서 관리하므로 사용자는 직접 참조할 수 없다

 

 

Collision Domain -> 충돌 도메인

충돌 발생을 검출할 수 있는 브릿지 간 혹은 다른 계층 장치 간의 이더넷 세그먼트 범위

 

CSMA/CA(Carrier-Sensse Muliple Access with Collision Avoidance) -> 충돌 방지

매체가 비어있음을 확인한 후 충돌을 회피하기위해 임의 시간을 기다린 후 데이터를 전송하는 제어 방식

 

CSMA/CD(Carrier-Sensse Muliple Access with Collision Detection) -> 충돌 감지

이더넷에서 각 단말이 전송 공유 매체에 규칙있게 접근하기 위한 액세스 제어 방식

 

 

교착상태의 해결 방법

Detection(탐지)

교착상태 발생을 허용하고 발생 시 원인을 규명하여 해결 -> 자원할당 그래프

 

Avoidance(회피)

교착상태 가능성을 배제하지 않고 적절하게 피해나가는 방법 -> 은행원 알고리즘

 

Recovery(복구)

교착상태 발견 후 현황대기를 배제시키거나 자원을 중단하는 메모리 할당 기법 -> 선점, 프로세스 중지(희생자 선택)

 

Prevention(예방)

교착상태의 필요조건을 부정함으로써 교착상태가 발생하지 않도록 미리 예방하는 방법 -> 환형대기 비선점, 점유와 대기, 상호배제 4가지 부정

 

 

프로세스 적재 정책

시간 지역성(Temporal Locality) -> 반복, 스택, 부프로그램

공간 지역성(Spatial Locality) -> 프로세스가 어떤 페이지를 참조했다면 이후 가상주소공간상 그 페이지와 인접한 페이지들을 참조할 가능성이 높음

스레싱(Thrashing) 현상을 방지하기 위해서는 각 프로세스가 필요로 하는 프레임을 제공할 수 있어야 한다

(스레싱현상 : 일방적으로 페이지수행 시간보다 교환시간이 커질 때 발생)

 

 

ASCII code

A : 65

a : 97

 

자바스크립트는 클래스가 없지만 객체 기반 프로토타입을 이용하여 상속을 흉내내도록 구현되어있다


https://prinha.tistory.com/entry/%EC%A0%95%EB%B3%B4%EC%B2%98%EB%A6%AC%EA%B8%B0%EC%82%AC%ED%95%84%EA%B8%B0-5%EA%B3%BC%EB%AA%A9-%EC%A0%95%EB%B3%B4%EC%8B%9C%EC%8A%A4%ED%85%9C-%EA%B5%AC%EC%B6%95%EA%B4%80%EB%A6%AC-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C-%ED%95%B4%EC%84%A4-%EC%9A%94%EC%95%BD%EC%A0%95%EB%A6%AC1

 

[정보처리기사필기] 5과목 정보시스템 구축관리 기출문제 해설 요약정리1

정보보안 3요소 - 기밀성 : 인가된 사용자에 대해서만 자원 접근이 가능하다 - 무결성 : 인가된 사용자에 대해서만 자원 수정이 가능하며 전송중인 정보는 수정되지 않는다 - 가용성 : 인가된 사

prinha.tistory.com


자료 및 출처

1. 정보처리기사 필기 기출

2. 모듈의 결합도와 응집도 : https://devinus.tistory.com/28

 
반응형