본문 바로가기
정보처리기사

정보처리기사 필기 4과목 - 프로그래밍 언어 활용

by aesup 2023. 4. 27.
728x90

1. 결합도와 응집도

2. IPv6

3. OSI 7계층

4. 응용 SW 기초 기술 활용

5. TCP와 UDP

6. 쉘과 커널

7. SJF vs HRN  스케쥴링

8. 페이지 교체 알고리즘

9. 자료형 & 변수 규칙

10. 접근 제한자

11. 프로그램 실행 결과

 

1. 결합도와 응집도

모듈✔️

- 모듈은 시스템의 각 기능으로 소프트웨어의 성능을 향상

- 수정 및 재사용을 용이하게 하기 위해 기능 단위로 분해

- 모듈의 독립성은 결합도(Coupling)를 약하게, 응집도(Cohesion)를 강하게, 모듈의 크기가 작을때 독립성이 높아진다.

 

공통모듈의 재사용✔️

-컴포넌트 재사용

-함수와 객체 재사용

-애플리케이션 재사용

 

결합도 ✔️

결합도가 높으면 시스템 구현 및 유지보수 작업이 어렵다.

모듈간에 상호 의존하는 정도, 두 모듈 사이의 연관 관계

 

결합도 종류 (강도 순 나열)✔️

 

내용 > 공통 > 외부 >  제어 > 스탬프 > 자료    (내공외제스자: 내부공사는 외국 제품을 쓰자)

 

내용 결합도 

다른 모듈의 내부 기능 및 그 내부 자료를 직접 참조, 수정

다른 모듈의 내부로 제어가 이동하는 경우

 

공통 결합도

공유되는 공통 데이터 영역을 여러 모듈이 사용( 전역변수 )

공통 데이터 영역의 내용을 변경 시 이를 사용하는 모든 모듈에 영향

모듈의 독립성 약하게 만듬

 

외부 결합도

모듈에서 선언한 데이터 외부의 다른 모듈에서 참조할 때

참조되는 데이터의 범위를 각 모듈에서 제한

 

제어 결합도

다른 모듈 내부의 논리적인 흐름을 제어하기 위해 제어 신호를 이용,

통신하거나 제어 요소를 전달함

권리 전도 현상: 하위 모듈이 상위 모듈에게 처리 명령 내림

 

스탬프 결합도

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

두 모듈이 동일한 자료 구조를 조회 

 

자료 결합도

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

모듈은 호출 시 매개 변수나 인수로 데이터를 넘겨주고 처리 결과를 반환(param)

 

응집도 ✔️

 

기능적 > 순차적 > 통신적 >  절차적 > 시간적 > 우연적    (우논시절 통순기)

 

기능적 응집도 (Functional)

모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우

 

순차적 응집도 (Sequential)

모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우

- 한프로세스가 끝나야 다음 프로세스 시작 

- 다른 모듈에서도 진행

 

통신적 응집도(Communication)

동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우

 

절차적 응집도(Procedual)

모듈이 다수의 관련기능 가질때

모듈안의 구성 요소들이 그 기능을 순차적으로 수행

- 모듈 안에서 만 진행

 

시간적 응집도(Temporal)

연관된 기능이라기 보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리 

 

논리적 응집도(Logical)

유사한 성격을 갖거나 특정 형태로 분류되는 처리요소들이 한 모듈에서 처리

 

우연적 응집도(Coincidental)

모듈 내부의 각 구성 요소들이 연관이 없는 경우

 


2. IPv6

IP 주소 : 컴퓨터 네트워크에서 장치들이 서로 인식하고 통신을 하기 위해 사용하는 고유 주소

현재 사용중인 32 bit IP 주소 체계인 IPv4는 새로 부여할 수 있는 주소 부족 으로 인해

128 bit 로 표현할 수 있는 IPv6나옴 -> 자료 전송 속도 빨라짐, 보안성 강화, 확장성 뛰어남(용이)

ex) IPv4 - 127.0.0.1 , IPv6 - 2dfc:0:0:0:0217:cbff:fe8c:0

Pv4의 패킷 크기가 64 Kbyte로 고정된 것이고, IPv6는 임의로 큰 크기의 패킷을 주고 받을 수 있음

 

IPv4  전송방식 : 유니캐스트 ,멀티캐스트 , 브로드캐스트

IPv6  전송방식 : 유니크새트 ,멀티캐스트, 애니캐스트 (애니멀)

https://togll.tistory.com/42


3. OSI 7 계층

 

하위계층🚩

 

물리계층(Physical Layer)

전송에 필요한 두 장치 간의 실제 접속과 절단 등에 필요한 전송 매체의 

기계적, 전기적 , 기능적, 절차적 특성에 대한 규칙 정의 (ex : 피지컬트레일)

