SW
[2020 정보처리기사 필기] 응용 SW 기초 기술 활용 (1) 본문
141. 운영체제의 개념 ★★★
1. 운영체제(OS)의 정의
- 운영체제는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다. 스스로는 어떤 유용한 기능도 수행하지 않는다.
- 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다.
- 유틸리티와 하드웨어 사이에 존재한다.
2. 운영체제의 목적
- 처리 능력 향상, 사용 가능도 향상, 신뢰도 향상, 반환 시간 단축 등
- 처리 능력 : 일정 시간 내에 시스템이 처리하는 일의 양
- 반환 시간 : 시스템 작업을 의뢰한 시간부터 처리가 완료될 때까지 걸린 시간
- 사용 가능도 : 시스템을 사용할 필요가 있을 떄 즉시 사용 가능한 정도
- 신뢰도 : 시스템이 주어진 문제를 정확하게 해결하는 정도
3. 운영체제의 기능
- 프로세서(처리기, Processor), 기억장치(주기억장치, 보조기억장치), 입출력장치, 파일 및 정보 등의 자원을 관리한다.
- 자원을 효율적으로 관리하기 위해 자원의 스케줄링 기능을 제공한다.
- 사용자와 시스템 간의 편리한 인터페이스를 제공한다.
- 시스템의 각종 하드웨어와 네트워크를 관리, 제어한다.
- 데이터를 관리하고, 데이터 및 자원의 공유 기능을 제공한다.
- 시스템의 오류를 검사하고 복구한다.
- 자원 보호 기능을 제공한다.
- 입출력에 대한 보조 기능을 제공한다.
- 가상 계산기 기능을 제공한다.
4. 운영체제의 주요 자원 관리
- 프로세스 관리 : 프로세스 스케줄링 및 동기화, 프로세스 생성과 제거, 시작과 정지, 메시지 전달 등의 기능 담당
- 기억장치 관리 : 프로세스에게 메모리 할당 및 회수 관리 담당
- 주변장치 관리 : 입출력장치 스케줄링 및 전반적인 관리 담당
- 파일 관리 : 파일의 생성과 삭제, 변경, 유지 등의 관리 담당
5. 운영체제의 종류
- Window, UNIX, LINUX(UNIX와 호환 가능한 커널), MacOS(Apple이 만든 UNIX기반 운영체제), MS-DOS(Window이전에 사용)
- 단일 작업 처리 시스템에는 MS-DOS, 다중 작업 처리 시스템에는 Windows, UNIX, LINUX, MacOS 등이 사용된다.
- Windows, MacOS, MS-DOS는 개인용, UNIX, LINUX는 서버용 운영체제이다.
핵심
- 운영체제는 소프트웨어이다.
- 운영체제는 스스로 어떤 유용한 기능도 수행하지 않고 다른 응용프로그램이 유용한 작업을 할 수 있도록 환경을 마련해 준다.
- 운영체제 성능 판단 요소 : 처리능력, 신뢰도, 사용 가능도, 반환 시간
142. Windows ★
1. Windows의 개요
- Windows는 마이크로사가 개발한 운영체제
- GUI, 선점형 멀티태스킹, OLE, PnP
2. 그래픽 사용자 인터페이스(GUI, Graphic User Interface)
- 키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여 모든 작업을 수행하는 방식
3. 선점형 멀티태스킹(Preemptive Multi-Tasking)
- 동시에 여러 개의 프로그램을 실행하는 멀티태스킹을 하면서 운영체제가 각 작업의 CPU 이용 시간을 제어하여 응용 프로그램 실행중 문제가 발생하면 해당 프로그램을 강제 종료시키고 모든 시스템 자원을 반환하는 방식을 말한다.
- 하나의 응용 프로그램이 CPU를 독점하는 것을 방지할 수 있어 시스템 다운 현상 없이 더욱 안정적인 작업을 할 수 있다.
- 멀티태스킹 = 멀티 프로그래밍
4. PnP(Plug and Play, 자동 감지 기능)
- PnP는 컴퓨터 시스템에 프린터나 사운드 카드 등의 하드웨어를 설치했을 때, 해당 하드웨어를 사용하는 데 필요한 시스템 환경을 운영체제가 자동으로 구성해 주는 기능이다.
- 운영체제가 하드웨어의 규격을 자동으로 인식하여 동작하게 해주므로 PC 주변장치를 연결할 때 사용자가 직접 환경을 설정하지 않아도 된다.
- PnP 기능을 활용하기 위해서는 하드웨어와 소프트웨어 모두 PnP를 지원하여야 한다.
5. OLE(Object Linking and Embedding)
- OLE는 다른 여러 응용 프로그램에서 작성된 문서나 그림 등의 개체(Object)를 현재 작성 중인 문서에 자유롭게 연결(Linking)하거나 삽입(Embedding)하여 편집할 수 있게 하는 기능이다.
- OLE로 연결된 이미지를 원본 프로그램에서 수정하거나 편집하면 그 내용이 그대로 해당 문서에 반영된다.
6. 255자의 긴 파일명
- Windows에서는 파일 이름을 저장할 때 VFAT(Virtual File Allocation Table)을 이용하여 최대 255자까지 지정할 수 있다.
- 파일 이름으로는 몇 가지 특수문자를 제외한 모든 문자 및 공백을 사용할 수 있으며, 한글의 경우 127자까지 지정할 수 있다.
7. Single-User 시스템
- 컴퓨터 한 대를 한 사람만이 독점해서 사용한다.
핵심
- Plug and Play : 하드웨어를 시스템에 부착하면 자동 인식하여 동작하게 해줌
- OLE : 응용 프로그램 간의 자료 공유
- 멀티 태스킹 = 멀티 프로그래밍
143. UNIX / LINUX / MacOS ★★★
1. UNIX의 개요 및 특징
- 벨 연구소, MIT, General Electric이 공동 개발한 운영체제
- 시분할 시스템을 위해 설계된 대화식 운영체제로, 소스가 공개된 개방형 시스템이다.
- 대부분 C로 작성되어 있어 이식성이 높으며 장치, 프로세스 간의 호환성이 높다.
- 크기가 작고 이해하기 쉽다.
- 다중 사용자(Multi-User), 다중 작업(Multi-Tasking)을 지원한다.
- 많은 네트워킹을 제공하므로 통신망(Network) 관리용 운영체제로 적합하다.
- 트리 구조의 파일 시스템을 갖는다.
- 전문적인 프로그램 개발에 용이하다.
- 다양한 유틸리티 프로그램들이 존재한다.
- 각 프로세스는 시스템 호출(프로세스가 커널에 접근하기 위한 인터페이스를 제공하는 명령어)을 통해 커널의 기능을 사용하며, 프로세스 간 통신은 시그널(간단한 메시지), 파이프(단방향 통신), 소켓(쌍방향 통신) 등을 사용한다.
2. UNIX 시스템의 구성
- 커널(Kernel)
- UNIX의 가장 핵심적인 부분
- 컴퓨터가 부팅될 때 주기억장치에 적재된 후 상주하면서 실행된다.
- 하드웨어를 보호하고, 프로그램과 하드웨어 간의 인터페이스 역할을 담당한다.
- 프로세스(CPU 스케줄링) 관리, 기억장치 관리, 파일 관리, 입출력관리, 프로세스간 통신, 데이터 전송 및 변환 등 여러 가지 기능을 수행
- 쉘(Shell)
- 사용자의 명령어를 인식하여 프로그램을 호출하고 명령을 수행하는 명령어 해석기이다.
- 시스템과 사용자 간의 인터페이스 역할을 담당한다.
- DOS의 COMMAND.COM과 같은 기능을 수행한다.
- 주기억장치에 상주하지 않고, 명령어가 포함된 파일 형태로 존재하며 보조 기억장치에서 교체 처리가 가능하다.
- 파이프라인(둘 이상의 명령어를 함께 묶어 처리한 결과를 다른 명령의 입력으로 전환하는 기능) 기능을 지원하고 입출력 재지정을 통해
출력과 입력의 방향을 변경할 수 있다.
- 공용 Shell이나 사용자 자신이 만든 Shell을 사용할 수 있다.
- Utility Program
- 일반 사용자가 작성한 응용 프로그램을 처리하는데 사용한다.
- DOS에서의 외부 명령어에 해당한다.
- 유틸리티 프로그램에서는 에디터, 컴파일러, 인터프리터, 디버거 등이 있다.
3. LINUX의 개요 및 특징
- 리누스 토발즈가 UNIX를 기반으로 개발한 운영체제
- 프로그램 소스 코드가 무료로 공개되어 있기 때문에 프로그래머가 원하는 기능을 추가할 수 있고, 다양한 플랫폼에 설치하여 사용이 가능하며, 재배포가 가능하다.
- UNIX와 완벽하게 호환된다.
- 대부분의 특징이 UNIX와 동일하다.
4. MacOS의 개요 및 특징
- Apple이 UNIX를 기반으로 개발한 운영체제이다.
- 아이맥(iMac)과 맥북(MacBook) 등 애플 사에서 생산하는 제품에서만 사용이 가능하다.
- 드라이버 설치 및 intall과 uninstall의 과정이 단순하다.
핵심
- UNIX 특징 : 트리 구조의 파일 시스템, Multi-User, Multi-Tasking, 대화식 운영체제
- 백그라운드로 수행시키면 수행중인 명령문이 끝나기 전에 다른 명령문을 수행시킬 수 있다.
- 커널 : UNIX 시스템의 중심부, 프로세스 관리, 기억장치 관리 등을 담당, 부팅시 주기억장치에 적재되어 상주하면서 실행됨
- 파이프 : 프로세스간 통신으로 한 프로세스의 출력이 다른 프로세스의 입력으로 사용된다.
- 쉘 : 시스템과 사용자 간의 인터페이스를 담당, 명령어 해석기
- 시스템 호출 : 사용자와 운영체제 서비스를 연결해 주는 인터페이스로, 상위 숮ㄴ의 소프트웨어가 커널의 기능을 이용할 수 있도록 지원해 주는 것
144. 기억장치 관리의 개요 ★★★
1. 기억장치 계층 구조의 특성
- 기억장치는 레지스터, 캐시 기억장치, 주기억장치, 보조기억장치를 계층 구조로 분류할 수 있다.
- 계층 구조에서 상위의 기억장치일수록 접근 속도와 접근 시간이 빠르지만, 기억 용량이 적고 고가이다.
- 주기억장치는 각기 자신의 주소를 갖는 워드 또는 바이트들로 구성되어 있으며, 주소를 이용하여 액세스할 수 있다.
- 레지스터, 캐시 기억장치, 주기억장치의 프로그램과 데이터는 CPU가 직접 액세스 할 수 있으나 보조기억장치에 있는 데이터는 직접 액세스할 수 없다.
- 보조기억장치에 있는 데이터는 주기억장치에 적재된 후 CPU에 의해 액세스 될 수 있다.
2. 기억장치의 관리 전략의 개요
- 보조기억장치의 프로그램이나 데이터를 주기억장치에 적재 시키는 시기, 적재 위치 등을 지정하여 한정된 주기억장치의 공간을 효율적으로 사용하기 위한 것으로 반입(Fetch) 전략, 배치(Placement) 전략, 교체(Replacement) 전략이 있다.
3 .반입(Fetch) 전략
- 반입 전략은 보조기억장치에 보관중인 프로그램이나 데이터를 언제 주기억장치로 적재할 것인지를 결정하는 전략이다.
- 요구 반입(Demand Fetch) : 실행중인 프로그램이 특정 프로그램이나 데이터 등의 참조를 요구할 때 적재하는 방법이다.
- 예상 반입(Anticipatory Fetch) : 실행중인 프로그램에 의해 참조될 프로그램이나 데이터를 미리 예상하여 적재하는 방법이다.
4. 배치(Placement) 전략
- 배치 전략은 새로 반입되는 프로그램이나 데이터를 주기억장치의 어디에 위치시킬 것인지를 결정하는 전략이다.
- 최초 적합(First Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 첫 번째 분할 영역에 배치시키는 방법
- 최적 적합(Best Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화(빈 기억 공간)를 가장 작게 남기는 분할 영역에 배치시키는 방법
- 최악 적합(Worst Fit) : 프로그램이나 데이터가 들어갈 수 있는 크기의 빈 영역 중에서 단편화를 가장 많이 남기는 분할 영역에 배치시키는 방법
5. 교체(Replacement) 전략
- 교체 전략은 주기억장치의 모든 영역이 이미 사용중인 상태에서 새로운 프로그램이나 데이터를 주기억장치에 배치하려고 할 때, 이미 사용되고 있는 영역 중에서 어느 영역을 교체하여 사용할 것인지를 결정하는 전략이다.
- 교체 전략에는 FIFO, OPT, LRU, LFU, NUR, SCR 등이 있다.
핵심
- 주기억장치는 직접 접근 가능, 보조기억장치는 직접 접근 불가능
- 기억장치 관리 전략 : 반입(Fetch), 배치(Placement), 교체(Replacement)
- 반입(Fetch) 전략 : 요구 반입, 예상 반입
- 배치(Placement) 전략 : 최초 적합(가용 공간 중 가장 첫 번 째), 최적 적합(단편화 가장 작게), 최악 적합(단편화 가장 크게)
- 교체(Replacement) 전략 : FIFO, OPT, LRU, LFU, NUR, SCR
145. 주기억장치 할당 기법 ★
1. 주기억장치 할당의 개념
- 주기억장치 할당 기법은 프로그램이나 데이터를 실행시키기 위해 주기억장치에 어떻게 할당할 것인지에 대한 내용이며 연속 할당 기법과 분산 할당 기법으로 분류할 수 있다.
- 연속 할당 기법 : 프로그램을 주기억장치에 연속적으로 할당하는 기법으로, 단일 분할 할당 기법(오버레이, 스와핑)과 다중 분할 할당 기법(고정 분할 할당 기법, 동적 분할 할당 기법)이 있다.
- 분산 할당 기법 : 프로그램을 특정 단위의 조각으로 나누어 주기억장치 내에 분산하여 할당하는 기법으로 페이징 기법과 세그먼테이션 기법으로 나눌 수 있다.
2. 단일 분할 할당 기법
- 단일 분할 할당 기법은 주기억장치를 운영체제 영역과 사용자 영역으로 나누어 한 순간에는 오직 한 사용자만의 주기억장치의 사용자 영역을 사용하는 기법이다.
- 가장 단순한 기법으로 초기의 운영체제에 많이 사용하던 기법이다.
- 운영체제를 보호하고, 프로그램이 사용자 영역만을 사용하기 위해 운영체제 영역과 사용자 영역을 구분하는 경계 레지스터(Boundary Register)가 사용된다.
- 프로그램의 크기가 작을 경우 사용자 영역이 낭비될 수 있다.
- 초기에는 주기억장치보다 큰 사용자 프로그램은 실행할 수 없었으나 오버레이 기법을 사용하면서 이 문제가 해결되었다.
- 오버레이(Overlay) 기법
- 오버레이 기법은 주기억장치보다 큰 사용자 프로그램을 실행하기 위한 기법이다.
- 보조기억장치에 저장된 하나의 프로그램을 여러 개의 조각으로 분할한 후 필요한 조각을 차례로 주기억장치에 적재하여 프로그램을 실행한다.
- 프로그램이 실행되면서 주기억장치의 공간이 부족하면 주기억장치에 적재된 프로그램의 조각 중 불필요한 조각이 위치한 장소
에 새로운 프로램의 조각을 중첩(Overlay)하여 적재한다.
- 프로그램을 여러 개의조각으로 분할하는 작업은 프로그래머가 수행해야 하므로 프로그래머는 시스템 구조나 프로그램 구조를 알아야 한다.
- 스와핑(Swiping) 기법
- 스와핑 기법은 하나의 프로그램 전체를 주기억장치에 할당하여 사용하다 필요에 따라 다른 프로그램과 교체하는 기법이다.
- 주기억장치에 있는 프로그램이 보조기억장치로 이동되는 것을 Swipe Out, 보조기억장치에 있는 프로그램이 주기억장치로 이동되는 것을 Swipe In 이라고 한다.
- 하나의 사용자 프로그램이 완료될 때까지 교체과정을 여러 번 수행할 수 있다.
- 가상기억장치의 페이징 기법으로 발전되었다.
3. 다중 분할 할당 기법
- 고정 분할 할당 기법 = 정적 할당 기법
- 고정 분할 할당은 프로그램을 할당하기 전에 운영체제가 주기억장치의 사용자 영역을 여러 개의 고정된 크기로 분할하고 준비상태 큐에서 준비중인 프로그램을 각 영역에 할당하여 수행하는 기법이다.
- 프로그램을 실행하려면 프로그램 전체가 주기억장치에 위치해야 한다.
- 프로그램이 분할된 영역보다 커서 영역 안에 못들어가는 경우가 발생할 수 있다.
- 일정한 크기의 분할 영역에 다양한 크기의 프로그램이 할당되므로 내부 단편화 및 외부 단편화가 발생하여 주기억장치의 낭비가 많다.
- 실행할 프로그램을 미리 알고 있어야 한다.
- 다중 프로그래밍을 위해 사용되었으나 현재는 사용되지 않는다.
- 가변 분할 할당 기법 = 동적 할당 기법
- 고정 분할 할당 기법의 단편화를 줄이기 위한 것으로, 미리 주기억장치를 분할해 놓는 것이 아니라 프로그램을 주기억장치에 적재하면서 필요한 만큼의 크기로 영역을 분할하는 기법이다.
- 주기억장치를 효율적으로 사용할 수 있으며, 다중 프로그래밍의 정도를 높일 수 있다.
- 고정 분할 할당 기법에 비해 실행될 프로세스 크기에 대한 제약이 적다.
- 단편화를 상당 부분 해결할 수 있으나 영역과 영역 사이에 단편화가 발생할 수 있다.
핵심
- 연속 할당(로딩) 방법 : 단일 분할 할당(오버레이, 스와핑) + 다중 분할 할당(고정 분할 할당 기법, 동적 분할 할당 기법)
- 고정 분할 기억장치 할당 : 일정 수의 고정된 크기로 분할하여 준비상태 큐에서 준비 중인 프로그램을 각 영역에 할당하여 수행하는 기법
- 고정 분할 할당 기법은 실행할 프로그램 전체가 주기억장치에 적재된 후 실행하기 때문에 주기억장치와 보조기억장치 사이에 데이터 이동은 자주 발생하지 않는다.
'대학교 > 자격증' 카테고리의 다른 글
[2020 정보처리기사 필기] 응용 SW 기초 기술 활용 (3) (0) | 2020.08.13 |
---|---|
[2020 정보처리기사 필기] 응용 SW 기초 기술 활용 (2) (0) | 2020.08.13 |
[2020 정보처리기사 필기] 프로그래밍 언어 활용 (3) (0) | 2020.08.12 |
[2020 정보처리기사 필기] 프로그래밍 언어 활용 (2) (0) | 2020.08.12 |
[2020 정보처리기사 필기] 프로그래밍 언어 활용 (1) (0) | 2020.08.11 |