본문 바로가기

자격증/정보처리기사 - 필기

프로그래밍 언어 활용 - 응용 SW 기초 기술 활용

728x90

OS : 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경 제공

● 하드웨어와 유틸리티 사이 위치

● 목적

-> 처리 능력( Throughput ) : 일정 시간 내 시스템이 처리하는 일의 양

-> 반환 시간( Turn Around Time ) : 작업 의뢰부터 처리 완료까지 걸린 시간

-> 사용 가능도( Availability ) : 즉시 사용 가능한 정도

-> 신뢰도( Reliability ) : 주어진 문제를 정확하게 해결하는 정도

< 기능 >

● 프로세서, 기억장치, 입/출력 장치, 자원 관리  ● 스케줄링

● 사용자와 시스템 간의 인터페이스 제공  ● 각종 하드웨어와 네트워크 관리/제어

● 데이터 관리  ● 시스템 오류 검사/복구  ● 자원 보호

 

Windows

< 특징 >

● 그래픽 사용자 인터페이스( GUI )

● 선점형 멀티 태스킹 : 멀티태스킹을 하면서 OS가 각 작업의 CPU 이용 시간을 제어

-> 응용 프로그램 실행 중 문제 발생 시 해당 프로그램을 강제 종료시키고 모든 시스템 자원 반환

-> 하나의 응용 프로그램이 CPU 독점 하는 것 방지

-> 멀티 태스킹( = 멀티 프로그래밍 ) : 여러 개의 프로그램을 동시에 열어 두고 다양한 작업을 동시에 진행

● PnP( 자동 감지 기능 ) : 하드웨어 설치 시 하드웨어 사용에 필요한 시스템 환경을 자동으로 구성

● OLE : 다른 응용 프로그램에서 작성된 문자나 그림을 현재 작성 중인 문서에 자유롭게 연결/삽입 가능

 

UNIX

● 시분할 시스템  ● 개방형 시스템  ● 대부분 C언어로 작성 -> 이식성/호환성 높음

● 크기 작음  ● 다중 사용자/작업 지원  ● 트리 구조 파일 시스템

< 구성 >

- 커널

● UNIX의 가장 핵심적 부분  ● 컴퓨터 부팅 시 주기억장치에 적재 후 상주하며 실행

● 하드웨어 보호, 프로그램과 하드웨어 간 인터페이스 역할

● 프로세스 관리, 기억장치 관리, 파일 관리, I/O 관리

- 쉘

● 명령어를 인식하여 프로그램 호출, 명령 수행( 명령어 해석기 )

● 시스템과 사용자 간 인터페이스 담당  ● 보조 기억장치에서 교체 처리 가능

● 파이프라인 기능

-> 파이프 : 한 프로세스의 출력이 다른 프로세스의 입력으로 사용

-> 시그널 : 메시지 이용 통신

-> 소켓 : 프로세스 사이 대화를 가능

-> 시스템 호출 : 상위 수준의 SW가 커널의 기능을 이용할 수 있도록 지원

 

● 포그라운드 : 다중 작업 시 우선순위가 높은 작업

● 백그라운드 : 다중 작업 시 우선순위가 낮은 작업

 

기억장치

< 특징 >

< 전략 >

- 반입 전략( Fetch ) : 프로그램/데이터를 주기억장치로 적재할 시기 결정

● 요구 반입( Demand Fetch ) : 실행중인 프로그램이 특정 프로그램/데이터의 참조를 요구할 때 적재

● 예상 반입( Anticipatory Fetch ) : 실행중인 프로그램에 의해 참조될 프로그램/데이터를 미리 예상하여 적재

- 배치 전략( Placement ) : 프로그램/데이터를 주기억장치의 어디에 위치시킬지 결정

● 최초 적합 : 데이터가 들어갈 수 있는 크기의 빈 영역 중 첫 번째 분할 영역에 배치

● 최적 적합 : 데이터가 들어갈 수 있는 크기의 빈 영역 중 단편화를 가장 작게 남기는 영역에 배치