물리적 전송매체

-RS-232C , X.21

 

데이터 링크 계층 (Data Link Layer)

2개의 인접한 개방 시스템들 간에 신뢰성 있고 효율적인 정보 전송을 할 수 있도록 함

흐름제어, 프레임 동기화, 오류제어, 순서제어 기능을 담당

신뢰성 있는 링크

- HDLC , LAPB, PPP , LLC, ATM

 

네트워크 계층 (Network Layer)

개방 시스템들 간의 NW 연결관리(NW 연결 설정,유지,해제)

데이터의 교환 및 & 중계기능을 담당

경로설정(Routing), 트래픽제어 , 패킷정보 전송,

- X.25 , IP , ARP(Address Resolution Protocol), RARP(Reverse Address Resolution Protocol) ,  ICMP(Internet Control Message Protocol), IGMP, 라우팅 프로토콜

 

 

상위계층🚩

 

전송계층 (Transport Layer)

종단 시스템(end to end )간에 투명한 데이터 전송이 가능

전송 연결 설정, 데이터 전송 , 연결해제 기능

주소 설정, 다중화, 오류제어, 흐름제어

- TCP, UDP

 

세션계층(Session Layer)

송.수신 측 간의 관련성을 유지하고 대화 제어를 담당하는 계층(통신)

대화 구성 및 동기 제어, 데이터 교환 관리

- RPC(remote Procedure Call) , NetBIOS

 

표현계층(Presentation Layer)

응용 계층으로부터 받는 데이터를 세션 계층에 보내기 전에 통신에 적당한 형태를 반환

세션 계층에서 받은 데이터는 응용 계층에 맞게 변환하는 기능을 함

-JPEG(이미지를 위해 만들어진 표준규격), MPEG(멀티미디어를 위해 만들어진 표준 규격)

 

응용계층(Application Layer)

사용자(응용 프로그램) 이 OSI 환경에 접근할 수 있도록 서비스를 제공함

-HTTP , FTP, SMTP, POP3 , IMAP ,  Telnet, SSH, SNMP

 

물데네전세표응

 

4. 응용 SW 기초 기술 활용

🚩운영체제의 개념

- 컴퓨터 시스템의 자원들을 효율적으로 관리

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

- 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로 동작하는 시스템 소프트웨어의 일종

- 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공

- 운영체제는 프로세스, 메모리공간, CPU, 기억장치, 주변 장치, 파일 등을 관리하는 기능을 수행

 

🚩운영체제의 목적 

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

-반환시간(Turn Around Time) : 시스템에 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간

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

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

 

🚩운영체제의 기능

- 프로세서(처리기, Processor) ,  기억장치(주기억장치,보조기억장치), 입출력장치, 파일 및 정보 등의 자원 관리

- 자원을 효율적으로 관리하기 위해 자원의 스케쥴링 기능 제공

- 사용자와 시스템 간의 편리한 인터페이스를 제공

- 시스템의 각종 하드웨어와 네트워크를 관리, 제어

- 데이터를 관리, 데이터 및 자원의 공유 기능을 제공

 

🚩운영체제의 종류

1. Windows

- 1990년대 마이크로소프트 사가 개발한 운영체제

- Windows 주요 특징

 

그래픽 사용자 인터페이스(GUI ; Graphic User Interface)

키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여 모든 작업을 수행하는 방식 

(ex 마우스로 선택)

 

선점형 멀티 태스킹(Preemptive Multi-Tasking)

동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하면서 운영체제가 각 작업의 CPU 이용시간을 

제어하여 응용 프로그램 실행 중 문제가 발생하면 해당  프로그램을 강제 종료시키고 모든 시스템

자원을 반환하는 방식

(ex 작업관리자, 프로그램 다수 실행)

 

PnP (Plug and Play, 자동 감지 기능)

컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때, 해당 하드웨어를 사용하는 데 

필요한 시스템 환경을 운영체제가 자동으로 구성해주는 기능

(ex 키보드 연결)

 

OLE (Object Linking and Embedding)

다른 여러 응용 프로그램에서 작성된 문자나  그림 등의 객체를 현재 작업 중인 문서에 자유롭게

연결하거나 삽입하여 편집할수 있는기능

 

255자의 긴 파일명 

/, \ , * , ? , < , > , | 를 제외한 모든 문자 및 공백을 사용하여 최대 255자까지 파일 이름을 지정할 수 있음

 

Single-User 시스템

컴퓨터 한 대 한 사람만이 독점해서 사용

 

2. Unix

- 1960년대 AT& 벨(Bell)연구소, MIT, General Electonic 이 공동 개발한 운영체제

- 시분할 시스템(Time Sharing System) 을 위해 설계된 대화식 운영체제

