정보처리기사 4과목 프로그래밍 언어 활용 - 3장 응용 SW 기초 기술 활용 요점 정리
1. 운영체제의 개념
● 개념 : 컴퓨터 시스템 자원들을 효율적으로 관리, 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임
- 컴퓨터 사용자와 HW 간의 인터페이스로 동작하는 SW, 다른 응용 프로그램과 유용한 작업을 할 수 있도록 환경 제공
● 목적 : 처리 능력 향상(일정 시간 내에 처리), 반환 시간(완료까지 걸린 시간), 사용 가능도(즉시 사용 가능 정도),
신뢰도(문제 정확 해결)
● 기능 : 자원 관리, 스케줄링 기능 제공, 인터페이스 제공, HW 넽웤 관리 및 제어, 데이터 및 자원 공유 기능,
오류 검사 및 복구, 자원 보호 기능, 입출력 보조 기능, 가상 계산기 기능
● 주요 자원 관리 : 기억장치 관리, 프로세스 관리, 주변장치 관리, 파일 관리
● 종류 : 다중 처리 시스템(Windows, UNIX, LINUX, MacOS), MS-DOS(단일 처리 시스템)
- 서버용 : UNIX, LINUX
- 개인용 : Windows, MacOS, MS-DOS
2. Windows
● 개요 : 1990 Microsoft 사가 개발한 OS
- GUI, 선점형 멀티태스킹, OLE, PnP
● GUI(그래픽 사용자 인터페이스) : 키보드 사용 X, 마우스 모든 작업 수행, 초보자도 쉽게 사용
● 선점형 멀티태스킹 : 동시에 여러 개의 프로그램을 실행하는 멀티태스킹 하면서 OS가 각 작업의 CPU 이용 시간
제어하여 문제 발생 시 강제 종료 시키고, 모든 시스템 자원 반환하는 방식
- 하나의 응용 프로그램이 CPU 독점 방지 가능하여 시스템 다운 없이 더욱 안정적인 작업 가능
● PnP(자동 감지 기능) : HW 설치했을 때 해당 HW 사용하는 데 필요한 시스템 환경을 OS가 자동으로 구성
- 기능 활용하기 위해 SW, HW 모두 PnP를 지원해야 함
● OLE : 다른 응용 프로그램에서 작성된 문서 그림 개체를 현재 작성 중인 문서에 자유롭게
연결 및 삽입, 공유하여 편집 가능한 기능
- OLE로 연결된 이미지를 원 프로그램에서 수정 및 편집 시 그 내용이 그대로 해당 문서에 반영
● 255자의 긴 파일명
: 파일 이름 지정 시 VFAT 이용하여 최대 255자까지 지정 가능, \,/,:,?*<>|를 제외한 모든 문자 및 공백 사용 가능
- 한글은 127자까지 지정 가능
● Single - User 시스템 : 컴퓨터 한 대를 한 사람만이 독점
3. UNIX / LINUX / MacOS
● UNIX : 1960 벨 연구소, MIT, General Electric이 공동 개발
- 시분할 시스템을 위한 대화식 운영체제, 소스 공개된 개방형 시스템
- 대부분 C언어로 작성되어 이식성 호환성 높음
- 크기 작고 이해 쉬움, 다중 사용자 다중 작업 가능
- 많은 네트워킹 제공으로 통신망 관리용 OS로 적합
- 트리 구조, 전문적인 프로그램 개발 용이, 다양한 유틸리티 프로그램들이 존재
● 커널 : UNIX의 가장 핵심적인 부분
- 컴퓨터 부팅 시 주기억장치에 적재된 후 상주하면서 실행
- HW 보호, 프로그램과 HW 간의 인터페이스 역할
- 프로세스 관리, 기억장치 관리, 파일 관리, 입출력 관리, 프로세스 간 통신, 데이터 전송 및 변환, HW 캡슐화 기능 수행
● 쉘 : 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기
- 시스템과 사용자 간의 인터페이스
- 명령어가 포함된 파일 형태로 존재하며 보조 기억장치에서 교체 처리 가능
- 파이프라인 기능 지원, 입 출력 방향 변경 가능, 공용 쉘이나 사용자 정의 쉘 사용 가능
● Utility Program : 일반 사용자가 작성한 응용 프로그램 처리하는 데 사용
- 에디터, 컴파일러, 인터프리터, 디버거
● UNIX에서의 프로세스 간 통신
- 시그널 : 간단한 메시지를 이용하여 통신하는 것
- 파이프 : 단방향 통신 방식
- 소켓 : 쌍방향 통신 방식
● UNIX 개요 및 특징
- 1991년 리누스 토발즈가 UNIX 기반으로 개발한 OS
- 무료 공개, 프로그래머가 원하는 기능 추가 가능, 다양한 플랫폼에서 설치하여 사용 가능, 재배포 가능
- 대부분 특징 UNIX와 동일
● MacOS의 개요 및 특징
- 드라이버 설치 및 install, uninstall 과정이 단순
4. 기억장치 관리의 개요
- 레지스터, 캐시, 주기억장치의 프로그램은 CPU가 직접 액세스 가능
- 보조기억장치는 직접 액세스 불가 => 보기장은 주기장에 적재 후 CPU에 의해 직접 액세스 가능
● 반입(Fetch) 전략 : 보조 기억 장치에 보관 중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지 결정
- 요구 반입(Demand) : 참조 요구 시 적재하는 방법
- 예상 반입(Anticipatory Fetch) : 미리 예상하여 적재
● 배치(Placement) 전략 : 어디에 위치시킬 것인지를 결정
- 최초 적합 : 첫 번째 분할 영역에 배치
- 최적 적합 : 단편화를 가장 작게 남기는 분할 영역
- 최악 적합 : 단편화를 가장 많이 남기는 분할 영역
● 교체(Replacement) 전략 : 이미 사용하고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략
- FIFO, OPT, LRU, LFU, NUR, SCR
5. 주기억장치 할당 기법
● 연속 할당 기법 : 연속으로 할당하는 기법
- 단일 분할 할당 기법 : 한순간에는 오직 한 명의 사용자만이 주기억장치의 사용자 영역을 사용하는 기법
- 가장 단순, 초기에 많이 사용, OS 보호, 경계 레지스터 사용, 프로그램 작을 경우 사용자 영역 낭비 가능
- 오버레이 기법 : 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법
- 스와핑 기법 : 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법
└ 주 -> 보조 : Swap Out / 보조 -> 주 : Swap In // 가상기억장치의 페이징 기법으로 발전
● 다중 분할 할당 기법
- 고정 분할 할당 기법 MFT (정적 할당 기법) : 프로그램 할당 전 미리 고정된 크기로 분할
* 프로그램 전체가 주기억장치에 위치해야 함, 프로그램이 분할된 영역보다 커서 영역 안에 들어갈 수 없는 경우 발생
* 내부 및 외부 단편화 발생하여 주기억장치의 낭비가 많음
- 가변 분할 할당 기법 MVT (동적 할당 기법) : MFT의 단편화 줄이기 위한 것, 적재하면서 필요한 만큼의 크기로 분할
* 다중 프로그래밍 정도 높일 수 있음, MFT에 비해 제약 적음, 일부 단편화 해결하나 영역과 영역 사이 단편화 발생
6. 가상기억장치 구현 기법 / 페이지 교체 알고리즘
● 가상기억장치 개요 : 보조기억장치 일부를 주기억장치처럼 사용, 작은 주기억장치를 큰 용량을 가진 것처럼 사용
- 프로그램을 블록 단위로 나누어 가상기억장치에 보관 후 프로그램 실행 시 요구되는 블록만 불연속적 할당하여 처리
- 주기억장치 용량보다 큰 프로그램 실행하기 위해 사용, 주기억장치 이용률과 다중 프로그래밍 효율 높임
- 주소 변환 작업 필요, 단편화 해결, 블록 종류에 따라 페이징 세그먼트로 나눔
● 페이징 기법 : 동일한 크기로 나눔
- 일정하게 나누어진 주기억장치의 단위 : 페이지 프레임
- 내부 단편화 발생, 페이지 맵 테이블 필요, 비용 증가, 처리 속도 감소
● 세그멘테이션 기법 : 다양한 크기의 논리적인 단위로 나눔
- 각 세그먼트는 고유한 이름 및 크기 가짐, 사용자 관점을 보존하는 기법, 기억 공간 절약 목표
- 세그멘트 맵 테이블 필요, 기억장치 보호키 필요, 외부 단편화 발생
● 페이지 교체 알고리즘 : 페이지 부재가 발생했을 때 모든 페이지 프레임이 사용 중이면 어떤 페이지 프레임을 교체할 것인지 결정
- OPT : 앞으로 가장 오랫동안 사용하지 않을 페이지 교체, 페이지 부재 가장 적게 발생
- FIFO : 선입선출, 쉽고 간단
- LRU : 최근에 가장 오랫동안 사용하지 않은 페이지 교체, 즉 가장 오래전에 사용
- LFU : 사용 빈도 가장 적은 페이지
- NUR : 최근 사용 X, 참초(호출)비트, 변형비트 사용, 시간적인 오버헤드 줄일 수 있음
- SCR : 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지, FIFO 단점 보완
7. 가상기억장치 기타 관리 사항
● 페이지 크기
- 작을 경우 : 단편화 감소, 이동 시간 줆, 효율적인 워킹 셋, 기억장치 효율 높아짐, 페이지 맵 테이블 커지고, 매핑 속도 늦어짐
전체적인 입출력 시간 늘어남(부담 증가로)
- 클 경우 : 페이지 맵 테이블 크기 작아지고, 매핑 속도 빨라짐, 전체적 입출력 효율 증가, 단편화 증가, 이동 시간 늠
수행에 불필요 내용까지도 주기억장치에 적재될 수 있음
● Locality(국부성, 지역성, 구역성, 국소성) : 집중적으로 참조하는 성질
- 스래싱 방지 위한 워킹 셋 이론 기반, 가상기억장치 관리의 이론적인 근거
- 데닝 교수에 의해 구역성 개념 증명, 캐시 메모리 시스템의 이론적 근거
* 시간 구역성 : 최근 / Loop(반복, 순환), 스택, 부 프로그램(Sub Routine), Counting, 집계
* 공간 구역성 : 근처 / 배열 순회(Array Traversal), 순차적 코드 실행, 프로그래머들이 관련된 변수들을 서로 근처에 선언하여 할당되는 기억장소, 같은 영역에 있는 변수를 참조할 때 사용
● 워킹 셋(Working Set) : 일정 시간 동안 자주 참조하는 페이지들의 집합
- 데닝이 제안한 프로그램의 움직임에 대한 모델, 프로그램의 Locality 특징 이용
- 기억장치 사용 안정, 시간에 따라 변함
● 페이지 부재 빈도 방식 : 페이지 부재가 일어나는 횟수
- 페이지 부재율에 따라 주기억장치에 있는 페이지 프레임의 수를 늘리거나 줄여 페이지 부재율을 적정 수준 유지
- 페이지 부재율 상한선 넘어가면 좀 더 많은 페이지 프레임 할당, 부재율 하한선 넘어가면 페이지 프레임을 회수하는 방식
● 프리페이징 : 처음의 과도한 페이지 부재 방지 위해 한꺼번에 페이지 프레임 적재
- 사용되지 않는 페이지가 많을 수도 있음
● 스레싱 : 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
- 전체 시스템 성능 저하
- 다중 프로그래밍 정도 높아짐에 따라 CPU 이용률 어느 특정 시점까지 높아지지만, 더욱 커지면 스래싱 발생하고 CPU 이용률 급격히 감소
- 스레싱 현상 방지 방법 : 다중 프로그래밍 정도 적정 수준 유지, 페이지 부재 빈도 조절하여 사용, 워킹 셋 유지, 부족 자원 증설, 일부 프로세스 중단, CPU 성능에 대한 자료의 지속적 관리 및 분석으로 임계치 예상하여 운영
8. 프로세스의 개요
● 정의 : 실행 중인 프로그램, 작업, 태스크
- PCB 가진 프로그램, 실기억장치에 저장된 프로그램, 프로세서가 할당되는 실체로서 디스패치 가능한 단위
- 프로시저가 활동 중인 것, 비동기적 행위 일으키는 주체, 일련의 계통적 동작, 사건들의 과정, 실행 단위
● PCB(프로세스 제어 블록)
- 프로세스 현재 상태, 포인터, 식별자, 우선순위, 레지스터 정보(누산기, 인덱스 범용, 프로그램 카운터), 주기억장치 관리 정보, 입출력 상태 정보, 계정 정보
● 프로세스 상태 전이
- Dispatch : 준비 상태에 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이
- Wake Ip : 입출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이
- Spooling : 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정
● 스레드 : 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위
- 경량 프로세스라고도 함, 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당
- 동일 프로세스 환경에서 서로 독립적인 다중 수행 가능
- 사용자 수준 스레드 : 사용자가 만든 라이브러리 이용, 속도는 빠르지만, 구현 어렵
- 커널 수준 스레드 : 커널에 의해 스레드 운용, 속도 느리지만, 구현 쉬움
- 장점 : 병행성 증진, 처리율 향상, 응답 시간 단축, 기억장소 낭비 줆, 프로세스간 통신 향상, 효율적 통신
9. 스케줄링
● 개요 : 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업 의미
- 장기 스케줄링 : 어떤 프로세스가 자원을 차지
- 중기 스케줄링 : 어떤 프로세스들이 CPU 할당받을지
- 단기 스케줄링 : CPU 할당받는 시기와 특정 프로세스를 지정하는 작업
- 문맥 교환(Context Switching) : 새로운 프로세스에 CPU 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보 저장하고, 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업
● 목적 : 자원을 효율적으로 사용
- 공정성, 처리율 증가, CPU 이용률 증가, 우선순위 제도, 오버헤드 응답시간 반환시간 대기시간 최소화, 균형 있는 자원 사용, 무한 연기 회피
● 프로세스 스케줄링 기법
- 비선점 스케줄링 : 강제로 빼앗아 사용 X, 완료될 때까지 사용, 공정함, 예측 용이, 일괄 처리 방식
FCFS, SJF, 우선순위, HRN, 기한부
- 선점 스케줄링 : 우선순위가 높은 프로세스가 강제로 빼앗아 사용 가능, 대화식 시분할 시스템, 많은 오버헤드 초래,
인터럽트용 타이머 클록 필요, Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐
10. 운영체제 기본 명령어
● Window 기본 명령어 : 명령 프롬프트(cmd) 창에 명령어 입력 작업
● UNIX / LINUX 기본 명령어 : 쉘에 명령어 입력하여 작업 수행
11. 인터넷
● 개요 : TCP/IP 프로토콜 기반으로 하여 전 세계 수많은 컴퓨터와 넽웤들이 연결된 광범위한 컴퓨터 통신망
- ARPANET에서 시작, 유닉스 운영체제 기반, 시간 장소 구애받지 않고 정보 교환 가능, 고유한 IP 주소 가짐
- 브리지 라우터 게이트웨이 사용
- 다른 넽웤 or 같은 넽웤 연결하여 중추적 역할하는 네트워크로, 인터넷의 주가 되는 기반망 = 백본
● IPv4
- 8비트씩 4부분, 총 32비트 구성
- A 클래스 : 국가나 대형 통신망, B 클래스 : 중대형 통신망, C 클래스 : 소규모, D : 멀티캐스트, E : 실험적 주소
● 서브네팅 : 할당된 네트워크 주소를 다시 여러 개의 작은 네트워크로 나누어 사용하는 것
- 4바이트의 IP 주소 중 네트워크 주소와 호스트 주소를 구분하기 위한 비트를 서브넷 마스크라고 함, 이를 변경하여 넽웤 주소 여러 개로 분할하여 사용
- 서브넷 마스크는 각 클래스마다 다르게 사용
● IPv6 : IPv4 주소 부족 문제 해결
- 128비트 사용, 전송 속도 빠름, 16비트씩 8부분 128비트 구성, 16진수 표현, 콜론으로 구분
- 인증성, 기밀성, 데이터 무결성
- IPv4와 호환성 뛰어남
- 주소의 확장성, 융통성, 연동성이 뛰어남, 멀티미디어 기능 지원
- 등급별, 서비스별로 패킷을 구분할 수 있어 품질 보장 용이
- 유니캐스트 : 1:1
- 멀티캐스트 : 1:N
- 애니캐스트 : 가장 가까이 1:1
● 도메인 네임 : 숫자로 된 IP 주소를 사람이 이해하기 쉬운 문자 형태로 표현한 것
- www(호스트 컴퓨터 이름).yahoo(소속 기관 이름).co(소속 기관 종류).kr(소속 국가)
- 역할 하는 시스템 : DNS
12. OSI 참조 모델
● 다른 시스템 간의 원활한 통신을 위해 ISO에서 제안한 통신 규약
● 목적 : 상호 접속, 범위 규정, 적합성 조절 위한 공통적 기반 제공
● 데이터 단위 : 물리(비트), 데이터 링크 계층(프레임), 네트워크(패킷), 전송(세그먼트), 세션, 표현, 응용(메시지)
- 서비스 데이터 단위(SDU) : 접근점(SAP)을 통해 상 하위 계층끼리 주고받는 정보 단위
● 물리 계층 : 기계적, 전기적, 기능적, 절차적 특성 / RS-232C, X21 / 장비 : 리피터, 허브
● 데이터 링크 계층 : 두 개의 인접한 개방 시스템(통신) 간에 신뢰성 있고 효율적인 정보 전송
- 흐름 제어, 프레임의 동기화, 오류 제어, 순서 제어 / HDLC, LAPB, LLC, MAC, LAPD, PPP / 장비 : 랜카드, 브리지, 스위치
● 네트워크 계층 : 데이터의 교환 및 중계 / 네트워크 설정, 유지, 해제, 경로 설정, 트래픽 제어, 패킷 정보 전송
- X.25, IP / 장비 : 라우터
● 전송 계층 : 논리적 안정과 균일한 데이터 전송 서비스를 제공함으로써 종단 시스템 간에 투명한 데이터 전송하기 위함
- 하위 3계층과 상위 3계층 간의 인터페이스 담당, 주소 설정, 다중화, 오류 제어, 흐름 제어, TCP, UDP / 장비 : 게이트웨이
● 세션 계층 : 송수신 간의 관련성을 유지하고 대화 제어를 담당, 대화 구성 및 동기 제어, 데이터 교환 관리 / 소동기점, 대동기점
● 표현 계층 : 코드 변환, 데이터 암호화, 데이터 압축, 구문 검색, 정보 형식 변환, 문맥 관리 기능
● 응용 계층 : 사용자가 OSI에 접근할 수 있도록 서비스를 제공, 응용 프로세스 간의 정보 교환, 전자 사서함, 파일 전송, 가상 터미널 등의 서비스 재공
13. 네트워크 관련 장비
● 네트워크 인터페이스 카드(NIC) : 컴과 컴 or 컴과 넽웤 연결하는 장치, 이더넷 카드(LAN), 네트워크 어댑터
● 허브 : 가까운 거리의 컴들을 연결하는 장치, 각 회선을 통합적으로 관리, 신호 증폭 기능을 하는 리피터 역할도 포함
- 더미 허브(단순히 연결, 물리적 성형 구조), 스위칭 허브(데이터의 유무 및 흐름을 제어, 최대 대역폭 사용, 최근 사용 대부분)
● 리피터 : 신호 형태로 재생하여 다시 전송하는 역할, 물리 계층, 신호 전송 역할, 전송 거리 연장, 배선의 자유도 높임
● 브리지 : LAN과 LAN을 연결, LAN 안에서 컴퓨터 그룹을 연결하는 기능, 데이터 링크 계층에서 MAC 계층에서 사용
- 트래픽 병목 현상 줄임, 보안성 높임, 전송 가능 회선 수 = N(N-1)/2개
● 스위치 : LAN과 LAN 연결하여 더 큰 LAN, HW 기반으로 전송 속도 빠름, 데이터 링크 계층
● 라우터 : 최적 경로 설정, 네트워크 계층, 프로토콜 변환 기능 수행
● 게이트웨이 : 전 계층, 프로토콜 구조가 다른 네트워크의 연결, 세션 계층, 표현 계층, 응용 계층 간을 연결하여 데이터 형식 변환, 주소 변환, 프로토콜 변환 수행, 출입구 역할
● 네트워크 설치 시 고려 사항 : 네트워크 장비 최대한 활용, 이후 시스템 확장이나 증설 등을 고려
- HW, SW 최신 버전 선정, 트래픽 분산 설계, 넽웤 관리 유지 보수 용이하게 설계, 여유 포트 고려 설계, 미래 지향적 넽웤 구축
14. 프로토콜의 개념
● 정의 : 서로 다른 기기들 간의 데이터 교환을 원활히 수행할 수 있게 표준화 시켜 놓은 통신 규약
● 기본 요소 : 구문(Syntax), 의미(Semantics), 시간(Timing)
● 기능 : 단편화와 재결합, 캡슐화, 흐름 제어, 오류 제어, 동기화, 순서 제어, 주소 지정, 다중화, 경로 제어, 전송 서비스
15. TCP/IP
● 개요 : 서로 다른 기종의 컴퓨터들이 데이터를 주고받을 수 있도록 하는 표준 프로토콜
- UNIX의 기본 프로토콜로 사용되었고, 현재 인터넷 범용 프로토콜로 사용
● TCP/IP 구조
● 응용 계층의 주요 프로토콜 : FTP, SMTP, TELNET, SNMP, DNS, HTTP
● 전송 계층의 주요 프로토콜 : TCP, UDP, RTCP
● 인터넷 계층의 주요 프로토콜 : IP, ICMP, IGMP, ARP, RARP
● 네트워크 액세스 계층의 주요 프로토콜 : Ethernet, IEEE802, HDLC, X.25, RS-232C