● 최악 적합 : 데이터가 들어갈 수 있는 크기의 빈 영역 중 단편화를 가장 크게 남기는 영역에 배치

-> 단편화 : 분할된 영역이 프로그램이나 데이터보다 작거나 커서 생기는 빈 기억 공간

- 교체 전략( Replacement ) : 주기억장치의 모든 영역이 사용중인 상태에서 새 데이터를 배치하려 할 때 어느 영역을 교체하여 사용할 것인지 결정

ex. FIFO, OPT, LRU, LFU, NUR, SCR

 

할당 기법

1. 연속 할당( 로딩 ) 기법

- 단일 분할 할당 기법

● 경계 레지스터 사용 ● 프로그램 크기 작을 시 사용자 영역 낭비

< 종류 >

1. 오버레이 기법 : 주기억장치보다 큰 사용자 프로그램 실행

● 하나의 프로그램을 여러 개의 조각으로 분할 후 필요한 조각을 차례로 주기억장치에 적재

● 주기억장치에 공간 부족 시 불필요한 조각이 위치한 장소에 새로운 프로그램 조각 중첩하여 적재

● 프로그래머가 시스템 구조나 프로그램 구조를 알아야 함

2. 스와핑 기법 : 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체

● Swap Out : 주기억장치에 있는 프로그램이 보조기억장치로 이동

● Swap In : 보조기억장치에 있는 프로그램이 주기억장치로 이동

● 가상기억장치의 페이징 기법으로 발전

- 다중 분할 할당 기법

< 종류 >

1. 고정 분할 할당 기법( 정적 할당 )

● OS가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비중인 프로그램을 할당

● 프로그램 실행 시 프로그램 전체가 주기억장치에 위치해야 함  ● 내/외부 단편화 발생

2. 가변 분할 할당 기법( 동적 할당 )

● 다중 프로그래밍 정도 높임  ● 영역 사이 단편화 발생

2. 분산 할당 기법

- 페이징 기법 : 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 적재시켜 실행

● 페이지 : 프로그램을 일정한 크기로 나눈 것

● 페이지 프레임 : 주기억장치를 페이지 크기로 일정하게 나눈 것

● 내부 단편화 발생 : 페이지 크기가 4KB이고, 사용할 프로그램이 17KB이면 마지막 페이지는 1KB가 된다. 그러면 3KB의 공간이 남게 된다.

● 맵 테이블 : 주소 변환을 위해 페이지의 위치 정보를 가지고 있는 페이지

- 세그먼테이션 기법

● 세그먼트 : 프로그램을 배열이나 함수 등과 같은 논리적 크기로 나눈 단위

● 세그먼트 맵 테이블 : 세그먼트가 존재하는 위치 정보를 가지고 있음

● 외부 단편화 발생 : 여유 공간들이 나뉘어져 있어 사용할 수 없는 현상

 

페이지 교체 알고리즘

● OPT : 가장 오랫동안 사용하지 않을 페이지 교체

● FIFO : 먼저 들어온 것 먼저 교체

● LRU : 최근 가장 오랫동안 사용하지 않은 것 교체

● LFU : 사용 빈도가 가장 적은 페이지 교체

● SCR : FIFO 단점 보안, 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지 교체 방지

● LUR : 참조 비트와 변형 비트 필요

 

페이지 크기

● 페이지 크기 작을 경우 : 단편화 감소, 맵 테이블 크기 증가, 매핑 속도 증가, 한 페이지를 주기억장치로 이동하는 시간 감소

● 페이지 크기 클 경우 : < 반대 >

 

Locality( 구역성 )

● 워킹 셋 이론 기반

-> 워킹 셋 : 주기억장치에 유지되어야 하는 페이지들의 집합( 중복 제거 )

● 데닝 교수에 의해 구역성의 개념 증명

● 시간 구역성 : 하나의 페이지를 일정 시간 동안 집중적으로 액세스

-> 루프, 스택, 부 프로그램, 카운팅