- 소스가 공개된 개발형 시스템 (Open System)

- 대부분 C 언어로 작성되어 있으며 이식성이 높으며 장치, 프로세스 간의 호환성이 높다

- 다중 사용자(Multi-User) , 다중 작업(Multi-Tasking) 을 지원한다

- 트리(Tree) 구조의 파일 시스템을 갖음

 

Unix 시스템의 구성

커널 (Kernel)  (견과류의 알맹이)

- 운영체제의 내부에서 하드웨어를 보호 및 자원 관리, 프로그램과 하드웨어 간의 인터페이스 역할 담당

- Unix의 가장 핵심적인 부분

- 프로세스(CPU 스케줄링)관리, 기억장치 관리, 파일 관리, 입출력 관리, 프로세스간 통신 , 데이터 전송

 및 변환 등 여러가지 수행

 

쉘(Shell) (조개 껍데기, 내부가 아닌 겉 껍데기)

- 사용자의 명령어를 인식하여 프로그램을 호출, 명령을 수행하는 명령어 해석기

- 시스템과 사용자 간의 인터페이스 담당함 (사용자의 비서)

- Bourne Shell, C Shell, Korn Shell

 

유틸리티 프로그램

- 일반 사용자가 작성한 응용 프로그램을 처리하는 데 사용함

- DOS 에서의 외부 명령어에 해당됨

- 에디터, 컴파일러, 인터프리터, 디버거

 

3. Linux

- 1991년 리누스 토발즈가 Unix 기반으로 개발한 운영체제

- 프로그램 소스 코드 무료 공개되어 있기 때문에 프로그래머가 원하는 기능을 추가 할 수 있다

- 다양한 플랫폼에 설치하여 사용 가능, 재배포 가능

- Unix 완벽 호환

- 대부분의 특징이 Unix 와 동일

 

4. MacOS

- 1980년대 애플(apple) 사가  Unix 기반으로 개발한 운영체제

- 아이맥과 맥북 등 애플 사에서 생산하는 제품에서만 사용가능

- 드라이버 설치 및 install 과 uninstall 의 과정이 단순

 

5.  Android

- 구글사에서 개발한 리눅스 커널 기반의 개방형 모바일 운영체제

- 모든 코드가 개방형 소프트웨어

- 자바코틀린 으로 애플리케이션 작성

- 스마트폰 등의 휴대용 장치에서 주로 사용

 

6. IOS 

- 애플사에서 개발한 유닉스 기반의 모바일 운영체제

-아이폰, 아이팟터치, 아이패드 등에 내장

-애플사 고유의 모바일 운영체제로 타사 제품은 IOS 를 탑재할 수 없다.


🚩기억장치 관리

기억장치의 관리 전략

- 보조기억장치의 프로그램이나 데이터주기억장치에 적재시키는 시기, 적재 위치 등을 지정하여

한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것

 

반입(Fetch)전략

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

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

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

 

배치(Placement)전락

