자격증/정보처리기사

[정보처리기사 필기 정리] 프로그래밍 언어 활용 | 메타코드 강의 후기_4강

토오오끼 2024. 12. 9. 22:16
728x90
반응형

메타코드 4강

https://www.metacodes.co.kr/edu/read2.nx?M2_IDX=30659&page=1&sc_is_discount=&sc_is_new=&EP_IDX=14668&EM_IDX=14492

 

[40% 최대 할인 / 25.01.06까지] 2025 정보처리기사 필기 합격 올인원ㅣ기출문제 풀이 포함

 

www.metacodes.co.kr


 

4강 - 프로그래밍 언어 활용

◼️ 서버프로그램 구현

▪️ 개발 환경 구축

- 서버 소프트웨어 개발을 위해 필요한 도구, 소프트웨어, 라이브러리 등을 설치하고 설정하는 과정

 

▪️ 개발 환경 구축 도구

- 빌드 도구 : 소스 코드를 컴파일, 패키징, 배포하는 과정을 자동화하는 도구(Ant, Gradle)

- 구현 도구 : 개발자가 소스 코드를 작성하고 디버깅하는 도구(Visual Studio, Eclipse)

- 테스트 도구 : 작성된 코드가 요구사항에 맞게 동작하는지 확인 위해 사용(xUnit, Selenium)

- 형상 관리 도구 : 코드의 변경 이력을 추적하고 협업을 용이하게 하는 도구(Git, SVN)

 

 ▪️서버의 목적에 따른 분류

- 웹 서버 : 사용자가 웹 브라우저에서 요청한 웹 페이지를 제공

- 웹 애플리케이션 서버 : 동적인 웹페이지를 생성하고 비즈니스 로직을 처리하며 DB와 연동하여 사용자가 요청한 정보를 동적으로 제공

- DB 서버 : 데이터를 저장하고 관리하며 이를 필요로 하는 클라이언트에 데이터 제공

 

▪️ 배치 프로그램

- 한꺼번에 많은 데이터를 처리하거나 정해진 시간에 반복적인 작업을 실행해 주는 프로그램

- 대용량 : 데이터는 대용량의 데이터를 처리할 수 있어야 함.

- 자동화 : 심각한 오류 상황 외에는 사용자의 개입 없이 동작해야 함.

- 안정성 : 어떤 문제가 생겼는지, 언제 발생했는지 등을 추적할 수 있어야 함.

 

 

◼️ 프로그래밍 언어 활용

▪️ 프로그래밍 언어

- 컴퓨터 프로그램을 구동시키는 소프트웨어를 작성하기 위한 형식 언어

 

 ▪️변수

- 어떤 값을 주기억 장치에 기억하기 위해 사용하는 공간

- 변수를 선언하면 주기억 장치(메모리)에서 특정 위치와 공간을 할당받아 그 위치에 데이터를 저장할 수 있게 됨.

- 변수 설정에는 일반적인 규칙이 있음.

- 데이터 타입에 따라 할당받는 공간의 크기가 달라짐.

 

 ▪️변수 설정 규칙

- 사용 가능 문자 : 알파벳, 밑줄(_), 숫자 등

- 문자 배치 규칙 : 첫 자리에는 숫자 사용 불가, 띄어쓰기 불가(주로 _를 사용)

- 예약어 사용 금지

 

▪️ 데이터 타입(자료형)

- 정수형(integer) : 기본은 int(4 바이트)

- 부동 소수형(floating point) : 기본은 float(4 바이트)

- 문자형(character) : 단일 문자 저장

- 문자열(string) : 여러 문자 저장

 

▪️ 배열(array)

- 동일한 데이터 타입의 값들을 연속된 메모리 공간에 저장하는 데이터 구조

- 여러 개의 데이터를 하나의 변수로 관리할 수 있게 해 주는 장점이 있음.

- 배열의 각 요소는 인덱스를 사용해 접근할 수 있음 인덱스는 0부터 시작함.

- 위 예시는 4 크기의 정수형 배열 arr을 선언하고 배열의 네번째 요소에 접근하기 위해 arr[3]을 읽음.

 

 ▪️포인터(pointer)

- 변수의 메모리 주소를 저장하는 변수.

- 포인터를 통해 메모리를 직접 다룸으로써 효율적인 데이터 접근과 조작이 가능함.

- int*p : 변수명 앞에 *을 붙이면 포인터 변수를 선언하는 것. 변수값으로는 주소값이 와야 함.

- int*p = &x : 변수명 앞에 &을 붙이면 변수값이 주소값으로 변환됨.

- int*p = &arr[1] : 포인터 변수는 arr[1]의 주소를 직접 저장.

- int*p = arr : 배열명만 명시하는 경우 포인터 변수는 배열의 0번째 요수(arr[0])의 주소를 나타냄.

 

 ▪️구조체(struct)

