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

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

by baam 2022. 4. 21.

1. 프로그램 개발 환경 구축

 1-1. 프로그램 개발 환경 구성

  • 배치 프로그램의 필수 요소 : 대용량 데이터, 자동화, 견고함, 안정성, 성능

 1-2. 프로그래밍 언어

  • C : UNIX, 포인터 타입 제공
  • C++ : C언어에 객체지향 기술을 더한 언어
  • Java : 객체지향, 컴파일, Class파일
  • JavaScript : 객체지향 스크립트 언어, 프로토타입을 기반으로 객체 상속을 지원한다.
  • Python : 이식성이 좋은 언어, 동적타이핑을 지원하는 인터프리터 방식의 언어
  • PHP : 서버측 스크립트 언어, 객체지향

 1-3. 프로그래밍의 기본 개념

  • 알고리즘 설계 기법 : 동적 계획법, 탐욕적 알고리즘, 재귀적 알고리즘, 근사 알고리즘, 분할 정복법, 퇴각 검색법

2. 절차지향 프로그래밍

 2-1. C언어-데이터 가공 및 입출력

  • 변수명 선언 규칙 :  첫 글자는 영문자와 언더바, 대소문자 구분
  • 입력 함수 : getchar(), gets(문자배열), scanf(서식문자열, 변수명 ,,,)
  • 출력 함수 : putchar(), puts(문자열), printf(서식문자열, 변수명 ,,,)

 2-2. C언어-선택 및 반복 제어문

  • if, if-else, switch-case, break, for, while, do-while, continue(아래의 코드를 무시하고 다음 단계 반복으로 넘어간다.)

 2-3. C언어-자료구조와 포인터

  • 배열의 크키보다 적은 갯수로 초기화를 하는 경우, 나머지는 0으로 초기화된다.
  • 배열이름 - 배열의 주소 출력, 배열이름+N - N번째 데이터의 주소
  • 데이터 식별자 앞에 &를 붙이면 주소값을 알 수 있다.
  • 포인터 변수 앞에 *을 붙이면 해당 주소의 데이터를 사용할 수 있다.
  • int *p; : 포인터 변수 생성, p = &data; : 포인터 변수에 data 변수의 주소값 할당, *p = 20; : p에 저장된 주소 위치로 접근하여 20 할당
  • 배열명은 주소상수이므로 &를 붙일 필요가 없다.

3. 객체지향 프로그래밍

 3-1. 객체지향 기술

  • 캡슐화 : 속성과 메소드를 하나로 묶는 것, 정보은닉
  • 추상화 : 클래스의 공통된 요소를 추출하여 상위 클래스로 구현한다. 기능추상화, 자료추상화, 제어추상화
  • 상속
  • 다형성 : 오버로딩(동일한 이름의 여러 메소드 중, 매개변수로 전달되는 인수로 식별하여 호출), 오버라이딩

 3-2. 객체지향 개발 절차

  • 럼바우 방식 :  객체모델링, 동적모델링, 기능모델링의 순서로 분석하여 도식화한다.
  • 객체지향 설계 원칙 : 단일 책임, 개방 폐쇄, 리스코프 치환, 인터페이스 분이, 의존성 뒤집기

 3-3. Java 언어

  • 접근제어자(제한자) : public, default, protected(자신과 하위클래스), private(자신의 클래스에서만)
  • 생성자 메소드 : 객체가 생성될 때 자동으로 실행되는 메소드, 클래스명과 동일, 생성자 메소드가 정의되어 있지 않으면 자바에서 자동으로 생성해 준다.
  • 멤버 변수에 static을 붙이면 모든 객체가 공유하는 정적변수로 생성된다.
  • 오버라이딩 : extends, 상위 클래스의 메소드를 재정의하여 사용하는 기술
  • 추상클래스 : abstract
  • 인터페이스의 구현 : class 대신 interface 키워드를 사용하여 구현, implements 키워드를 사용하여 상속받는다.

 3-4. Python 언어

  • 변수 선언 : 동적 할당 방식, 자료형을 지정하지 않는다. 첫 글자는 영문자와 언더바, 대소문자 구분
  • 입력 함수 : input(<prompt>) prompt를 출력한 뒤 사용자 입력을 받는다.
  • 출력 함수 : print(value, ... ) value를 공백으로 구분하여 차례대로 출력한다.
  • 주석처리 #
  • 시퀀스 : 리스트, 튜플
  • 리스트 : 요소를 추가하거나 삭제할 수 있는 가변형 시퀀스, 대괄호와 쉼표로 구분하여 정의한다.
  • 튜플 : 요소를 추가,삭제할 수 없는 불변형 시퀀스, 괄호와 쉼표로 구분하여 정의
  • 시퀀스 인덱싱 : 첨자의 시작은 0부터 증가, 역순으로 인덱싱을 할 때는 -1부터 감소한다.
  • 시퀀스 슬라이싱 : 2개의 첨자를 이용, 시작첨자부터 끝첨자 바로 전 항목까지 참조
  • 매핑형 자료구조 : 딕셔너리
  • if-elif-else, 하위 영역이 필요한 구문은 콜론(:)을 사용, 들여쓰기 레벨이 같은 코드를 동일한 영역으로 판단.
  • 인스턴스 생성 : 자바와 달리 new 키워드 없이 생성한다.
  • 메소드 정의 : def 키워드로 메소드를 정의한다.

