Search

프로그래밍 언어 활용

대분류
자격증
소분류
정보처리기사
유형
4과목
과목
4과목
최종 편집 일시
2024/10/27 15:36
생성 일시
2024/05/06 17:44
14 more properties

공통 모듈 구현

공통 모듈 재사용 범위

컴포넌트 재사용
함수와 객체 재사용
애플리케이션 재사용

모듈화

모듈화(Modularity)

거대한 문제를 작은 조각의 문제로 나누어 다루기 쉽도록 하는 과정
모듈 : 작게 나누어진 각 부분
특성
Unity(한 가지 일만 수행)
Smallness(간단 명료)
Simplicity(단순성)
Independency(독립성)

결합도(Coupling)

한 모듈과 다른 모듈 간의 상호 의존도 또는 두 모듈 사이의 연관 관계를 의미
모듈 간의 결합도를 약하게 하면 모듈 독립성이 향상
결합도 정도 (데 > 스 > 제 > 외 > 공 > 내)
데이터 결합도 > 스탬프 결합도 > 제어 결합도 > 외부 결합도 > 공통 결합도 > 내용 결합도
데이터 결합도 : 처리 결과를 다시 돌려주는 경우의 결합도
스탬프 결합도 : 두 모듈이 동일한 자료 구조를 조회하는 경우의 결합도
제어 결합도 : 제어 신호를 이용하여 통신하는 경우의 결합도
외부 결합도 : 한 모듈에서 외부로 선언한 변수를 다른 모듈에서 참조할 경우의 결합도
공통 결합도 : 여러 모듈이 공통 자료 영역 사용하는 경우의 결합도
내용 결합도 : 한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 참조하는 경우 결합도

응집도

한 모듈 내부의 처리 요소 간의 기능적 연관도 의미
응집도 정도 (기 > 순 > 교 > 절 > 시 > 논 > 우)
기능적 응집도 > 순차적 응집도 > 교환적 응집도 > 절차적 응집도 > 시간적 응집도 > 논리적 응집도 > 우연적 응집도

C언어의 개요

C언어의 기초

C언어의 개념

컴파일러 방식 언어
시스템 프로그래밍 적합 언어
UNIX 운영체제 구성
포인터에 의한 번지 연산 등 다양한 연산 기능 보유

C언어의 기본 구조

main 함수 반드시 포함
영문 대/소문자 엄격 구별
문장을 끝마칠 때 세미콜론(;) 사용
여러 개의 문장을 묶어 하나의 블록으로 구성할 때 중괄호({}) 사용
주석문 표기 : /* ~ */

기본 자료형

정수형
int : 2Byte
long : 4Byte
실수형
float : 4Byte
double : 8Byte
문자형
char : 1Byte

기억 클래스

자동 변수
레지스터 변수
정적 변수
외부 변수

입/출력 함수

표준 입/출력 함수
scanf() : 표준 입력
printf() : 표준 출력
getchar() : 문자 입력
putchar() : 문자 출력
gets() : 문자열 입력
puts() : 문자열 출력
변환 문자(출력 형식 지정 문자)
%d : 10진 정수
%o : 8진 정수
%x : 16진 수
%f : 실수형
%e : 지수형
%c : 문자
%s : 문자열
이스케이프 문자
\n : 줄바꿈
\r : 현재 줄 처음으로 이동
\t : tab
\b : 뒤로 한 칸 이동
\f : 한페이지 넘기기
\0 : 널 문자 출력
\’ : 작은따옴표 출력
\’ : 큰따옴표 출력
\\ : 역슬래시 출력
\a : 벨 소리 발생

C언어 변수명 작성 규칙

영문 대소문자, 숫자, _를 혼용하여 사용 가능
첫 글자는 숫자로 시작X, 영문자나 ‘_’로 시작
영문자는 대소문자 구분
공백 포함X
시스템 예약어 사용 불가

포인터 변수

다른 변수 주소값 저장 가능
메모리 크기 모두 동일

표준 라이브러리 함수

stdio.h : C언어 표준 입 출력 라이브러리
stdlib.h : C언어 표준 유틸리티 함수 헤더 파일
stdlib.h 함수 종류
atoi() : 문자열 정수형 변환
atof() : 문자열 실수형 변환
atol() : 문자열을 log형 정수 변환
itoa() : 숫자를 문자열로 변환
ceil() : 자리올림
floor() : 자리버림
rand() : 난수 발생
div : 정수 나눗셈