- 여러 개의 변수들을 하나로 묶어 사용할 수 있게 해 주는 사용자 정의 자료형

- C 언어에서 주로 사용(C언어는 클래스 미지원)

- 'Struct 구조체명 변수명'의 형태로 변수를 선언하고 초기화.

- 구조체의 변수(멤버)에 접근할 때는 .을 활용

 

 ▪️클래스(class)

- 객체지향 프로그래밍의 핵심 요소로 데이터와 메서드를 하나의 단위로 묶음

 

▪️ 연산자

- 프로그래밍에서 특정 연산을 수행하는데 사용되는 기호

- 하나 이상의 피연산자를 대상으로 계산을 수행하고 그 결과를 반환

 

 ▪️산술 연산자

- 수학적 연산 수행

 

 ▪️비교 연산자

- 두 피연산자를 비교하고 그 결과를 참 또는 거짓으로 반환

 

 ▪️논리 연산자

- 주로 조건문에서 사용되며 참(1), 거짓값(0)을 결합하거나 반전시키는데 사용

 

▪️ 대입 연산자

- 변수에 값을 할당하는데 사용

 

▪️ 증감 연산자

- 변수의 값을 1씩 증가시키거나 감소시키는데 사용

- ++ : 변수의 갑을 1씩 증가, ++x는 x의 값을 1 증가 시킨 후 변경된 값 사용, x++는 현재의 x값을 사용 후 그 다음에 x 값을 1 증가 시킴.

- -- : 변수의 값을 1씩 감소

 

 ▪️비트 연산자

- 이진수 표현에서 비트 단위로 연산을 수행

- 10진수를 2로 나누는 과정을 바복하고 나머지를 기록하여 이진수로 변환할 수 있음

 

▪️ 삼항 연산자

- 세 개의 피연산자를 사용하는 유일한 연산자로 조건에 따라 다른 값을 반환하게 함

 

 ▪️연산자 우선순위

- 여러 연산자가 포함된 표현식을 계산할 때 어떤 연산자가 먼저 실행되는지를 결정하는 규칙

 

▪️ 조건문

- 주어진 조건이 참인지, 거짓인지에 따라 실행할 코드 결정

 

 ▪️반복문

- 조건이 만족되는 동안 특정 코드를 반복적으로 실행하는 구조

 

▪️ 절자적 프로그래밍 언어

- 코드가 순차적으로 실행되고 함수를 통해 문제를 해결하는 방식(C)

 

▪️ 객체지향 프로그래밍 언어

- 객체 개념을 중심으로 코드 재사용성과 유지보수성을 높이는 방식(java, C++)

 

 ▪️스크립트 언어

- 빠른 개발과 실행을 목적으로 하며 주로 자동화 및 웹 개발에 사용(python, savascript)

 

▪️ 라이브러리

- 특정 작업을 쉽게 할 수 있도록 미리 모듈화되어 제공되는 코드의 집합

- 재사용 가능한 함수, 모듈, 패키지 모음을 제공하여 개발자가 모든 코드를 작성할 필요가 없도록 함.

 

 

◼️ 응용 SW 기초기술 활용

▪️ CPU(Central Processing Unit)

- 중앙 처리 장치, 데이터를 처리하고 명령을 실행하는 역할

 

 ▪️RAM(Random Access Memory)

- 실행 중인 프로그램이 빠르게 접근할 수 있도록 데이터를 임시로 저장하는 공간

 

▪️ DISK

- 데이터를 장기적으로 저장하는 공간

 

▪️ I/O Device (Input / Output Device)

- 입출력 장치, 컴퓨터와 외부를 연결하는 모든 장치

 

▪️운영체제(Operating System)

- 컴퓨터 하드웨어와 소프트웨어 자원을 관리하고 사용자와 컴퓨터 간의 상호작용을 쉽게 해 주는 시스템 소프트웨어

- 프로세스 관리 : 자원의 상태를 파악하고 자원 분배를 위한 스케줄링 담당

- 자원 관리 : CPU, 메모리 공간, 기억장치, 입출력 장치 등의 자원을 효율적으로 관리하여 성능 최적화

 

▪️ 사용자 인터페이스 제공

- 사용자가 컴퓨터와 쉽게 상호작용 할 수 있는 인터페이스 제공

 

 ▪️커널(kernel)

- 운영체제의 핵심으로 하드웨어와 직접 상호작용하며 시스템의 모든 자원 관리

- 프로세스 생성과 종료 관리, 기억장치 자원을 할당하거나 회수하여 자원 관리

- 데이터를 저장하는 파일 시스템 관리

 

 ▪️쉘(shell)

- 사용자가 운영체제와 상호작용 할 수 있도록 하는 명령어 해석기이자 인터페이스