4. 운영체제

 4-1. 명령어와 주소체계

  • 메모리 주소 레지스터(MAR) : 데이터의 번지를 기억
  • 메모리 버터 레지스터(MBR) : 데이터가 잠시 저장
  • 프로그램 카운터(PC) : 다음에 실행할 명령어들의 번지를 보관
  • 명령 레지스터(IR) : 현재 실행 중인 명령어를 임시 보관

 4-2. 운영체제

  • 유닉스 : C언어를 기반으로 제작, 이식성이 우수하다.
  • 커널 :  유닉스의 핵심요소
  • 쉘 : 사용자 명령의 입력을 받아 시스템 기능을 수행하는 명령 해석기이다. 사용자와 커널 사이에서 중계자 역할.
  • 유닉스 파일 권한 : 소유자, 그룹, 사용자 순으로 권한 지정 rwx
  • 리눅스 : 유닉스를 기반, 소스 코드 전체를 무료로 공개한 오픈 소스 시스템 소프트웨어
  • 쉘 스크립트 : 운영체제의 제어 프로그램을 통제할 수 있는 인터프리터 방식의 프로그램, sh 파일로 저장, if, case, for, while, until
  • 환경변수 출력 명령어 : echo, setenv, printenv

 4-3. 프로세스

  • 준비상태 : CPU의 할당을 기다리는 시점
  • 실행상태 : 프로세스가 CPU를 할당받아 작업이 진행되는 상태
  • 대기상태 : 프로세서의 특정 작업을 진행하기 위해 입출력 작업 등을 기다리는 상태
  • 종료상태 : 프로세스 실행이 완료되어 종료된 상태
  • Dispatch : 준비상태 > 실행상태
  • Time Run Out : 실행 상태의 프로세스가 할당된 시간을 다 사용했지만 아직 작업을 끝내지 못한 경우 다시 준비 상태로 넘어가는 과정
  • Block : 실행 상태 > 대기상태
  • Wake Up : 대기상태 > 준비상태
  • 스레드 : 프로세스 내에서의 작업 단위, 서로 독립적인 다중 수행이 가능하다.
  • 프로세스 스케줄링 : CPU를 사용하려고 하는 프로세스들 사이의 우선 순위를 관리하는 것이다.
  • 비선점형 스케줄링 : FIFO, SJF(실행 시간이 가장 짧은 순), HRN(우선순위 = (실행시간+대기시간)/실행시간)
  • 선점형 스케줄링 : RR(Time Slice를 사용), SRT(남아있는 실행시간이 가장 작은 순), MRQ
  • 임계구역 : 둘 이상의 프로세스가 운영될 때 서로 공유하게 되는 자원
  • 상호배제 : 하나의 프로세스만 임계구역을 사용할 수 있도록 다른 프로세스의 접근을 차단하는 것
  • 교착상태 : 둘 이상의 프로세스가 실현 불가능한 상태를 무한정 기다리는 있는 상태
  • 교착상태가 발생할 수 있는 필요 충분 조건 : 상호배제, 점유와 대기, 비선점, 환형대기
  • 교착 상태 회피 방안 : 은행원 알고리즘

 4-4. 기억장치 관리

  • 주기억장치 관리 전략 : 배치전략(최초 적합, 최적 적합, 최악 적합), 교체전략(FIFO, OPT, LRU, LFU, NUR, SCR)
  • 가상기억장치 : 보조기억장치의 일부를 주기억장치처럼 사용
  • 페이징 기법 : 외부단편화는 발생하지 않지만 내부 단편화는 발생할 수 있다.
  • 페이지 교체 알고리즘 : OPT(가장 오랫동안 사용하지 않을 페이지 교체), FIFO, LRU(최근에 가장 오랫동안 사용하지 않은 페이지 교체), LFU(사용빈도가 가장 적은 페이지 교체), NUR(최근에 사용하지 않은 페이지 교체)
  • 페이지 크기가 작을 경우, 단편화 감소, 이동시간 감소, 매핑속도/입출력 속도 저하
  • 페이지 크기가 클 경우, 단편화 증가, 이동시간 증가, 매핑속도/입출력 속도 상승
  • 세그멘테이션 기법 : 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재하는 기법, 논리주소 = 실제 물리주소 = 세그먼트 시작주소 + 상대주소
  • 스래싱 : 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상

 4-5. 병렬 컴퓨팅

  • 분산 처리 시스템 : 위치투명성, 중복투명성, 병행투명성, 장애투명성
  • 성형(Star) : 중앙집중형, Point-to-Point
  • 환형(Ring) : 단방향 또는 양방향, 단발장치의 추가/제거 및 기밀 보호가 어렵다.
  • 버스형 : 물리적 구조가 간단, 장치의 추가 제거 용이, 신뢰성 향상, 기밀보장이 어렵고 통신회선 길이에 제한이 있다.
  • 계층형(Tree) : 분산 처리 시스템에 사용, 제어가 간단, 관리 및 확장에 용이
  • 망형(Mesh) : 노드의 연결성이 높다, 통신 회선의 경로수가 가장 길다

댓글