[Engineer Information Processing] 4. 프로그래밍 언어 활용
정보처리기사를 취득하기 위해 공부하는 과정에 작성한 ‘프로그래밍 언어 활용’ 관련 정리이다.
C
C 개요
C기본 자료형 :short,int,long,float,double,charC변수명 작성 규칙 : 영문 대소문자, 숫자,_혼용 (첫글자 숫자X, 예약어X)
C 라이브러리
- 라이브러리 : 필요할 때 찾아 쓸 수 있도록 모듈화되어 모듈, 패키지의 형태로 제공되는 프로그램
- 헤더 파일 (
.h)가 필요한 이유? : 라이브러리를 사용하기 위해 - 표준 라이브러리 :
string.h,stdio.h,stdlib.h,ctype.hstdlib.h함수 :malloc,calloc,realloc,free,rand,abs
C 연산자
C연산자 종류·우선순위 : 단항 연산자 → 산술 연산자 → 시프트 연산자 → 관계 연산자 → 비트 연산자 → 논리 연산자 → 조건 연산자 → 대입 연산자 → 콤마 연산자- 논리 연산자의 우선순위 :
NOT→AND→OR
- 논리 연산자의 우선순위 :
C 포인터
C포인터 : 객체에 대한 참조를 하는 다른 객체를 가리키는 자료형- 주소 연산자
&: 모든 변수에 대한 주소값을 구하는 연산자 - 간접 연산자
*: 포인터 변수의 자료를 구하는 연산자
- 주소 연산자
C 배열 / C 구조체
C배열 : 배열, 구조체, 공용체- 구조체 : 서로 연관된 데이터를 모아놓은 것
Java
Java 개요
Java: 객체지향 프로그래밍 언어- 객체지향 구성 요소 : 클래스, 객체, 속성, 메소드, 메시지
- 객체지향 특징 : 캡슐화, 정보은닉, 추상화, 상속성, 다형성
- 가비지 컬렉션 :
JVM에서 불필요한 메모리 정리 Java기본 자료형 :byte,short,int,long,float,double,char,booleanJava출력 메소드 :System.out.print()(줄바꿈X),System.out.printIn()(줄바꿈O),System.out.printf()(변환 문자 사용해 출력)Java변수명 작성 규칙 : 영문 대소문자, 숫자,_,$혼용 (첫글자 숫자X, 예약어X)Java연산자 종류·우선순위 : 단항 연산자 → 산술 연산자 → 비트 이동 연산자 → 관계 연산자 → 비트 논리 연산자 → 논리 연산자 → 조건 연산자 → 대입 연산자
Java 자료형
Java기본 자료형 : 논리형, 문자형, 정수형, 실수형Java참조 자료형 : 문자열, 배열, 클래스, 인터페이스, 열거형
Java 클래스
- 클래스 : 객체를 정의하기 위한 틀
- 클래스 선언 후
new로 객체 생성, 래퍼런스 변수를 선언해 객체 활용 - 클래스 이름은 하나 이상의 문자로 (반드시 대문자로 시작해야 함)
- 소스 파일에는 하나의
public클래스만 가능 main은 실행의 시작을 위해 반드시 필요
- 클래스 선언 후
- 추상 클래스 : 실행 코드가 없는 추상 메소드를 하나 이상 포함하는 클래스
- 추상 메소드 : 자식 클래스에서 재정의해 사용하는 메소드
- 클래스의 형변환 : 재정의한 메소들르 부모 클래스의 객체 변수를 통해 사용하려면 부모 클래스의 객체 변수를 선언할 때 자식 클래스의 생성자를 이용해야 함 → 클래스의 다형성
Java 상속
- 상속 : 자식 클래스가 부모 클래스의 속성과 메소드를 상속받는 것
- 메소드 오버라이딩 : 클래스 상속 상황에섯 부모 클래스의 멤버를 자식 클래스에서 상속해 내용을 수정해 사용
Java 예외 처리
- 예외 처리 : 오동작이나 실행 시간 동안 발생해 결과에 악영향을 미치는 오류
- 예외 처리 특징 : 예외 클래스 계총 구조,
Checked & UnChecked예외,try-catch-finally, 다중catch블록,throws & throw,CustomException
- 예외 처리 특징 : 예외 클래스 계총 구조,
Python
스크립트 언어와 Python
- 스크립트 언어 : 소스 코드를 컴파일 과정 없이 실행할 수 있는 프로그래밍 언어
- 서버 측 스크립트 언어 :
ASP,JSP,PHP,Python - 클라이언트 측 스크립트 언어 :
JS
- 서버 측 스크립트 언어 :
Python: 플랫폼 독립적, 인터프리터, 객체지향적, 동적 타이핑 대화형 언어Python변수명 작성 규칙 : 영문 대소문자, 숫자,_혼용 (첫글자 숫자X, 예약어X)Scrapy:Python웹 크롤러 프레임워크
Python 자료형
Python숫자 자료형 : 정수형, 실수형, 복소수형Python시퀀스 자료형 : 문자열, 리스트, 튜플Python매핑 자료형 : 딕셔너리Python집합 자료형 : 집합Python부울 자료형 : 불리언PythonNone자료형 :None
Python 연산
- 인덱싱 : 문자열의 각 문자에 인덱스 할당 (첫번째는 0)
- 클래스 메소드 : 클래스에 속한 메소드 (
@classmethod데코레이터로 정의)
Python 함수
Python함수 : 재사용 가능한 코드 블록range(): 0~주어진 인수 미만의 연속된 정수를 리스트 객체로 반환map(): 주어진 함수를 순회 가능한 객체의 모든 요소에 적용해 새로운 이터레이터 반환split(): 구분자 기준으로 분리해 분리된 각 부분을 원소로 가지는 리스틑 반환
Python조건문 :if ~ elif ~ else- 지역 변수 : 함수 내에서 정의된 변수
운영체제 개론
운영체제 개요
- 운영체제 : 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로 동작하는 시스템 소프트웨어
- 시스템 소프트웨어 : 컴퓨터의 전반적인 운영에 필요한 가장 기본적인 프로그램
- 운영체제 평가 기준 : 처리 능력 향상, 응답 시간 단축, 신뢰도 향상, 사용 기능도 향상
운영체제의 운영 방식
- 일괄 처리 시스템 : 사용자 개입 없이 일정량 혹은 일정 시간 동안 데이터를 모아 처리
- 다중 프로그래밍 시스템 : 2개 이상의 프로그램을 주기억장치에 기억시켜
CPU를 번갈아 사용- 다중 프로그래밍 시스템 특징 : 멀티태스킹, 가상 메모리,
CPU리소스 사용 효율화
- 다중 프로그래밍 시스템 특징 : 멀티태스킹, 가상 메모리,
- 실시간 처리 시스템 : 데이터 발생 즉시 처리하여 결과 산출
- 시분할 시스템 :
CPU전체 사용 시간을 작업 시간량으로 나눠CPU를 시간량 동안만 사용- 시분할 시스템 특징 : 다중 사용자 지원, 시분할 방식, 대화식 환경
- 다중 처리 시스템 :
CPU를 두 개 이상 두어 그 업무를 분담해 처리- 다중 처리 시스템 특징 : 병렬 처리, 자원 분산, 확장성
- 분산 처리 시스템 : 여러 대의 컴퓨터로 작업을 나누어 처리
- 가상화 시스템 : 하나의 물리적 시스템에서 여러 개의 가상 시스템을 구동
- 클라우드 컴퓨팅 시스템 : 인터넷을 통해 자원을 공유받고 서비스를 제공
운영체제의 프로그램 구성
- 제어 프로그램 : 컴퓨터 시스템의 하드웨어와 소프트웨어를 제어
- 제어 프로그램 기능 : 프로세스·메모리·입출력·장치·자원·보안 관리
- 제어 프로그램 종류 : 감시 프로그램, 작업 제어 프로그램, 데이터 관리 프로그램
- 처리 프로그램 : 사용자의 응용 프로그램이나 그 작업을 실행
- 처리 프로그램 역할 : 응용 프로그램 실행, 작업 처리, 자원 관리, 결과 제공
- 처리 프로그램 기능 : 파일·메모리·디스크·네트워크 관리, 사용자 인터페이스
- 처리 프로그램 종류 : 언어 번역 프로그램, 서비스 프로그램, 문제 프로그램
프로세스 관리
- 프로세스 : 실행 중인 프로그램
- 프로세스 제어 블록 (
PCB) : 운영체제가 프로세스를 관리하기 위해 프로세스에 대한 중요 정보 저장 - 프로세스 상탵 전이 : 프로세스가 다양한 상태를 거치면서 실해오디는 과정 (운영체제의 스케줄러로 관리)
- 프로세스 상태 전이 절차 : 생성 → 준비 상태 → 실행 상태 (디스패치, 할당 시간 종료) → 대기 상태 (블록, 웨이크 업) → 종료
- 프로세스 제어 블록 (
- 스레드 : 프로세스 내 작업 단위 (시스템의 여러 자원을 할당받아 실행하는 프로그램 단위)
- 병행 프로세스 : 두 개 이상의 프로세스들이 동시에 실행 상태에 있는 것 → 병행 프롯세스 오류 방지
- 임계 영역 : 어느 시점에서 하나의 프로세스가 자원을 사용하도록 지정된 공유 영역
- 상호 배제 : 공유 변수에 접근하고 있는 한 프로세스 외엔 모두 공유 변수를 접근하지 못하게 함
- 세마포어 : 프로세스 간 동기를 유지하고 상호 배제의 원리 보장
- 모니터 : 모니터의 경계에서 상호배제 시행, 모니터 외부에선 모니터 내부에 직접 액세스 불가능
교착 상태
- 교착 상태 : 둘 이상의 프로세스들이 서로 다른 프로세스가 차지한 자원을 요구하며 무한정 대기
- 교착 상태 발생 조건 : 상호 배제, 점유 및 대기, 비선점, 환형 대기
- 교착 상태 해결 방법 : 예방, 회피, 발견, 회복
- 인터럽트 : 어떤 특수 상태 발생 시 현재 실행 중인 프로그램을 일시 중단하고, 그 특수 상태를 처리하는 프로그램
프로세스 스케줄링
- 프로세스 스케줄링 : 프로세스 생성 및 실행에 필요한 시스템 자원을 해당 프로세스에 할당
- 비선점 : 한 프로세스가
CPU를 할당받으면 다른 프로세스가CPU사용 완료까지 대기FIFO: 준비 상태 큐에 도착한 순서대로CPU할당SJF: 준비 상태 큐에 기다리는 프로세스 중 가장 짧은 프로세스에 먼저CPU할당HRN: 서비스 시간, 서비스 대기 시간으로 결정된 우선순위에 따라CPU할당HRM우선순위 계산식 = (대기 시간 + 서비스 시간) / 서비스 시간
- 선점 : 한 프로세스가
CPU를 할당받아도 다른 프로세스가 우선순위가 높으면CPU점유
- 비선점 : 한 프로세스가
기억 장치 관리
- 반입 전략 : 보조 기억 장치에 보관된 프로그램이나 데이터를 주기억 장치에 언제 가져올지 결정하는 전략
- 요구 반입 : 프로세스가 실제 필요한 때만
- 예상 반입 : 프로세스의 실행 특성 및 예측을 기반하여 미리
- 배치 전략 : 보조 기억 장치에 보관된 프로그램이나 데이터를 주기억 장치의 어디로 가져올지 결정하는 전략
- 최초 적합 : 주기억 장치 내에 적재 가능한 공간에 첫번째 분할 영역에 배치
- 최적 적합 : 주기억 장치 내에 적재 가능한 공간에 가장 작은 공백이 남는 부분에 배치
- 최악 적합 : 주기억 장치 내에 적재 가능한 공간에 가장 큰 공백이 남는 부분에 배치
- 단편화 : 주기억 장치 내에 빈번히 기억 장소가 할당되고 반납되면서 기억 장소들이 조각들로 나뉘는 현상
- 내부 단편화 : 프로세스가 필요한 크기보다 메모리가 더 커서 메모리 공간 낭비
- 외부 단편화 : 메모리 할당 및 해제가 반복되면서 중간에 남는 메모리를 사용하지 못해 메모리 공간 낭비
가상 기억 장치
- 가상 기억 장치 할당 방식 : 주기억 장치의 부족한 용량을 해결하기 위해 보조 기억 장치를 주 기억 장치처럼 활용
- 세그멘테이션 : 가상 장치에 보관된 프로그램을 다양한 크기로 나눠 적재
- 페이징 : 가상 기억 장치에 보관된 프로그램과 주기억 장치의 영역을 동일하게 나눠 적재
- 페이징 부재 : 참조할 페이지가 주기억 장치에 없는 현상
- 페이징 부재 처리 과정 : 페이지 부재 예외 처리 → 페이지 스와핑 (디스크에서 페이지 가져옴)
→ 페이지 테이블 가져옴 → 프로세스 재시작</br>
- 페이징 부재 처리 과정 : 페이지 부재 예외 처리 → 페이지 스와핑 (디스크에서 페이지 가져옴)
- 워킹 셋 : 가상 기억 장치 관리에서 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
- 스래싱 : 한 프로세스가 작업 과정에 수행하는 기억 장치 접근에서 지나친페이지 부재가 발생해,
프로세스 수행 시간보다 페이지 이동에 걸리는 시간이 더 커지는 현상</br> - 기억 장치 교체 전략 :
OPT,FIFO,LRU,NUR,SCR
디스크 스케줄링
- 디스크 스케줄링 : 사용 데이터가 디스크 곳곳에 저장되어 있을 때, 데이터 액세스를 위해 디스크 헤드의 이동 경로 결정
FCFS:FIFOSSFT: 탐색 거리가 가까운 순서대로SCAN: 진행 방향 끝까지, 그리고 반대로
정보 관리
- 파일 시스템 : 연관된 데이터의 집합인 파일을 관리하는 시스템
- 파일 디스크립터 (
FCB) : 파일 관리에 필요한 정보를 가진 제어 블록
- 파일 디스크립터 (
분산 운영체제
- 분산 처리 시스템 : 여러 대의 컴퓨터들에 의 해 작업한 결과를 통신망으로 상호 교환할 수 있도록 연결된 시스템
- 투명성 : 분산 처리 운영체제에서 구제적인 시스템 환경을 사용자가 알수 없도록 하는 것
- 투명성 종류 : 위치 투명성, 이주 투명성, 복제 투명성, 병행 투명성, 접근 투명성
UNIX, Linux
UNIX: 시분할 시스템을 위해 설계된 대화식 운영체제- 쉘 : 사용자가 지정한 명령들을 해석해 커널로 전달하는 명령어 해석기 (인터페이스 담당)
Linux:UNIX와 호환, 멀티태스킹 및 멀티 유저 지원umask: 파일, 디렉터리 생성 시 초기 접근 권한 설정
- 리눅스 로그 파일 :
utmp,wtmp,btmp
네트워크 개론
데이터 통신 개요
- 네트워크 : 원하는 정보를 원하는 수신자에 정확히 전송하기 위한 기반 인프라
- 네트워크 분류 :
LAN,MAN,WAN - 네트워크 관련 장비 : 리피터, 허브, 스위치 (
L1,L2,L3,L4,L5), 브리지, 라우터, 게이트웨이
- 네트워크 분류 :
LAN: 근거리 통신 네트워크LAN토폴로지 : 성형, 링형, 버스형, 계층형, 망형LAN분류 : 베이스밴드, 광대역- 전송 매체 접근 제어 (
MAC) : 하나의 통신 회선에 여러 컴퓨터 연결 LAN표준 : 이더넷
- 데이터 회선망 : 전용 회선, 교환 회선
- 회선 구성 방식 : 점 대 점 방식, 다중 점 방식, 회선 다중 방식
- 회선 교환 방식, 축적 교환 빙식 (메시지 교환 방식, 패킷 교환 방식 (가상 회선, 데이터그램))
OSI 7계층과 오류 제어 방식
OSI참조 모델 : 컴퓨터 네트워크에서 여러 시스템이 데이터를 통신하도록 표준화·계층화된 인터페이스DPI: 전 계층의 패킷 내부 컨텐츠를 파악해 트래픽을 조장하는 패킷 분석 기술
OSI7계층 구조 :OSI참조 모델을 구체화한 것- 물리 계층 : 물리적, 기계적 통신 (
RS-232C) - 데이터 링크 계층 : 두 통신 시스템 간의 링크로 전송 (
HDLC,LLC) - 네트워크 계층 : 통신망을 통해 패킷을 목적지까지 전달 (
IP) - 전송 계층 : 통신 종단 간 데이터 전송 (
TCP,UDP) - 세션 계층 : 프로세스 간 연결 관리
- 표현 계층 : 응용 및 세션 사이의 대화 제어 및 데이터 변환
- 응용 계층 : 응용 서비스 제공 (
HTTP,FTP,DNS,SMTP)
- 물리 계층 : 물리적, 기계적 통신 (
- 자동 반복 요청 (
ARQ) : 통신 경로에 오류가 발생하면 수신자가 오류 발생을 송신자에 통보하고, 송신자는 오류가 발생한 프레임을 재전송하는 오류 제어 방식ARQ종류 : 정지-대기ARQ, 연속ARQ, 선택적 재전송ARQ, 적응적ARQ
- 패리티 검사 : 데이터 블록에 1비트의 패리티 비트를 추가해 오류 검출 (홀수 패리티, 짝수 패리티)
- 순환 중복 검사 : 다항식 코드를 통한 에러 검사 (해밍 코드 방식)
TCP/IP 프로토콜, 패킷 교환
TCP/IP: 인터넷에 연결된 서로 다른 기종의 컴퓨터 간에 데이터 송수신을 돕는 표준 프로토콜TCP: 전송 계층 (L4) 역할 수행 (순서·에러·흐름 제어, 전이중·스트림 데이터 서비스, 메시지 캡슐화·역캡슐화, 다중화·역다중화)UDP: 전송 계층 (L4) 역할 수행 (비연결성·비신뢰성, 복구X)IP: 네트워크 계층 (L3) 역할 수행 (라우팅·데이터그램)ICMP:IP오류 보고 및 수정 메커니즘IGMP: 시작지에서 여러 목적지로 전송될 때 사용ARP: 논리 주소를 물리 주소로 변환
IP프로토콜 필드 : 헤더 길이 (4bit), 토탈 패킷 길이 (16bit),Time-To-Live(8bit)
IP 주소와 경로 제어
IPv4: 32비트IP주소 (네트워크 주소 + 호스트 주소)IPV4특징 : 주소 고갈, 서브넷팅·CIDRIPv4주소 체계 : 클래스A ~ E- 서브넷 마스크 : 네트워크를 작은 내부 네트워크로 분리해 이진 형태로 관리
IPv6: 128비트IP주소 (16비트씩 8개 필드로 분리 표기)IPV6장점 : 보안성 강화, 확장 용이, 패킷 크기 제한 없음, 실시간 처리·자동 네트워크 구성 가능IPV6통신 방식 : 유니캐스트, 애니캐스트, 멀티캐스트
- 경로 제어 : 각 메시지에서 목적지까지 갈 수 있는 여러 경로 중에 한 경로를 설정
- 경로 제어 프로토콜 :
IGP,EGP,BGP
- 경로 제어 프로토콜 :