- 사용자가 명령어를 입력하면 이를 해석하고 실행하는 역할

 

 ▪️UNIX

- 1969년 AT&T Bell 연구소에서 개발, 멀티 태스킹과 다중 사용자 환경을 지원하도록 설계된 운영 체제

- 상용 운영 체제, 특정 하드웨어에 종속되는 경우가 많음

 

▪️ LINUX

- 1991년 리눅스 토발즈가 유닉스를 바탕으로 개발한 무료 운영 체제

- 대부분 부료 오픈 소스, 다양한 하드웨어 플랫폼에서 동작 가능

 

▪️ 메모리 자원 관리 기법

- 메모리를 효율적으로 사용하고 프로세스들이 필요한 메모리를 적절히 할당받아 실행될 수 있도록 관리

- 반입 기법(Fetching) : 프로세스를 언제 주기억장치에 적재할 것인지 결정

- 배치 기법(Placement) : 프로세스를 주기억장치의 어디에 배치할 것인지 결정

- 할당 기법(Allocation) : 프로세스를 주기억장치에 어떻게 할당시킬 것인지 결정

- 교체 기법(Replacement) : 주기억장치에 있는 프로세스 중 어떤 프로세스를 제거할 것인지 결정

 

 ▪️프로세스

- 실행 중인 프로그램의 동작 단위로 CPU, 메모리 등의 자원을 할당받아 작업을 수행

 

▪️ 프로세스 제어 블록(PCB, Process Control Block)

- 운영체제가 프로세스를 관리하기 위해 사용하는 자료 구조

- 프로세스 식별자, 프로세스 상태 등의 정보로 구성됨

- 프로세스의 상태를 관리하고 문맥 교환 시 프로세스의 상태를 저장하거나 복원하는 역할

 

▪️ 프로세스 상태

- 생성, 준비, 대기, 실행, 종료 5단계로 구성

- 프로세스가 준비 상태에서 자원이 할당되어 실행 상태로 변화하는 것을 디스패치라고 함

 

▪️ 스레드

- 프로세스 내에서 실행되는 가장 작은 실행 단위

- 한 개의 프로세스가 여러 스레드를 가질 수 있음

- 프로세스의 일부로서 한 프로세스의 자원을 공유하면서 동시에 여러 작업을 수행할 수 있음

- 생성 주체에 따라 커널 수준 스레드(운영체제에 의해 운용)와 사용자 수준 스레드(사용자가 만든 라이브러리 활용해 운용)로 구분됨

 

▪️ 지역성(Locality)

- 프로세스가 실행되는 동안 메모리 접근이 특정 부분에 집중되는 경향

- 시간 지역성(Temportal Locality) : 최근에 참조된 데이터나 명령어가 가까운 미래에 다시 참조될 가능성이 높은 경향

- 공간 지역성(Spatial Locality) : 하나의 기억장소가 참조되면 그 근처의 기억 장소가 계속 참조되는 경향

 

▪️ 선점형 스케쥴링(Preemptive Scheduling)

- 현재 실행 중인 프로세스가 강제 중단되고 다른 프로세스가 CPU를 차지하는 방식

- 우선순위가 높은 프로세스가 발생하면 실행 중인 프로세스가 CPU를 양보하고 대기 상태로 바뀜

- SRT(Shortest Remaining Time First) : 프로세스 중 남은 실행 시간이 가장 짧은 프로세스에 CPU 할당

- Round Robin : 각 프로세스가 동일한 우선순위를 가지고 일정 시간동안 번갈아 가며 CPU 할당

 

 ▪️비선점형 스케줄링(Non-Preemptive Scheduling)

- 한 번 CPU를 점유한 프로세스는 작업을 모두 끝낼 때까지 CPU를 독점하는 방식

- 다른 프로세스가 우선순위가 높아도 실행 중인 프로세스가 완료될 때까지 기다려야 함

- FCFS(FIFO) : 도착한 순서대로 프로세스를 처리

- SJF(Shortest Job First) : 실행 시간이 짧은 순서대로 CPU에 할당

- HRN(Highest Response Ratio next) : SJF 보완하기 위한 방식, 우선순위 = (대기시간 + 서비스 시간) / 서비스 시간

 

 ▪️교착 상태(Deadlock)

- 두 개 이상의 프로세스가 서로 점유한 자원을 무한정 기다리며 프로세스가 진행되지 못하는 상태

- 상호 배제(Mutual Exclusion) : 자원은 한 번에 한 프로세스만 사용 가능

- 점유와 대기(Hold and Wait) : 자원을 점유하고 있는 프로세스가 또 다른 자원을 기다리고 있음

- 환형 대기(Circular Wait) : 자원을 기다리는 프로세스 간에 순환적인 대기 관계가 형성됨