C언어 연산자

C언어 연산자 종류

연산자 우선순위

1.
단항 연산자
2.
산술 연산자
3.
시프트 연산자
4.
관계 연산자
5.
비트 연산자
6.
논리 연산자
7.
조건 연산자
8.
할당 연산자 : =, +=, -=, *=, /=, %=. <<=. >>=
9.
콤마 연산자

C언어 연산자 특징

비트 연산자

& : 논리곱(AND)
| : 논리합(OR)
^ : 배타적 논리합(XOR)

라이브러리

라이브러리

필요할 때 찾아서 쓸 수 있도록 모듈화된 프로그램
모듈과 패키지를 총칭
표준 라이브러리 : 프로그래밍 언어가 기본적으로 가지고 있는 라이브러리 의미
외부 라이브러리 : 별도 파일 설치 필요로 하는 라이브러리

Java 언어

Java 언어 기초

Java 언어 개념

객체지향 언어
추상화, 상속화, 다형성과 같은 특징
네트워크 환경에서 분산 작업 가능 설계

Garbage Collector

S/W 개발 중 유효하지 않은 가비지 메모리 발생
Java에서는 C언어와 다르게 JVM 가비지 컬렉터가 불필요한 메모리를 알아서 정리

Java 언어의 기본 자료형

정수형
byte : 1byte
short : 2byte
int : 4byte
long : 8byte
실수형
float : 4byte - 단정도 실수형
double : 8byte - 배정도 실수형
문자형
char : 2byte - 유니코드 문자열 1자
논리형
boolean : 1byte

Java 접근 제한자(제어자)

public : 모든 접근 허용
private : 같은 패키지에 있는 객체와 상속 관계 객체들만 허용
default : 같은 패키지에 있는 객체만 허용
protected : 현재 객체 내에서만 허용

오버로딩과 오버라이딩

오버로딩

한 클래스 내에서 같은 이름의 메소드 사용한 것

오버라이딩

상속 관계의 두 클래스의 상위 클래스에서 정의한 메소드를 하위 클래스에서 변경(재정의) 하는 것

스크립트

스크립트 언어

스크립트 언어 개념

소스 코드를 컴파일 과정을 거치지 않고 실행할 수 있는 프로그래밍 언어
스크립트 언어에 내장된 번역기에 의해 번역되어 실행
실행 단계에서 구문 분석

스크립트 언어 종류

서버 측 스크립트 언어
ASP(Active Server Page)
JSP(Java Server Page)
PHP(Professional Hypertext Preprocessor)
파이썬(Python)
인터프리터 방식의 객체지향 언어
실행 시점에 데이터 타입을 결정하는 동적 타이핑 기능을 보유
클라이언트 측 스크립트 언어
JavaScript
웹 브라우저에서 직접 번역되고 실행
VBScript
마이크로소프트 개발

파이썬(Python)

파이썬 개요

플랫폼에 독립적
인터프리터식
객체지향적
동적 타이핑 대화형 언어
쉬운 문법 구조

파이썬 변수명 작성 규칙

영문 대소문자, 숫자, ‘_’ 사용 가능
첫 글자는 영문자나 ‘_’ 로 시작
영문자는 대소문자 구분
공백 포함X
예약어 사용X

운영체제의 개요

운영체제 개요

운영체제(OS) 개념

운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어

운영체제 기능

편리한 인터페이스
시스템 성능 최적화
스케줄링 기능
자원 보호 기능
시스템 보호
데이터 공유

운영체제 운영 방식

일괄 처리 시스템
다중 프로그래밍 시스템
시분할 시스템
다중 처리 시스템
실시간 처리 시스템
다중 모드 시스템
분산 처리 시스템

운영체제 구성

제어 프로그램

감시 프로그램
작업 제어 프로그램
데이터 관리 프로그램

처리 프로그램

언어 번역 프로그램
컴파일러, 어셈블러, 인터프리터 등
서비스 프로그램
연계 편집, 유틸리티, 정렬, 병합
문제 프로그램
사용자 작성

프로세스 관리

프로세스

프로세스 정의

실행중인 프로그램
실행 가능한 PCB(Process Control Block)를 가진 프로그램
프로세서가 할당되는 실체
프로시저가 활동 중인 것
비동기적 행위를 일으키는 주체