● 공간 구역성 : 일정 위치의 페이지를 집중적으로 액세스

-> 배열 순회, 순차적 코드 실행

 

페이지 부재 : 프로세스 실행 시 참조할 페이지가 주기억장치에 없는 현상

 

스래싱 : 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많은 현상

-> 다중 프로그래밍 정도가 높아지면 적정 시점까지는 CPU 이용률이 높아지지만, 적정 시점을 넘으면 스레싱이 나타나고 CPU 이용률은 감소

< 해결 방법 >

● 다중 프로그래밍 정도를 적정 수준 유지 ● 워킹 셋 유지

● 부족한 자원 증설, 일부 프로세스 중단 ● 임계치를 예상하여 운영

 

프로세스

● PCB를 가진 프로그램  ● 디스패치가 가능한 단위  ● 프로시저가 활동중인 것

● 비동기적 행위를 일으키는 주체  ● OS가 관리하는 실행 단위  ● 실행중인 프로그램

< 상태 전이 >

< 관련 용어 >

● Dispatch : 준비에서 실행으로 전이

● Wake Up : 대기상태에서 준비로 전이

● Spooling : 입/출력할 데이터를 한꺼번에 입/출력하기 위해 디스크에 저장하는 과정

 

PCB

● OS가 프로세스에 대한 중요한 정보 저장한 곳

< 저장 정보 >

● 프로세스 현재 상태 ● 포인터 ● 프로세스 고유 식별자 ● 프로세스의 우선순위

● CPU 레지스터 정보 ● I/O 상태 정보 ● 계정 정보

 

스레드 : 시스템의 여러 자원을 할당받아 실행하는 프로그램 단위

● 다중 스레드, 단일 스레드

● 사용자 수준 스레드 : 사용자가 만든 라이브러리를 사용하여 스레드 운용, 속도 빠름, 구현 어려움

● 커널 수준 스레드 : OS의 커널에 의해 스레드 운용, 구현 쉬움, 속도 느림

● 경량 프로세스라고 함

 

스케줄링 : 시스템의 자원을 프로세스에게 할당하는 작업

-> 장기 스케줄링 : 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업

-> 중기 스케줄링 : 어떤 프로세스가 CPU를 할당받을 것인지 결정

-> 단기 스케줄링 : CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업

< 기법 >

- 비선점 스케줄링

● 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없음

● 중요한 작업이 중요하지 않은 작업을 기다리는 경우 발생

● FCFS, SJF, 우선순위, HRN, 기한부 알고리즘

- 선점 스케줄링

● 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용 가능

● 대화식 시분할 시스템에 사용  ● 많은 오버헤드 초래  ● 타이머 클록 필요

● RR, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 알고리즘

 

문맥교환 : 새로운 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태를 저장하고, 새로운 프로세스의 상태를 설정한 후 CPU를 할당하여 실행되도록 함

 

환경 변수 : 시스템 SW의 동작에 영향을 미치는 동적인 값들 모임

● 변수명과 값으로 구성  ● 시스템의 기본 정보 저장( 부모 프로세스에게 상속 받아 사용 )

● 시스템 환경 변수와 사용자 환경 변수로 구분  ● 자식 프로세스에 상속

● Windows에서 환경 변수 사용 시 : 변수명 앞뒤에 % 입력

-> set : 모든 환경 변수와 값 표시

● UNIX/LINUX에서 환경 변수 사용 시 : 변수명 앞에 $ 입력

-> set, env, printenv : 모든 환경 변수와 값 표시

 

OS 기본 명령어

< Windows >

DIR : 파일 목록 표시  TYPE : 파일 내용 표시  MD : 디렉터리 생서

CLS : 화면 내용 지움  ATTRIB : 파일 속성 변경  CHKDSK : 디스크 상태 점검

< UNIX/LINUX >

● cat : 파일 내용 표시  chmod : 파일 사용 허가 지정  chown : 소유자 변경

● exec : 새 프로세스 수행  ● fork : 새 프로세스 생성  ● mount : 새 파일 시스템을 서브 디렉터리에 연결

 