- 최초적합(First Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서, 첫 번째 분할 영역에 배치시키는 방법

- 최적적합(Best Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서, 단편화를 가장 적게 남기는 분할 영역에 배치 방법

- 최악적합(Worst Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서, 단편화를 가장 많이 남기는 분할 영역에 배치 방법

* 단편화 : 주기억 장치의 분할된 영역에 프로그램이나 데이터를 할당할 경우, 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈공간

영역번호 영역크기 상태
1 5k 공백
2 14k 공백
3 10k 사용중
4 12k 공백
5 16k 공백

- 기억 장치 상태 표

- 기억장치 관리 전략으로 First Fit , Best Fit , Worst Fit 방법 을 사용하려할때 10K 프롤그램이 할당받게 되는 영역 번호는?

First Fit : 2

Best Fit : 4

Worst Fit : 5

 

교체(Replacement)전략

주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때, 이미 사용중인 영역에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략

FIFO , OPT, LRU, LFU, NUR ,SCR


🚩주기억장치 할당기법

주기억장치 할당

- 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용

- 주기억장치 할당 기법의 종류

 

연속할당기법 

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

 

1.단일 분할 할당 기법

- 주기억장치를 운영체제 영역과 사용자 영역으로 나누어 한순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법

- 가장 단순 , 초기의 운영체제에서 많이 사용하던 기법 

 - 운영체제를 보호 , 프로그램이 사용자 영역만을 사용하기 위해 운영체제 영역과 사용자 영역을 구분하는 경계 레지스터(Boundary Register)가 사용된다.

* 경계 레지스터(Boundary Register) : 사용자 영역에 있는 사용자 프로그램이 운영체제 영역에 접근하지 못하도록 보호

- Overlay 기법 : 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법

- Swapping 기법 : 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다가 필요에 따라 다른 프로그램과 교체하는 기법

 

2.다중 분할 할당 기법

고정 분할 할당기법 : 프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러개의 고정된 크기로 분할하고, 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행하는 기법

가변 분할 할당 기법 : 주기억장치를 미리 분할 해 놓지 않고, 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분리하는 기법

 

 

분산할당기법 (가상기억장치 관리 기법) 

프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법

페이징 기법, 세크먼테이션 기법


🚩가상기억장치 구현 기법 

가상기억장치(Virtual Memory)

- 보조기억장치의 일부를 주기억장치처럼 사용  

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

- 프로그램을 여러개의 작은 블록 단위로 나누어서 가상기억장치에 보관해놓고, 프로그램 실행시 요구되는 블록만 주기억장치에 불연속 적으로 할당하여 처리

- 주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있다

- 블록 단위로 나우어 사용하므로, 연속 할당 방식에서 발생할 수 있는 단편화를 해결할 수 있다

 

페이징(Paging) 기법 

- 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후,

나눠진 프로그램을 동일하게 나눠진 주기억장치의 영역에 적재시켜 실행하는 기법

- Page :  프로그램을 일정한 크기로 나눈 단위

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

- 일반적인 페이지 크기 1~4KB

- 외부 단편화는 발생하지 않으나, 내부 단편화는 발생할 수 있다.

ex) 페이지의 크기가 4KB이고, 사용할 프로그램이 17KB라면, 프로그램은 페이지 단위로 4KB 씩 나누어지게 된다

이때 마지막 페이지의 실제용량은 1KB 가 되고 이것이 주기억 장치에 적재되면 3KB 의 내부 단편화가 발생된다

 

세그먼테이션(Segmentation) 기법 

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

- Segment : 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위 

- 세그먼테이션 기법을 이용하는 궁극적인 이유는 기억 공간을 절약하기 위함

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

- 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있다.

 


🚩가상기억장치 구현 기법 

페이지 교체 알고리즘

페이지 부재(Page Fault)가 발생하면, 가상기억장치에서 필요한  페이지를 찾아 주기억장치에 적재해야하는데,

이때 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택하여 교체할지 결정하는 기법

종류 : OPT , FIFO, LRU, LFU , NUR , SCR

 

OPT(OPTimal replacement ,  최적 교체)(이론적으로만존재 계산문제 안나올듯)

-앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법 

-벨레이디 제안

-페이지 부재 횟소가 가장 적게 발생하는 가장 효율적인 알고리즘

 

FIFO(First In First Out)

-각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던

페이지를 교체하는 방법

-이해하기 쉽고, 프로그래밍 및 설계가 간단

 

문제에서 묻는 것은 페이지 부재 (Page Fault) ,필요한 페이지가 현재 프레임 중에 없어서 새로 데려와야할 때, 필요한 페이지가 없는 것을 페이지 부재라고 한다

 

할당된 페이지 프레임의 수는 3개이고, 참조 페이지 번호 (순서대로 참조할 페이지 번호를 알려줍니다) 가 다음과 같을 때, 페이지 부재의 횟수는? => 대상페이지가 미존재하면 땡겨와야하기때문에 페이지 부재이다 

참조페이지 2 3 2 1 5 2 3 5
페이지프레임 2 2 2 2 5(최근) 5 5 5
  3 3 3 3 2(최근) 2 2
      1(최근) 1 1 3(최근) 3
부재발생 O O   O O O O  

 

LRU(Least Recently Used)

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

 

참조페이지 2 3 2 1 5 2 3 5
페이지프레임 2 2 2 2 2 2 2 2
  3 3 3 5 5 5 5
      1 1 1 3 3
부재발생 O O   O O   O  

 

 

LFU(Least Frequently Used)

- 사용 빈도가 가장 적은 페이지를 교체하는 법

 

LUR(Least Used Recently)

- NRU 와 비슷한 알고리즘으로 최근에 사용하지않은 페이지를 교체하는 방법

 

SCR

 


🚩가상기억장치 기타 관리 사항

 

지역성(Locality)

지역성(구역성, 국부성, 국소성) 은 프로세스가 실행되는 동안 주기억 장치를 참조할 때 일부 페이지만 집중적으로 참조하는 특성

 

스레싱(Trashing)

어떤 프로세스가 계속적으로 페이지 부재가 발생하여 프로세스의 실제 처리 시간보다 페이지 교체 시간이 더 많아지는 현상

 

워킹 세트(Working set)

각 프로세스가 많이 참조하는 페이지들의 집합을 주기억장치 공간에 계속 상주하게 하여 빈번한 페이지 교체 현상을 줄이고자 하는 기법

 

 

 

참고:별의 블로그 :: [정보처리기사 실기] 11. 응용 SW 기초 기술 활용 (tistory.com)

728x90