프로세스 제어 블록(PCB : Process Control Block)

저장되어 있는 정보
프로세스 현재 상태
프로세스 우선 순위
프로세스에 할당된 자원에 대한 정보
CPU 레지스터 정보

프로세스 상태 전이

생성(New) 상태
준비(Ready) 상태
실행(Running) 상태
준비 상태의 프로세스가 CPU를 할당받아 실행중인 상태
디스패치 : 우선순위가 가장 높은 프로세스가 준비 상태에서 실행 상태로 전환되는 것
할당 시간 종료 : 실행 상태의 프로세스가 할당 시간이 종료되어 준비 상태로 전환되는 것
대기(Blocked) 상태
종료(Exit) 상태

스레드(Thread)

프로세스 내에서의 작업 단위
시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위
처리율 향상 가능
한 개의 프로세스는 여러 개의 스레드를 보유

병행 프로세스와 교착 상태

병행 프로세스(Concurrent Process)

오류 방지 방법
임계 영역(Critical Section)
상호 배제(Mutual Exclusion)
데커 알고리즘, 피터슨 알고리즘, Lamport의 빵집 알고리즘, Test and set 명령어 기밥, Swap 명령어 기법
동기화 기법(Synchronization)
세마포어, 모니터

교착상태(Deadlock)

서로 다른 프로세스 차지하고 있는 자원을 요구하며 무한정 대기가 걸려 프로세스들의 진행이 중단되는 현상
교착상태 발생 조건
상호배제(Mutual Exclusion)
점유 및 대기(Hold and Wait)
비선점(Non-preemption)
환형 대기(Circular Wait)
교착상태 해결 방법
예방(Prevention)
회피(Avoidance)
은행가 알고리즘
발견(Detection)
회복(Recovery)

프로세스 스케줄링

프로세스 스케줄링 개요

프로세스 스케줄링 개념

프로세스 생성 및 실행에 필요한 시스템의 자원을 해당 프로세스에 할당하는 작업
작업 순서를 결정하는 것
CPU 사용율 최대화

프로세스 스케줄링 기법

비선점(Non-preemption) 스케줄링

FIFO(First In First Out)
준비 상태 큐에 도착한 순서대로 CPU 할당
FCFS(First Come First Service)
SJF(Shortest Job First)
실행 시간이 가장 짧은 프로세스에게 먼저 CPU를 할당하는 스케줄링 기법
평균 대기 시간 최소화
HRN(Highest Response-ratio Next)
어떤 작업이 서비스를 받을 시간과 그 작업이 서비스를 기다린 시간으로 결정되는 우선순위에 따라 CPU를 할당하는 기법
우선순위 계산식 = (대기 시간 + 서비스를 받을 시간) / 서비스를 받을 시간

선점 스케줄링

RR(Round Robin)
주어진 시간 할당량 안에 작업을 마치지 않으면 준비 상태 큐의 가장 뒤로 배치된다.
SRT(Shortest Remaining Time)
작업이 끝나기까지의 실행시간 추정치가 가장 작은 작업먼저 실행시키는 기법
FIFO 기법보다 평균 대기 시간 감소
작업 시간이 큰 경우 오랫동안 대기
이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용 가능
다단계 큐(Multi-Level Queue)
우선순위에 따라 단계별 준비 상태 큐를 배치하는 기법
다단계 피드백 큐(Multi-Level Feedback Queue)

기억 장치 관리

기억 장치 관리 전략

반입 전략

보조 기억 장치에 보관 중인 프로그램/데이터를 주기억 장치로 언제 가져올 것인지 결정하는 전략
종류
요구 반입
예상 반입

배치 전략

최초 적합
최적 적합
최악 적합

기억 장치 교체 전략

OPT : 이상적
FIFO : 구현 간단
LRU(Least Recently Used) : 오랫동안 사용 않은 페이지 교체
LFU(Least Frequently Used) : 참초 횟수 가장 적은 페이지 교체
NUR(Not Used Recently) : 가장 최근 사용 안한 페이지 교체
SCR(Second Chance Replacement) : 자주 참조되는 페이지의 교체 예방

가상 기억 장치 구현 기법

가상 기억 장치(Virtual Memory)