- 비선점(Non Preemption) : 다른 프로세스가 점유한 자원을 강제로 빼앗을 수 없음

 

 ▪️교착상태 해결법

- 예방 : 교착상태 발생 조건 중 하나 이상을 미리 차단

- 회피 : 시스템이 교착 상태에 빠질 위험이 있을 때 자원 할당을 회피하는 방법

- 탐지 : 주기적으로 시스템을 검사하여 교착 상태를 탐지하는 방법

- 회복 : 교착 상태가 발생하면 그 상태를 벗어나기 위해 조치를 취하는 방법

 

▪️ 네트워크

- 여러 장치들이 서로 데이터를 주고 받기 위해 연결된 시스템

- 망 구조의 기본 유형 : 버스형, 트리형, 링형, 그물형(mesh), 성형(star)

 

▪️ MAC(Media Access Control)

- 네트워크에서 여러 장치가 동일한 통신 매체를 공유할 때 데이터 충돌을 막고 효율적으로 통신하게끔 조정함

- 충돌을 탐지하는 CSMA/CD 방식가 충돌을 회피하는 CSMA/CA 방식이 있음

 

▪️ OSI(Open System Interconnection) 7계층

- 네트워크 통신을 여러 계층으로 나눠 설명하는 참조 모델

- 각 계층은 특정 기능을 담당하며 상위 계층은 하위 계층의 서비스를 사용해 통신 처리

 

 ▪️IP(Internet Protocol)

-  네트워크 상에서 데이터 패킷을 목적지로 전송하기 위한 규칙과 방법을 정의

- 에러 제어와 흐름 제어가 없음

 

▪️ IPv4

- 가장 널리 사용되는 IP version으로 32비트 주소 체계 사용

 

 ▪️서브넷 마스크(subnet mask)

- 네트워크 부분과 호스트 부분을 나누는데 사용하며 IP 주소와 같은 형식을 가짐

- 255.255.255.0 은 IP 주소의 첫 24비트가 네트워크 부분, 나머지 8비트가 호스트 부분이라는 걸 의미함

 

▪️ IPv6

- IP 주소 고갈 문제를 해결하기 위해 개발된 새로운 버전으로 128 비트 주소 체계 사용

- 멀티 캐스트 : 멀티 캐스트 그룹에 속하는 여러 호스트에게 데이터를 전송

- 유니 캐스트 : 한 호스트와의 1:1 통신

- 애니 캐스트 : 하나의 호스트에서 그룹 내의 가장 가까운 곳에 있는 수신자에게 데이터 전송

- 브로드 캐스트 : 동일 서브 네트워크 상의 모든 수신자에게 데이터 전송

 

▪️ 라우팅 프로토콜

- 네트워크에서 데이터 패킷이 목적지까지 효율적으로 전달될 수 있도록 설정하는 알고리즘

 

▪️ RIP (Routing Information Protocol)

- 최단 경로 탐색에 벨만-포드 알고리즘을 사용하는 IGP 프로토콜(Internal Gateway Routing Protocol)

- 경로 선택 매트릭은 홉(Hop) 카운트, 홉은 거쳐 가는 라우터의 수를 의미

- 최대 홉 카운트는 15개로 제한

 

 ▪️TCP(Transmission Control Protocol)

- 신뢰성 있는 전송 계층의 연결 지향 프로토콜로 데이터 전송의 순서와 정확성을 보강

- 스트림 전송 기능 제공, 순서제어, 오류제어, 흐름 제어 기능 제공

 

 ▪️UDP(User Datagram Protocol)

- 데이터 전송의 신뢰성 보장은 없지만 속도가 빠른 전송 계층의 프로토콜

- 흐름 제어나 순서 제어가 없어 전송 속도가 빠름

- 비연결형 서비스 제공

 


메타코드에서 정보처리기사 필기 강의 장학생으로 선발되어 앞으로 5주간 메타코드에서 정처기 필기 강의를 듣고 포스팅을 하게 되었다.
현재 메타코드에서는 정보처리기사 필기 환급 챌린지를 진행 중이며 합격 인증 시 100% 환급(제세공과금 22%, 교재비 3만원 제외)을 해 준다.
 
진도율을 100% 달성하고 시험 합격 후 합격 인증, 후기 작성 시 수강료를 100% 환불 (제세공과금 22%, 교재비 3만원 제외)을 해주기 때문에 수강료 부담없이 정처기 자격증을 따고 싶은 사람에게 좋은 강의이다.
https://metacodes.co.kr/edu/read2.nx?M2_IDX=31635&EP_IDX=15203&EM_IDX=15027

 

정보처리기사 필기 환급 챌린지ㅣ합격 인증 시 100% 환급 (제세공과금 22% 제외)

 

metacodes.co.kr

 

728x90
반응형