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) : 노드의 연결성이 높다, 통신 회선의 경로수가 가장 길다
'기타 > 정보처리기사' 카테고리의 다른 글
정보처리기사 필기 키워드 정리 - 5과목 : 정보 시스템 구축 관리 (0) | 2022.04.21 |
---|---|
정보처리기사 필기 키워드 정리 - 3과목 : 데이터베이스 구축 (0) | 2022.04.20 |
정보처리기사 필기 키워드 정리 - 2과목 : 소프트웨어 개발 (0) | 2022.04.20 |
정보처리기사 필기 키워드 정리 - 1과목 : 소프트웨어 설계 (0) | 2022.04.19 |
댓글