페이징 기법 : 고정 크기 일정한 블록으로 분할
세그멘테이션 : 가변적인 크기의 블록으로 분할
세그먼트(Segment) : 큰 프로그램을 보다 작은 프로그램으로 분할해서 하나의 논리적 단위로 묶어 주기억 장치에 읽어 들일 수 있는 최소 단위

구역성(Locality)

프로세스가 한 곳에 집중적으로 참조되는 경향 의미
시간 구역성
공간 구역성

워킹 셋(Working Set)

운영체제가 CPU에 자주 사용하는 페이지를 준비시키는 것

스레싱(Thrashing)

페이지 부재가 발생하여 프로세스 수행 시간보다 페이지 이동 소요 시간이 더 커지는 현상
페이지 부재 : 참조할 페이지가 주 기억 장치에 없는 현상

디스크 스케줄링

디스크 스케줄링 종류

FCFS

요청한 순서대로 가져옴

SSTF(Shortest Seek Time First)

탐색 거리가 짧은 순으로 처리

SCAN

진행 방향의 모든 요청 서비스하면서 끝까지 이동한 후 반대 방향 요청 서비스하는 기버

C-SCAN

바깥에서 안쪽으로 이동하면서 요청을 서비스하는 기법

N-step SCAN

최적

에센바흐 스케줄링

한 회전 시간 동안만 처리

정보 관리

파일 시슽넴

파일시스템 개념

파일 관리 기능

파일 디스크럽터

파일 관리를 위한 파일 정보를 보유한 제어 블록
파일마다 독립적 존재, 시스템에 따라 다른 구조 지님
대개 보조 기억 장치에 저장 → 열릴 때 주기억 장치로 이동
사용자 직접 참조 불가

파일 디스크럽터 내용

파일 구조, 유형
파일 크기, 이름
파일 생성 시간, 수정 시간
파일에 대한 접근 횟수
보조 기억 장치 정보, 접근 제어 정보

파일 구조

파일 구조 종류

순차 파일
색인 순차 파일
기본 구역
색인 구혁
트랙 색인 구역
실린더 색인 구역
마스터 색인 구역
오버플로우 구역
직접 파일

디렉터리 구조

1단계 디렉터리 구조
2단계 디렉터리 구조
트리 디렉터리 구조
비순환 그래프 디렉터리 구조
일반적인 그래프 디렉터리 구조

분산 운영체제

다중 처리기

다중 처리기(Multi Processer) 개념

하나의 시스템에 2개 이상 프로세서를 가지고 동시에 여러 작업을 처리하는 장치

다중 처리기의 상호 연결 방법

시분할 공유 버스
크로스바 교환 행렬
하이퍼 큐브 : 10개이상 프로세서 병렬 동작 구조, n개일 경우 2n
다중 포트 메모리

분산 처리 시스템

투명성

위치(Location) 투명성
이주(Migration) 투명성
복제(Replication) 투명성
병행(Concurrency) 투명성

분산 운영체제 구조

성(Star)형
링형
다중 접근 버스
계층 연결
완전 연결 구조

UNIX

UNIX 개요

UNIX 특징

시분할 시스템을 위해 설계된 대화식 운영체제
개방형 시스템
트리 구조 파일 시스템
멀티
C언어로 구성

UNIX 구성

커널 : 핵심 부분
쉘 : 명령어 해석기, 인터페이스
유틸리티 : 편의 프로그램

UNIX 파일 시스템 구조

부트 브록 : 부팅에 필요한 블록
슈퍼 블록 : 전체 파일 시스템 정보
I-node 블록 == 파일 디스크럽션
데이터 블록

시스템 관련 명령어

login
logout
finger : 시스템에 등록된 사용자 정보
who : 로그인 중인 각 사용자에 대한 정보
ping
fsck : 무결성 검사
mount
unmae : 현시 시스템 정보 확인 명령어
옵션 a : 시스템 모든 정보 출력

프로세스 관련 명령어

fork : 새로운 프로세스 생성
exec
exit
wait
kill
ps
getpid
getppid

디렉터리 관련 명령어

pwd
ls
mkdir
rd
cd

파일 관련 명령어

create
open
cp
rm
mv
cat : 파일 내용 화면에 표시
chmod : 파일 사용 권한 변경
chown

UNIX 환경 변수

환경 변수

