49. 공통 모듈 구현
1) 재사용
재사용하는 거 장점 생각해보기
2) 모듈화
거대한 문제를 작은 조각으로 쪼갠다.
모듈의 독립성은 결합도와 응집도에 의해 측정된다.
결합도(Coupling)
모듈 간의 상호 의존도로 결합도가 약해지면 모듈 독립성이 향상됨 (당연함)
전역 변수보다 매개 변수를 사용하는 것이 결합도를 낮추는데 도움이 됨
결합도 정도: 데이터 결합도(파라미터 정도) < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도
응집도(Cohension)
모듈 내부의 기능적 연관도로 응집도는 높을 수록 좋다.
응집도 정도: 기능적(기술적으로 연관이 있다) > 순차적 > 교환적 > 절차적 > 시간적 > 논리적> 우연적
50. C언어의 개요
1) C언어의 기초
컴파일러 방식의 언어
시스템 프로그래밍에 가장 적합함
포인터에 의한 번지 연산 등 다양한 연산
이식성이 뛰어나 컴퓨터 기종에 관계 없이 프로그램 작성 가능
UNIX 운영 체제 구성
main 함수를 반드시 포함해야 하며 여기서 실행이 시작됨
영문 대소문자를 엄격하게 구분한다.
문장 끝에는 세미콜론을 사용한다.
여러 개의 문장을 묶어 하나의 블록으로 구성할 때는 중괄호를 사용한다.
주석은 /* ~ */으로 표기한다.
기억 클래스
자동 변수
레지스터 변수
정적 변수
외부 변수
변수명 작성 규칙
영문 대소문자, 숫자, _를 혼용해서 사용함
첫 글자는 영문자나 _로 사용해야 함
영문자는 대소문자 구분 하며 공백을 포함할 수 없음
32개의 예약어는 사용할 수 없음
포인터 변수
다른 변수의 주소값을 저장할 수 있다.
포인터 변수는 자료형에 상관없이 메모리 크기가 동일함
가리키는 변수 값을 읽기 위해 *(포인터) 연산자를 사용함
포인터 변수에 일반 변수의 주소를 대입하기 위해서는 &(주소) 연산자 사용
포인터 변수를 가리키는 포인터 변수를 선언할 수 있음
51. C언어의 연산
1) C언어 연산자의 종류
단항 > 산술 > 시프트 > 관계 > 비트 > 논리 > 조건 > 할당 > 콤마
2) C언어 연산자의 특징
삼항 연산자, 할당 연산자...
3) 라이브러리
내가 알고 있는 그 라이브러리임
52. Java 언어
1) Java 언어의 기초
객체지향 언어
추상화, 상속화, 다형성 같은 특징
네트워크 환경에서 분산 작업이 가능하도록 설계됨
가상 바이트 머신 코드를 사용해 플랫폼이 독립적임
가비지 콜렉터
유효하지 않은 가비지 메모리가 발생하는데 C언어와 달리 JVM(Java Virtual Machine) 가비지 컬렉터가 불필요 메모리를 알아서 정리함
Java 접근 제어자
public(모든 접근 허용), private(같은 패키지 내 객체와 상속 객체만), default(같은 패키지 객체만), protected(현재 객체 내에서만)
C언어와 변수명 작성 규칙이 거의 똑같은데 '$'를 혼용할 수 있다는 점.
영문자나 _, $로 첫 글자를 시작해야 한다.
연산자 우선 순위
단항 > 산술 > 비트 시프트 > 관계 > 논리 > 비트 > 조건 > 할당
3) 오버로딩과 오버라이딩
오버로딩
한 클래스 내 같은 이름의 메소드 사용
같은 이름의 메소드를 여러 개 정의하면서 매개 변수의 유형과 개수가 달라지게 하는 기술
오버라이딩
상속 관계의 두 클래스의 상위 클래스에서 정의한 메소드를 하위 클래스에서 변경(재정의) 하는 것
static 메소드의 오버라이딩은 허용하지 않는다.
오버라이딩의 경우 하위 객체의 매개 변수 개수와 타입은 상위 객체와 같아야 한다.
53. 제어문
1) 조건문
if문
if/else문
if/else if/else문
삼항 연산자에 의한 조건문
switch(조건값) ~ case(각 케이스별 명령문)문 (+ default)
2) 반복문
while문
do ~ while문 (일단 do 하고 while문을 검색해 반복 실행 여부 결정)
for문(초기식; 조건식; 증감식)
54. 스크립트 언어와 Python
1) 스크립트 언어
스크립트 언어?
소스 코드를 컴파일 과정 없이 수행할 수 있는 프로그래밍 언어
스크립트 언어의 내장된 번역기로 번역이 되어 실행된다.
실행 단계에서 구문을 분석한다.
서버 측 스크립트 언어: ASP, JSP, PHP, 파이썬(인터프리터 - 한줄씩)
클라이언트 측 스크립트 언어: JS, VBScript
2) 파이썬
인터프리터식, 객체지향적, 동적 타이핑 대화형 언어, 문법 쉬움
변수명 작성 규칙은 C언어와 동일함
55. 운영체제의 개요
1) 운영체제의 개요
처리 능력 향상
반환 시간 감소
신뢰도 향상
사용 가능도 향상 등
운영 방식
일괄 처리 시스템
다중 프로그래밍 시스템
시분할 시스템
다중 처리 시스템
실시간 처리 시스템 등등등...
2) 운영체제의 구성
제어 프로그램
감시 프로그램
작업 제어 프로그램
데이터 관리 프로그램
처리 프로그램
언어 번역 프로그램
서비스 프로그램
문제 프로그램
56. 프로세스 관리
1) 프로세스
실행중인 프로그램임
실행 가능한 PCB를 가진 프로그램
PBC: 프로세스 제어 블록
운영체제가 프로세스를 관리하기 위해 프로세스에 대한 중요 정보를 저장한 곳
스레드
프로세스 내에서의 작업 단위
하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있음
프로세스는 여러 개의 스레드를 가질 수 있음
2) 병행 프로세스와 교착상태
병행 프로세스: 두 개 이상의 프로세스들이 동시에 실행 상태에 있는 것
이로 발생할 수 있는 오류를 방지하는 방법: 임계구역, 상호배제, 동기화 기법
임계 영역: 어느 한 시점에서 하나의 프로세스가 자원 또는 데이터를 사용하도록 지정된 '공유 영역'
상호 배제: 공유 변수를 접근하고 있는 하나의 프로세스 외 다른 모든 프로세스들이 공유 변수에 접근 못하게 함
동기화 기법: 세마포어(연산 P와 V를 통해 프로세스 사이의 동기 유지, 상호배제의 원리 보장), 모니터(공유 데이터와 이 데이터를 처리하는 프로시저를 포함한 병행성 구조)
교착 상태(Deadlock)
둘 이상의 프로세스들이 서로 다른 프로세스가 차지하는 자원을 요구해 무한정 기다리면서 진행이 중단되는 현상
교착 상태 발생 조건
1. 상호 배제 (한번에 한 프로세스만 어떤 자원을 쓸 수 있음)
2. 점유 및 대기 (프로세스는 다른 자원이 할당되기 기다리는 동안 이미 확보한 자원을 계속 보유하고 있음)
3. 비선점 (자원을 보유한 프로세스로부터 자원을 강제로 뺏을 수 없음)
4. 환형 대기 (이미 자원을 가진 프로세스가 앞, 뒤의 프로세스의 자원을 요구함)
해결 방법
예방: 교착 상태가 발생하지 않게 하면 됨
회피: 은행가 알고리즘 사용. 교착 상태 가능성을 피해가는 방법
발견: 교착상태에 빠진 프로세스와 자원을 살핌
회복: 교착상태의 프로세스를 종료하거나 등등...
57. 프로세스 스케줄링
1) 프로세스 스케줄링 개요
자원을 알맞게 프로세스에 할당하는 작업임
2) 기법
비선점 스케줄링
한 프로세스가 자원을 할당 받으면 다른 프로세스가 강제로 뺏을 수 없고 사용이 끝날 때까지 기다림
모든 프로세스들에 대한 요구를 공정하게 처리 -> 응답 시간 예측
대신 사용시간이 긴 프로세스들이 먼저 쓰면 짧은 프로세스들이 기다려야 하는 경우 발생
FIFO, SJF(실행 시간이 가장 짧은 프로세스에 먼저 할당), HRN(대기 시간 + 서비스 시간 / 서비스 받을 시간)
우선순위
우선순위가 가장 높은 프로세스 먼저 자원 할당
우선순위가 낮은 프로세스는 무한 정지가 발생할 수 있는데 에이징 기법으로 해결할 수 있음
선점 스케줄링
한 프로세스가 자원을 받아 실행중이어도 우선 순위가 높은 다른 프로세스가 자원을 뺏을 수 있음
선점을 위한 시간 배당에 대한 인터럽트용 타이머 클럭이 필요함
온라인 응용에 적합함
RR, SRT, 다단계 큐, 다단계 피드백 큐...
58. 기억 장치 관리
1) 기억 장치 관리 전략
반입 전략 - 보조 기억 장치에 보관 중인 것을 주기억 장치로 언제 가져올지 결정하는 전략 (요구 반입/예상 반입)
배치 전략 - 위 내용과 동일한데 어디로 가져올지 결정하는 전략 (최초 적합/최적 적합/최악 적합)
기억 장치 교체 전략 - 주기억 장치의 모든 페이지 프레임이 사용중일 때 어떤 걸 교체할지 결정하는 전략
OPT: 가장 오랫동안 사용되지 않을 페이지를 먼저 교체
FIFO: 가장 먼저 적재된 페이지를 먼저 교체
LRU: 현 시점에서 가장 오랫동안 사용하지 않은 페이지 교체
LFU: 참조된 횟수가 가장 적은 페이지 먼저 교체
NUR: 각 페이지당 두 개의 하드웨어 비트를 두고 가장 최근 사용하지 않은 페이지 교체
SCR: FIFO의 단점 보완. 가장 오랫동안 주기억 장치에 상주한 페이지 중 자주 참조되는 페이지의 교체 예방
2) 가상 기억 장치 구현 기법
가상 기억 장치: 부족한 주기억 장치의 용량을 해결하기 위해 보조 기억 장치를 주기억 장치처럼 사용하는 기법
프로그램을 고정된 크기의 일정한 블록으로 나누는 페이징 기법
가변적인 크기의 블록으로 나누는 세그멘테이션 기법
페이징 기법
페이지 크기별로 쪼개줌
세그멘테이션 기법
더 작게 쪼개줌
구역성
프로세스가 실행되는 동안 일부 페이지만 집중적으로 참조되는 경향
시간 구역성, 공간 구역성
워킹 셋
운영 체제의 가상 기억 장치 관리에서 프로세스가 일정 시간동안 자주 참조하는 페이지들의 집합
스래싱
지나치게 페이지 부재가 발생해 프로세스 수행 시간보다 페이지 이동에 소요되는 시간이 더 커지는 현상
페이지 부재
참조할 페이지가 주기억 장치에 없는 현상
59. 디스크 스케줄링
1) 디스크 스케줄링
사용할 데이터가 디스크의 여러 곳에 저장되어 있을 때 데이터에 접근하기 위해 디스크 헤드의 이동 경로를 결정하는 기법
2) 종류
FCFS: 큐에 먼저 들어온 트랙에 대한 요청을 먼저 서비스함 (FIFO).
구현이 쉽지만 부하가 크면 응답 지연이 발생함
SSTF: 탐색 거리가 가장 짧은 트랙에 대한 요청을 먼저 서비스함
안쪽이나 바깥쪽 트랙이 가운데 트랙보다 서비스를 적게 받아 탐색 패턴이 편중됨
응답 시간 편차로 대화형에는 부적합함
SCAN: 현재 헤드 위치에서 진행 방향의 모든 요청을 서비스하면서 끝 -> 반대 방향으로
바깥쪽 트랙이 안쪽 트랙보다 서비스를 적게 받게 됨
C-SCAN: 헤드가 항상 바깥 -> 안으로 움직이며 모든 요청을 서비스함.
끝까지 이동 후 다시 밖 -> 안으로 이동
N-STPE, 에센바흐(한 회전동안 서비스 못하면 다음으로 미룸) 등등...
60. 정보 관리
1) 파일 시스템
파일은 연관된 데이터들의 집합
각각 고유한 이름을 갖고 있음
주로 보조 기억 장치에 저장해 사용함
파일 시스템은 보조 기억 장치와 그 안에 저장된 파일을 관리하는 시스템
파일 생성/수정/삭제 가능
정보의 백업 및 복구 기능
정보의 암호화 및 해독 기능 제공 등등
파일 디스크립터(내용: 파일 구조, 유형, 크기, 이름, 생성 시간, 수정 시간, 접근 횟수 등등등...)
파일을 관리하기 위해 필요한 내용을 갖고 있는 정보 블록(FCB라고 함)
파일마다 독립적으로 존재하며 시스템에 따라 다른 구조를 가짐
대개 보조 기억 장치에 저장되어 있다가 해당 파일이 열릴 떄 주기억 장치로 옮겨짐
파일 시스템이 관리하기 때문에 사용자가 직접 참조할 수 없음
2) 파일 구조
1. 순차 파일
레코드들이 논리적인 순서에 따라 물리적인 연속 공간에 순차적으로 저장되는 파일 구조
주기적으로 처리할 때 속도가 빠르고 처리 비용이 낮음
순차적으로 실제 데이터만 저장해 기억 공간의 활용률이 높음
특정 레코드 검색 시 순차적 검색을 하기 때문에 검색 효율 낮음
2. 색인 순차 파일
키값에 따라 순차적으로 정렬된 데이터를 저장하는 데이터 구역과 이 구역에 대한 포인터를 가진 색인 구역으로 구성됨
순차 처리/직접 처리 모두 가능
레코드의 삽입/삭제/갱신에 용이하고 처리 속도가 낮은 편
인덱스를 저장할 공간과 오버플로우 처리를 위한 별도의 공간이 필요함
색인 순차 파일의 구성은 기본 구역(레코드 기록 영역)과 색인 구역(트랙/실린더/마스터), 오버 플로우 구역으로 나뉨
3. 직접 파일
키에 일정한 함수를 적용해 상대 레코드 주소를 얻고 그 주소를 레코드에 저장하는 파일 구조
해싱 등을 사용해 레코드 키에 의한 주소 계산으로 레코드에 접근
61. 분산 운영 체제
1) 다중 처리기
멀티 프로세서: 하나의 시스템에 2개 이상의 프로세서로 여러 개의 작업을 동시에 처리하는 장치
하나가 고장나도 다른 하나가 나머지 작업을 수행함
프로세서 간 통신은 '공유 기억 장치'를 통해 입출력 채널과 주변 장치들을 공유함
대칭적 다중 처리 방식/비대칭적 다중 처리 방식
다중 처리기의 상호 연결 방법
시분할 공유 버스(하나의 버스 통신로만을 제공. 한 시점에 하나의 전송만 가능. 버스에 이상이 생기면 전체 장애)
크로스바 교환 행렬(버스 수를 기억 장치의 수만큼 증가시킨 구조로 서로 참조할 수 있지만 하드웨어가 복잡해짐)
하이퍼 큐브(10개 이상의 프로세서를 병렬 동작. 하나의 프로세서에 연결되는 다른 프로세서의 수가 n개일 때 총 2^n개의 프로세서 필요)
다중 포트 메모리(하나의 프로세서에 하나의 버스가 할당됨)
다중 처리기 운영체제 구조
주종처리기, 분리수행 처리기, 대칭적 처리기
약결합 시스템/강결합 시스템
2) 분산 처리기
위치 투명성, 이주 투명성, 복제 투명성, 병행 투명성
62. UNIX
1) UNIX
시분할 시스템, 개방형 시스템
트리 구조, 멀티 유저, 멀티 태스킹, C언어로 구성
구성
커널: 핵심 시스템으로 프로세스 관리, 메모리 관리 등 주요 역할
쉘: 명령을 해석해 커널로 전달하는 명령어 해석기. 인터페이스 담당.
유틸리티: 사용자의 편의를 위한 프로그램. 편집기/컴파일러/인터프리터 등
UNIX 파일 시스템 구조
부트 블록: 부팅에 필요한 코드를 저장한 블록
슈퍼 블록: 전체 파일 시스템에 대한 정보를 저장한 블록
I-node 블록: 각 파일에 대한 정보를 저장한 블록
데이터 블록: 실제 데이터를 저장한 블록
cat(파일 내용 화면에 표시), chmod(파일 사용 권한 지정), chown(파일 소유자 변경)
3) 환경 변수
내가 아는 그 환경변수임...
env, set, printenv, echo 등등...
BASH Shell
다양한 운영 체제에서 사용되는 LINUX 표준 쉘
63. OSI 7계층과 오류 제어 방식
1) OSI
물데네전세표응
물리: 물리적 장치와 인터페이스가 전송을 위해 필요한 기계/전기/기능/절차적 기능을 하는 계층
데이터 링크 계층: 인접한 두 개의 통신 시스템 간 신뢰성 있는 데이터 전송을 준비하는 계층(링크 연결 유지/종료/흐름 제어/오류 제어 등)
네트워크 계층: 통신망을 통해 패킷을 목적지까지 전달하는 계층 (ex. X.25, IP)
전송 계층: 통신 종단 간 신뢰성 있는 데이터를 전송하는 계층(TCP, UDP)
세션 계층: 프로세스 간 연결을 확립/관리/단절 시킴
표현 계층: 응용 간 대화 제어를 담당. 응용과 세션 사이 데이터 변환 담당. 진행하다 끊기면 어디까지 진행됐는지 동기점으로 오류 복구
응용 계층: 서비스 제공. 응용 프로세스와 직접 관계해 서비스 수행 (HTTP, SMTP, DNS 등)
3) 오류 제어 방식
자동 반복 요청: 통신 경로에서 오류 발생 시 수신 측은 송신에 오류를 통보, 송신은 오류가 발생한 프레임을 재전송함
정지-대기ARQ(ACK/NAK), 연속ARQ, 적응적ARQ
64. TCP/IP 프로토콜
1) TCP/IP 프로토콜
인터넷에 연결된 서로 다른 기종의 컴퓨터 간 데이터 송/수신이 가능하도록 도와주는 표준 프로토콜
TCP 프로토콜과 IP 프로토콜의 결합적 의미로 TCP가 IP보다 상위층에 속함
네트워크 환경에 따라 여러 프로토콜을 허용하며 접속형/전이중 전송/신뢰성 서비스 제공
TCP: OSI 7계층의 전송 계층 역할 수행. 신뢰성 있음
IP: OSI 7계층의 네트워크 계층 역할 수행. 비신뢰성. (주소 경로만 나타내기 때문에)
링크 계층: 프레임 송수신. 이더넷, IEEE 802, X.25 등
인터넷 계층: 주소 지정, 경로 설정 제공(=네트워크 계층), IP, ICMP 등
전송 계층: 호스트 간 신뢰성 있는 통신 제공(TCP, UDP)
응용 계층: 응용 프로램 간 데이터 송수신 제공. SMTP, FTP 등
65. IP 주소
1) IPv4
32비트 길이의 IP 주소
주소의 각 부분을 8비트씩 4개로 나눠서 10진수로 표현함
IP 주소 = 네트워크 주소 + 호스트 주소
서브넷 마스크
네트워크를 작은 내부 네트워크로 분리해 효율적으로 네트워크 관리하는 수단
32bit 값으로 IP 주소를 네트워크와 호스트 IP 주소를 구분하는 역할을 함
2) IPv6
IPv4의 주소 부족 문제를 해결하기 위해 개발됨
128비트 길이의 IP 주소로 16비트씩 8개의 필드로 분리 표기함
인증 및 보안 기능이 있어 보안성 강화됨
확장 헤더로 네트워크 기능 확장 용이
패킷 크기에 제한이 없고 멀티미디어의 실시간 처리 가능
자동으로 네트워크 환경 구성 가능
주소 체계는 유니캐스트, 애니캐스트, 멀티캐스트 3가지로 나뉨
CSMA/CA
무선 랜에서 데이터 전송 시 매체가 비어 있음을 확인한 뒤 충돌을 회피하기 위해 임의 시간을 기다린 뒤 데이터를 전송하는 방법
네트워크에 데이터의 전송이 없는 경우라도 동시 전송에 의한 충돌에 대비하여 확인 신호를 전송한다.
CSMA/CD
전송 중 충돌이 감지되면 패킷의 전송을 즉시 중단하고 충돌이 발생한 사실을 모든 스테이션들이 알 수 있도록 간단한 통보 신호를 송신
스테이션 수가 많으면 충돌이 많아져 효율이 떨어짐
출처: https://www.youtube.com/watch?v=Oxjmb9rAsn8&list=PL6i7rGeEmTvqEjTJF3PJR4a1N9KTPpfw0&index=5
'✏️ 정보처리기사' 카테고리의 다른 글
[정보처리기사: 필기] 5. 정보 시스템 구축 관리 (0) | 2024.02.13 |
---|---|
[정보처리기사: 필기] 4. 프로그래밍 언어 활용 문제 풀이 (0) | 2024.02.11 |
[정보처리기사: 필기] 3. 데이터베이스 구축 문제 풀이 (0) | 2024.02.09 |
[정보처리기사: 필기] 3. 데이터베이스 구축 (1) | 2024.02.08 |
[정보처리기사: 필기] 2. 소프트웨어 개발 문제 풀이 (0) | 2024.01.26 |