IP 주소

● A, B, C, D, E 클래스로 구성  ● D클래스는 멀티캐스트 용  ● E클래스는 실험적 주소, 공용 X

 

서브넷 마스크 : 네트워크 ID와 호스트 ID 구별

 

IPv6

● 128Bit 긴 주소 사용  ● 자료 전송 빠름  ● 보안 문제 해결

● 유니캐스트, 멀티캐스트, 애니캐스트 지원  ● 프로토콜 확장 허용

● 각 부분 16진수로 표현, 콜론으로 구분

 

DNS : 도메인 네임을 컴퓨터가 이해할 수 있는 IP 주소로 변환

-> 도메인 네임 : 숫자로 된 IP 주소를 사람이 이해하기 쉬운 문자 형태로 표현

 

OSI 7계층 : 물리 - 데이터 링크 - 네트워크 - 전송 - 세션 - 표현 - 응용

-> 물리 : 절차적 특성에 대한 규칙 정의

-> 데이터 링크 : 흐름/오류/순서 제어, 프레임 동기화

-> 네트워크 : 네트워크 연결 관리, 데이터 교환/중계

-> 전송 : 종단 시스템( End-to-End ), 다중화, 오류/흐름 제어

-> 세션 : 대화 제어, 동기점

-> 표현 : 암호화, 데이터 압축, 정보 형식 변환

-> 응용 : 정보 교환, 전자 사서함, 파일 전송, 사용자에게 서비스 제공

 

네트워크 관련 장비

● 허브 : 가까운 거리 컴퓨터 연결

● 리피터 : 신호가 형태와 다르게 왜곡되거나 약해질 경우 원래의 신호 형태로 재생하여 다시 전송, 물리 계층

● 브리지 : 데이터 링크 계층, LAN 사이 연결, LAN 안에서 세그먼트 연결

● 스위치 : 큰 LAN 만듬, 전송 속도 빠름

● 라우터 : 네트워크 계층, 최적 경로 선택 기능

● 게이트웨이 : 전 계층( 1 - 7 )의 프로토콜 구조가 다른 네트워크의 연결 수행

 

프로토콜 : 서로 다른 기기들 간 데이터 교환 시 정해놓은 통신 규약

기본 요소 : 구문, 의미, 시간

< 기능 >

● 단편화, 재결합  ● 흐름 제어  ● 오류 제어  ● 동기화  ● 다중화  ● 순서 제어

● 캡슐화( 주소, 오류 검출 코드, 프로토콜 제어 정보 )

 

TCP/IP

-> TCP

● 전송 계층  ● 신뢰성 있는 연결형 서비스  ● 스트림 전송  ● 순서/오류/흐름 제어

-> IP

● 네트워크 계층  ● 비연결형 서비스  ● 데이터그램 기반  ● 헤더길이 : 20 - 60Byte

< 구조 >

OSI TCP/IP 계층 기능
응용, 표현, 세션 계층 응용 계층

응용 프로그램 간 데이터 송/수신 제공

( TELNET, FTP, SMTP, SNMP, DNS, HTTP )

전송 계층 전송 계층

호스트들 간 신뢰성 있는 통신 제공

( TCP, UDP )

네트워크 계층 인터넷 계층

데이터 전송을위한 주소 지정, 경로 설정 제공

( IP, ICMP, IGMP, ARP, RARP )

데이터 링크, 물리 계층 네트워크 액세스 계층

실제 데이터 송/수신

( 이더넷, IEEE 802 )

ARP : 논리주소 -> 물리주소  ● RARP : 물리주소 -> 논리주소

● RTCP : 세션에 참여한 참가자들에게 제어 정보 전송, 하위 프로토콜은 다중화 제공( 데이터/제어 패킷 ) , 32Bit 경계

● TCP : 스트림 위주 데이터 전송, 양방향 연결

● UDP : 비연결형, 스트림 전송, 오버헤드 적음, 실시간 전송 유리