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 : 비연결형, 스트림 전송, 오버헤드 적음, 실시간 전송 유리
'자격증 > 정보처리기사 - 필기' 카테고리의 다른 글
정보시스템 구축 관리 - IT 프로젝트 정보시스템 구축 관리 (0) | 2020.02.28 |
---|---|
정보시스템 구축 관리 - SW 개발 방법론 활용 (0) | 2020.02.27 |
프로그래밍 언어 활용 - 프로그래밍 언어 활용 (0) | 2020.02.25 |
프로그래밍 언어 활용 - 서버 프로그램 구현 (0) | 2020.02.21 |
데이터베이스 구축 - 데이터 전환 (0) | 2020.02.21 |