쉘이 프로그램들 사이에서 값을 전달해 주는 역할을 하는 변수
환경 변수는 대문자 사용

환경 변수 관련 명령어

env
set
printenv
echo
setenv

BASH Shell 실기

LINUX 표준 쉘
env
set
export
declare

OSI 7계층과 오류 제어 방식

OSI 참조 모델

OSI(Open Systems Interconnection) 참조 모델 개념

국제 표준화기구에서 개발한 모델

OSI 7계층

Layer 7 : 응용
서비스 제공
프로토콜 : HTTP, FTP, SMTP, Telnet, DNS
Layer 6 : 표현
응용 간의 대화 제어
데이터 변환
암호화, 데이터 압축, 코드 변환, 문맥 관리, 정보의 형식 설정 기능 제공
Layer 5 : 세션
논리적 동기 제어, 긴급 데이터 전송, 통신 시스템 간의 회화 기능 제공
Layer 4 : 전송(Transport)
투명한 데이터 전송
에러 제어 및 흐름 제어
프로토콜 : TCP, UDP
Layer 3 : 네트워크
통신망, 폭주 제어 기능
프로토콜 종류 : X.24, IP, ICMP, IGMP
Layer 2 : 데이터 링크
전송 데이터의 흐름 제어, 프레임 동기, 오류 제어 등 수행
프로토콜 : HDLC, PPP, LLC, LAPB
Layer 1 : 물리
물리적인 연결
프로토콜 : RS-232C, V.24, X.21

오류 제어 방식

자동 반복 요청(ARQ :Automatic Repeat reQuest)

정지-대기 ARQ
오류 발생을 점검 후 에러 발생 유무 신호(ACK/NAK)를 보내올 때까지 대기 방식
부담이 큼
연속 ARQ
Go-Back-N ARQ : 오류 발생 이후의 모든 블록 재전송
선택적 재전송 ARQ : 오류가 발생한 블록만 재전송
적응적 ARQ
효율 최대
데이터 블록 길이를 채널 상태에 따라 동적으로 변경하는 방식

TCP/IP

TCP/IP 프로토콜

TCP/IP

네트워크 계층 + 전송 계층

TCP/IP 계층

Layer 7,6,5 : 응용
Layer 4 : 전송
TCP : 연결형, 신뢰성, 캡슐화, 다중화
UDP : 비연결형, 비신뢰성
Layer 3 : 인터넷
주소 지정, 경로 설정
== 네트워크 계층
프로토콜 : IP, ICMP, IGMP, ARP 20.9(논리→물리), RARP(물리→논리)
ICMP : 에코 메시지
Layer 2,1 : 링크
프레임 송/수신
프로토콜 : Ethernet, IEEE 802, HDLC, X.25, RS-232C

TCP

전송 계층
스트림 전송 기능, 신뢰성
순서 제어, 오류 제어, 흐름 제어 기능
기본 헤더 크기 : 20~40 byte

IP

네트워크 계층
비신뢰성

IP 주소

IPv4

IPv4 개념

32비트 길이 IP 주소
네트워크 주소(Netid)+호스트 주소(Hostid)

IPv4 주소 체계

클래스 A : 0~127
국가, 대형 통신망
클래스 B : 128~191
중대형 통신망
클래스 C : 192~223
소규모 통신망
클래스 D : 224~239
멀티캐스트망
클래스 E : 240~255
실험용

IPv6

IPv6

128비트
16비트 씩 8개 필드
패킷 크기 유동적

IPv6 장점

인증 및 보안 기능 포함
네트워크 기능 확장 용이
멀티미디어 실시간 처리 가능
자동 네트워크 환경 구성 가능
유니, 애니, 멀티 케스트 3가지로 주소체계가 나뉨

IPv4 → IPv6 전환 전략

Dual Stack
Tunneling
Header Translation

IEEE 802 표준 규격

802.1 : 상위 계층 인터페이스
802.2 : 논리 링크 제어(LLC)
802.3 : CSMA/CD
802.4 : 토큰 버스(Token Bus)
802.5 : 토큰 링(Token Ring)
802.6 : MAN
802.8 : 고속 이더넷(Fast Ethernet)
802.11 : 무선 LAN
802.15 : 블루투스

CSMA/CA

무선 랜 데이터 전송
충돌 불가

CSMA/CD

유선 랜 데이터 전송
충돌 허용