SW
[2020 정보처리기사 필기] 응용 SW 기초 기술 활용 (2) 본문
146. 가상기억장치 구현 기법 / 페이지 교체 알고리즘 ★★★
1. 가상기억장치의 개요
- 가상기억장치는 보조기억장치(하드디스크)의 일부를 주기억장치처럼 사용하는 것으로, 용량이 작은 주기억장치를 마치 큰 용량을 가진 것처럼 사용하는 기법이다.
- 프로그램을 여러 개의 작은 블록 단위로 나누어서 가상기억장치에 보관해 놓고, 프로그램 실행 시 요구되는 블록만 주기적장치에 불연속적으로 할당하여 처리한다.
- 주기억장치의 용량보다 큰 프로그램을 실행하기 위해 사용한다.
- 주기억장치의 이용률과 다중 프로그래밍의 효율을 높일 수 있다.
- 가상기억장치에 저장된 프로그램을 실행하려면 가상기억장치의 주소를 주기억장치의 주소로 바꾸는 주소 변환 작업이 필요하다.
- 블록 단위로 나누어 사용하므로 연속 할당 방식에서 발생할 수 있는 단편화를 해결할 수 있다.
- 가상기억장치의 일반적인 구현 방법에는 블록의 종류에 따라 페이징 기법과 세그먼테이션 기법으로 나눌 수 있다.
2. 페이징(Paging) 기법
- 페이징 기법은 가상기억장치에 보관되어 있는 프로그램과 주기억장치의 영역을 동일한 크기로 나눈 후 나눠진 프로그램(페이지)을 동일하게 나눠진 주기억장치의 영역(페이지 프레임)에 적재시켜 실행하는 기법이다.
- 프로그램을 일정한 크기로 나눈 단위를 페이지(Page)라고 하고, 페이지 크기로 일정하게 나누어진 주기억장치의 단위를 페이지 프레임(Page Frame)이라고 한다.
- 외부 단편화는 발생하지 않으나 내부 단편화는 발생할 수 있다.
- 주소 변환을 위해서 페이지의 위치 정보를 가지고 있는 페이지 맵 테이블(Page Map Table)이 필요하다.
- 페이지 맵 테이블 사용으로 비용이 증가되고, 처리 속도가 감소된다.
- 페이지 크기가 4KB이고 사용할 프로그램이 17KB라면 프로그램은 페이지 단위로 4KB씩 나누어지게 된다. 이때 마지막 페이지의 실제 용량은 1KB가 되고, 이것이 주기억장치에 적재되면 3KB의 내부 단편화가 발생한다.
3. 세그멘테이션(Segmentation) 기법
- 세그먼테이션 기법은 가상기억장치에 보관되어 있는 프로그램을 다양한 크기의 논리적인 단위로 나눈 후 주기억장치에 적재시켜 실행시키는 기법이다.
- 프로그램을 배열이나 함수 등과 같은 논리적인 크기로 나눈 단위를 세그먼트(Segment)라고 하며, 각 세그먼트는 고유한 이름과 크기를 갖는다.
- 기억장치의 사용자 관점을 보존하는 기억장치 관리 기법이다.
- 세그먼테이션 기법을 이용하는 궁극적인 이유는 기억공간을 절약하기 위해서이다.
- 주소 변환을 위해서 세그먼트가 존재하는 위치 정보를 가지고 있는 세그먼트 맵 테이블(Segment Map Table)이 필요하다.
- 연속적인 가상주소가 반드시 연속적인 실기억주소로 변환되지 않아도 되는데, 이를 인위적 연속성(Artificial Contiguity)이라고 한다.
- 세그먼트가 주기억장치에 적재될 때 다른 세그먼트에게 할당된 영역을 침범할 수 없으며, 이를 위해 기억장치 보호키(Storage Protection Key)가 필요하다.
- 내부 단편화는 발생하지 않으나 외부 단편화는 발생할 수 있다.
4. 페이지 교체 알고리즘
- 페이지 교체 알고리즘은 페이지 부재(Page Fault)가 발생했을 때 가상기억장치의 필요한 페이지를 주기억장치에 적재해야 하는데, 이때 주기억장치의 모든 페이지 프레임이 사용중이면 어떤 페이지 프레임을 선택하여 교체할 것인지를 결정하는 기법이다.
- 페이지 교체 알고리즘에는 OPT, FIFO, LRU, LFU, NUR, SCR 등이 있다.
- OPT(OPTimal replacement, 최적 교체)
- OPT는 앞으로 가장 오랫동안 사용하지 않을 페이지를 교체하는 기법이다.
- 벨레이디가 제안한 것으로, 페이지 부재 횟수가 가장 적게 발생하는 가장 효율적인 알고리즘이다.
- FIFO(First In First Out)
- FIFO는 각 페이지가 주기억장치에 적재될 때마다 그때의 시간을 기억시켜 가장 먼저 들어와서 가장 오래 있었던 페이지를 교체하는 기법이다.
- LRU(Least Recently Used)
- LRU는 최근에 가장 오랫동안 사용하지 않은 페이지를 교체하는 기법이다.
- 각 페이지마다 계수기(Counter)나 스택(Stack)을 두어 현 시점에서 가장 오랫동안 사용하지 않은, 즉 가장 오래 전에 사용된 페이지를 교체한다.
- 숫자를 증가시키며 가장 큰 것을 대체한다. 갱신되면 초기값으로 돌아온다.
- LFU(Least Frequently Used)
- LFU는 사용 빈도가 가장 적은 페이지를 교체하는 기법이다.
- 활발하게 사용되는 페이지는 사용 횟수가 많아 교체되지 않고 사용된다.
- NUR(Not Used Recently)
- LRU와 비슷한 알고리즘으로, 최근에 사용하지 않은 페이지를 교체하는 기법이다.
- 최근에 사용되지 않은 페이지는 향후에도 사용되지 않을 가능성이 높다는 것을 전제로, LRU에서 나타나는 시간적인 오버헤드를 줄일 수 있다.
- 최근의 사용 여부를 확인하기 위해서 각 페이지마다 두 개의 비트, 즉 참조 비트와 변형 비트가 사용된다.
- 참조 비트와 변형 비트의 값에 따라 교체될 페이지의 순서가 결정된다.
참조 비트 | 0 | 0 | 1 | 1 |
변형 비트 | 0 | 1 | 0 | 1 |
교체 순서 | 1 | 2 | 3 | 4 |
- SCR(Second Chance Replacement, 2차 기회 교체)
- SCR은 가장 오랫동안 주기억장치에 있던 페이지 중 자주 사용되는 페이지의 교체를 방지하기 위한 것으로, FIFO 기법의 단점을 보완하는 기법이다.
핵심
- 가상기억장치 특징
- 페이징(일정 크기) vs 세그멘테이션(가변 크기)
- 각 페이지 교체 알고리즘
147. 가상기억장치 기타 관리 사항 ★★★
1. 페이지 크기
- 페이징 기법을 사용하면 프로그램을 페이지 단위로 나누게 되는데, 페이지의 크기에 따라 시스템에 미치는 영향이 다르다.
- 페이지 크기가 작을 경우
- 페이지 단편화가 감소하고, 한 개의 페이지를 주기억장치로 이동하는 시간이 줄어든다.
- 불필요한 내용이 주기억장치에 적재될 확률이 적으므로 효율적인 워킹 셋을 유지할 수 있다.
- Locality에 더 일치할 수 있기 때문에 기억장치 효율이 높아진다.
- 페이지 정보를 갖는 페이지 맵 테이블의 크기가 커지고, 매핑 속도가 늦어진다.
- 디스크 접근 횟수가 많아져서 전체적인 입출력 시간을 늘어난다.
- 페이지 크기가 클 경우
- 페이지 정보를 갖는 페이지 맵 테이블의 크기가 작아지고, 매핑 속도가 빨라진다.
- 디스크 접근 횟수가 줄어들어 전체적인 입출력의 효율성이 증가된다.
- 페이지 단편화가 증가되고, 한 개의 페이지를 주기억장치로 이동하는 시간이 늘어난다.
- 프로세스(프로그램) 수행에 불필요한 내용까지도 주기억장치에 적재될 수 있다.
2. Locality
- Locality(국부성, 지역성, 구역성, 국소성)는 프로세스가 실행되는 동안 주기억장치를 참조할 때 일부 페이지만 집중적으로 참조하는 성질이 있다는 이론이다.
- 스래싱을 방지하기 위한 워킹 셋 이론의 기반이 되었다.
- 프로세스가 집중적으로 사용하는 페이지를 알아내는 방법 중 하나로, 가상기억장치 관리의 이론적인 근거가 된다.
- 데닝(Denning)교수에 의해 구역성의 개념이 증명되었으며 캐시 메모리 시스템의 이론적 근거이다.
- Locality의 종류에는 시간 구역성(Temporary Locality)과 공간 구역성(Spatial Locality)이 있다.
- 시간 구역성
- 시간 구역성은 프로세스가 실행되면서 하나의 페이지를 일정 시간 동안 집중적으로 액세스하는 현상이다.
- 한 번 참조한 페이지는 가까운 시간 내에 계속 참조할 가능성이 높음을 의미한다.
- 시간 구역성이 이루어지는 기억 장소 : Loop, 스택, 부 프로그램, Counting, 집계에 사용되는 변수
- 공간 구역성
- 공간 구역성은 프로세스 실행 시 일정 위치의 페이지를 집중적으로 액세스하는 현상이다.
- 어느 하나의 페이지를 참조하면 그 근처의 페이지를 계속 참조할 가능성이 높음을 의미한다.
- 공간 구역성이 이루어지는 기억 장소 : 배열 순회, 순차적 코드의 실행, 프로그래머들이 관련된 변수들을 서로 근처에 선언하여 할당되는 기억장소, 같은 영역에 있는 변수를 참조할 때 사용
3. 워킹 셋(Working Set)
- 워킹 셋은 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합이다.
- 데닝(Denning)이 제안한 프로그램의 움직임에 대한 모델로, 프로그램의 Locality 특징을 이용한다.
- 자주 참조되는 워킹 셋을 주기억장치에 상주시킴으로써 페이지 부재 및 페이지 교체 현상이 줄어들어 프로세스의 기억장치 사용이 안정된다.
- 시간이 지남에 따라 자주 참조하는 페이지들의 집합이 변화하기 때문에 워킹 셋은 시간이 지남에 따라 변경된다.
4. 페이지 부재 빈도 방식
- 페이지 부재(Page Fault)는 프로세스 실행 시 참조할 페이지가 주기억장치에 없는 현상이며, 페이지 부재 빈도는 페이지 부재가 일어나는 횟수를 의미한다.
- 페이지 부재 빈도 방식은 페이지 부재율에 따라 주기억장치에 있는 페이지 프레임의 수를 늘리거나 줄여 페이지 부재율을 적정 수준으로 유지하는 방식이다.
- 운영체제는 프로세스 실행 초기에 임의의 페이지 프레임을 할당하고, 페이지 부재율을 지속적으로 감시하고 있다가 부재율이 상한선을 넘어가면 좀더 많은 페이지 프레임을 할당하고, 부재율이 하한선을 넘어가면 페이지 프레임을 회수하는 방식을 사용한다.
5. 프리페이징(Prepaging)
- 프리페이징은 처음의 과도한 페이지 부재를 방지하기 위해 필요할 것 같은 모든 페이지를 한꺼번에 페이지 프레임에 적재하는 기법이다.
- 기억장치에 들어온 페이지들 중에서 사용되지 않는 페이지가 많을 수도 있다.
6. 스래싱(Thrashing)
- 스래싱은 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상이다.
- 다중 프로그래밍 시스템이나 가상기억장치를 사용하는 시스템에서 하나의 프로세스 수행 과정중 자주 페이지 부재가 발생함으로써 나타나는 현상으로, 전체 시스템의 성능이 저하된다.
- 다중 프로그래밍의 정도가 높아짐에 따라 CPU의 이용률은 어느 특정 시점까지는 높아지지만, 다중 프로그래밍의 정도가 더욱 커지면 스래싱이 나타나고, CPU의 이용률은 급격히 감소하게 된다.
- 스래싱 현상 방지 방법
- 다중 프로그래밍의 정도를 적정 수준으로 유지한다.
- 페이지 부재 빈도를 조절하여 사용한다.
- 워킹 셋을 유지한다.
- 부족한 자원을 증설하고, 일부 프로세스를 중단시킨다.
- CPU 성능에 대한 자료의 지속적 관리 및 분석으로 임계치를 예상하여 운영한다.
핵심
- 페이징 크기가 작은 경우, 큰 경우 각 특징
- Locality : 시간 구역성(Loop, 스택, 집계에 사용되는 변수, 서브루틴), 공간 구역성(배열 순회)
- Working Set : 프로세스가 일정 시간 동안 자주 참조하는 페이지들의 집합
- Thrashing : 프로세스의 처리 시간보다 페이지 교체에 소요되는 시간이 더 많아지는 현상
148. 프로세스의 개요 ★★★
1. 프로세스(Process)의 정의
- 프로세스는 일반적으로 프로세서(처리기, CPU)에 의해 처리되는 사용자 프로그램, 시스템 프로그램, 즉 실행중인 프로그램을 의미하며, 작업, 태스크라고도 한다.
- PCB를 가진 프로그램
- 실기억장치에 저장된 프로그램
- 프로세서가 할당되는 실체로서, 디스패치가 가능한 단위
- 프로시저가 활동중인 것
- 비동기적 행위를 일으키는 주체
- 지정된 결과를 얻기 위한 일련의 계통적 동작
- 목적 또는 결과에 따라 발생되는 사건들의 과정
- 운영체제가 관리하는 실행 단위
2. PCB(Process Control Block, 프로세스 제어 블록)
- PCB는 운영체제가 프로세스에 대한 중요한 정보를 저장해 놓는 곳으로, Task Control Block 또는 Job Control Block이라고도 한다.
- 각 프로세스가 생성될 때마다 고유의 PCB가 생성되고, 프로세스가 완료되면 PCB는 제거된다.
- PCB에 저장되어 있는 정보는 다음과 같다.
- 프로세스의 현재 상태 : 준비, 대기, 샐행 등의 프로세스 상태
- 포인터 : 부모 프로세스에 대한 포인터, 자식 프로세스에 대한 포인터, 프로세스가 위치한 메모리에 대한 포인터, 할당된 자원에 대한 포인터
- 프로세스 고유 식별자 : 프로세스를 구분할 수 있는 고유의 번호
- 스케줄링 및 프로세스의 우선순위 : 스케줄링 정보 및 프로세스가 실행될 우선순위
- CPU 레지스터 정보 : Accumulator(누산기), 인덱스 레지스터, 범용 레지스터, 프로그램 카운터(PC)에 대한 정보
- 주기억장치 관리 정보 : 기준 레지스터, 페이지 테이블에 대한 정보
- 입출력 상태 정보 : 입출력장치, 개방된 파일 목록
- 계정 정보 : CPU 사용 시간, 실제 사용 시간, 한정된 시간
3. 프로세스 상태 전이
- 프로세스 상태 전이는 프로세스가 시스템 내에 존재하는 동안 프로세스의 상태가 변화하는 것을 의미한다.
- 프로세스의 상태는 제출, 접수, 준비, 실행, 대기 상태로 나눌 수 있으며, 이 중 주요 세 가지 상태는 준비, 실행, 대기 상태이다.
- 제출(Submit) : 작업을 처리하기 위해 사용자가 작업을 시스템에 제출한 상태이다.
- 접수(Hold) : 제출된 작업이 스풀 공간인 디스크의 할당 위치에 저장된 상태이다.
- 준비(Ready)
- 프로세스가 프로세서를 할당받기 위해 기다리고 있는 상태이다.
- 프로세스는 준비상태 큐에서 실행을 준비하고 있다.
- 접수 상태에서 준비 상태로의 전이는 Job 스케줄러에 의해 수행된다.
- 실행(Run)
-준비상태 큐에 있는 프로세스가 프로세서를 할당받아 실행되는 상태이다.
- 프로세스 수행이 완료되기 전에 프로세스에게 주어진 프로세서 할당 시간이 종료되면 프로세스는 준비 상태로 전이된다.
- 실행중인 프로세스에 입출력처리가 필요하면 실행중인 프로세스는 대기 상태로 전이된다.
- 준비 상태에서 실행 상태로의 전이는 CPU스케줄러에 의해 수행된다.
- 대기(Wait), 보류, 블록(Block) : 프로세스에 입출력 처리가 필요하면 현재 실행중인 프로세스가 중단되고, 입출력 처리가 완료될 때까지 대기하고 있는 상태이다.
- 종료(Terminate) : 프로세스의 실행이 끝나고 프로세스 할당이 해제된 상태이다.
4. 프로세스 상태 전이 관련 용어
- Dispatch : 준비 상태에서 대기하고 있는 프로세스 중 하나가 프로세서를 할당받아 실행 상태로 전이되는 과정이다.
- Wake Up : 입출력 작업이 완료되어 프로세스가 대기 상태에서 준비 상태로 전이되는 과정이다.
- Spooling : 입출력장치의 공유 및 상대적으로 느린 입출력장치의 처리 속도를 보완하고 다중 프로그래밍 시스템의 성능을 향상시키기 위해 입출력할 데이터를 직접 입출력장치에 보내지 않고 나중에 한꺼번에 입출력하기 위해 디스크에 저장하는 과정이다.
- 교통량 제어기(Traffic Controller) : 프로세스의 상태에 대한 조사와 통보를 담당한다.
5. 스레드(Thread)
- 스레드는 프로세스 내에서의 작업 단위로서 시스템의 여러 자원을 할당받아 실행하는 프로그램의 단위이다.
- 하나의 프로세스에 하나의 스레드가 존재하는 경우에는 단일 스레드, 하나 이상의 스레드가 존재하는 경우에는 다중 스레드라고 한다.
- 프로세스의 일부 특성을 갖기 때문에 경량 프로세스라고도 한다.
- 스레드 기반 시스템에서 스레드는 독립적인 스케줄링의 최소 단위로서 프로세스의 역할을 담당한다.
- 동일 프로세스 환경에서 서로 독립적인 다중 수행이 가능하다.
- 스레드의 분류
-사용자 수준의 스레드 : 사용자가 만든 라이브러리를 사용하여 스레드를 운용, 속도는 빠르지만 구현이 어렵다.
- 커널 수준의 스레도 : 운영체제의 커널에 의해 스레드를 운용, 구현이 쉽지만 속도가 느리다.
- 스레드 사용의 장점
- 하나의 프로세스를 여러 개의 스레드로 생성하여 병행성을 증진시킬 수 있다.
- 하드웨어, 운영체제의 성능과 응용 프로그램의 처리율을 향상시킬 수 있다.
- 응용 프로그램의 응답 시간을 단출시킬 수 있다.
- 실행 환경을 공유시켜 기억장소의 낭비가 줄어든다.
- 프로세스들 간의 통신이 향상된다.
- 스레드는 공통적으로 접근 가능한 기억장치를 통해 효율적으로 통신한다.
핵심
- 프로세스 = 실행중인 프로그램 = 프로시저의 활동 = 운영체제가 관리하는 실행 단위 = 비동기적 행위를 일으키는 주체
- PCB(프로세스 제어 블록)에 저장된 정보 : 프로세스의 현재 상태, 포인터, 프로세스 고유 식별자, 스케줄링 및 프로세스의 우선순위, CPU레지스터 정보, 주기억장치 관리 정보, 입출력 상태 정보, 계정 정보
- 실행중인 프로세스가 CPU 할당 시간을 다 사용한 후, Ready 상태로 전이한다.
- 디스패치(Dispatch) : 준비 상태에서 대기하고 있는 프로세스 중 하나가 스케줄링되어 중앙처리장치를 할당받아 실행 상태로 전이 되는 과정
- 스레드(Thread) : 하나의 프로세스 내에서 병행성을 증대시키기 위한 메커니즘
149. 스케줄링 ★★
1. 스케줄링(Scheduling)의 개요
- 스케줄링은 프로세스가 생성되어 실행될 때 필요한 시스템의 여러 자원을 해당 프로세스에게 할당하는 작업을 의미한다.
- 프로세스가 생성되어 완료될 때까지 프로세스는 여러 종류의 스케줄링 과정을 거치게 된다.
- 스케줄링의 종류에는 장기 스케줄링, 중기 스케줄링, 단기 스케줄링이 있다.
- 장기 스케줄링
- 어떤 프로세스가 시스템의 자원을 차지할 수 있도록 할 것인가를 결정하여 준비상태 큐로 보내는 작업을 의미
- 작업 스케줄링, 상위 스케줄링이라고도 하며, 작업 스케줄러에 의해 실행된다.
- 중기 스케줄링
- 어떤 프로세스들이 CPU를 할당받을 것인지를 결정하는 작업을 한다.
- CPU를 할당받으려는 프로세스가 많을 경우 프로세스를 일시 보류시킨 후 활성화해서 일시적으로 부하를 조절한다.
- 단기 스케줄링
- 프로세스가 실행되기 위해 CPU를 할당받는 시기와 특정 프로세스를 지정하는 작업을 의미한다.
- 프로세스 스케줄링, 하위 스케줄링이라고도 한다.
- 프로세서 스케줄링 및 문맥 교환은 프로세서 스케줄러에 의해 수행된다.
- 문맥교환 : 하나의 프로세스에서 다른 프로세스로 CPU가 할당되는 과정에서 발생되는 것으로 새로운 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후 CPU를 할당하여 실행되도록 하는 작업을 의미한다.
2. 스케줄링의 목적
- 공정성 : 모든 프로세스가 공정하게 할당한다.
- 처리율(량) 증가 : 단위 시간당 프로세스를 처리하는 비율(양)을 증가시킨다.
- CPU 이용률 증가 : 프로세스 실행 과정에서 주기억장치를 액세스한다든지, 입출력 명령 실행 등의 원인에 의해 발생할 수 있는 CPU의 낭비 시간을 줄이고, CPU가 순수하게 프로세스를 실행하는데 사용되는 시간 비율을 증가시킨다.
- 우선순위 제도 : 우선순위가 높은 프로세스를 먼저 실행한다.
- 오버헤드 최소화 : 오버헤드를 최소화 한다.
- 응답 시간 최소화 : 작업을 지시하고, 반응하기 시작하는 시간을 최소화한다.
- 반환 시간 최소화 : 프로세스가 준비상태 큐에서 대기하는 시간을 최소화한다.
- 균형 있는 자원의 사용 : 메모리, 입출력장치 등의 자원을 균형 있게 사용한다.
- 무한 연기 회피 : 자원을 사용하기 위해 무한정 연기되는 상태를 회피한다.
- 스케줄링의 성능 평가 기준 : CPU 이용률, 처리율, 반환 시간, 대기 시간, 응답 시간
3. 프로세스 스케줄링의 기법
- 비선점(Non-Preemptive) 스케줄링
- 이미 할당된 CPU를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법이다.
- 프로세스가 CPU를 할당받으면 해당 프로세스가 완료될 때까지 CPU를 사용한다.
- 모든 프로세스에 대한 요구를 공정하게 처리할 수 있다.
- 프로세스 응답 시간의 예측이 용이하며, 일괄 처리 방식에 적합하다.
- 중요한 작업이 중요하지 않은 작업을 기다리는 경우가 발생할 수 있다.
- 비선점 스케줄링의 종류에는 FCFS, SJF, 우선순위, HRN, 기한부 등의 알고리즘이 있다.
- 선점(Preemptive) 스케줄링
- 하나의 프로세스가 CPU를 할당받아 실행하고 있을 때 우선순위가 높은 다른 프로세스가 CPU를 강제로 빼앗아 사용할 수 있는 스케줄링 기법이다.
- 우선순위가 높은 프로세스를 빠르게 처리할 수 있다.
- 주로 빠른 응답 시간을 요구하는 대화식 시분할 시스템에 사용된다.
- 많은 오버헤드를 초래한다.
- 선점이 가능하도록 일정 시간 배당에 대한 인터럽트용 타이머 클록이 필요하다.
- 선점 스케줄링의 종류에는 Round Robin, SRT, 선점 우선순위, 다단계 큐, 다단계 피드백 큐 등이 있다.
핵심
- 선점 기법 스케줄링 : Round Robin, SRT, 선점 우선순위
- 비선점 기법 스케줄링 : FCFS, SJF, 우선순위, HRN
- Process Scheduler : 필요한 하드웨어 레지스터를 설정함으로써 프로세스에게 CPU를 할당하고, 문맥 교환을 하는 프로세스 관리 기능
- 선점 : 우선순위, 대화식 시분할 시스템, 높은 오버헤드, 선점을 위한 시간배당에 대한 클록 사용
- 비선점 : 공평, 응답 시간 예측 용이, 사용 시간이 짧은 프로세스가 긴 프로세스가 끝날 때까지 기다려야 하는 경우 발생
- 문맥교환 : 하나의 프로세스에서 다른 프로세스로CPU가 할당되는 과정에서 발생되는 것으로 새로운 프로세스에 CPU를 할당하기 위해 현재 CPU가 할당된 프로세스의 상태 정보를 저장하고, 새로운 프로세스의 상태 정보를 설정한 후CPU를 할당하여 실행되도록 하는 작업을 의미한다.
150. 환경 변수 ★
1. 환경 변수의 개요
- 환경 변수란 시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임을 의미한다.
- 환경 변수는 변수명과 값으로 구성된다.
- 환경 변수는 시스템의 기본 정보를 저장한다.
- 환경 변수는 자식 프로세스에 상속된다.
- 환경 변수는 시스템 전반에 걸쳐 적용되는 시스템 환경 변수와 사용자 계정 내에서만 적용되는 사용자 환경 변수로 구분된다.
2. Windows에서의 환경 변수
- Windows에서 환경 변수를 명령어나 스크립트에서 사용하려면 변수명 앞뒤에 '%'를 입력해야 한다.
- set을 입력하면 모든 환경 변수와 값을 표시해준다.
- PATH, SYSTEMDRIVE, TEMP 등
3. UNIX / LINUX에서의 환경 변수
- UNIX나 LINUX에서 환경 변수를 명령어나 스크립트에서 사용하려면 변수명 앞에 '$'를 입력해야 한다.
- set, env, printenv를 입력하면 모든 환경 변수와 값을 표시해준다.
- PWD, PATH, HOME, MAIL 등
핵심
- 환경 변수 : 시스템 소프트웨어의 동작에 영향을 미치는 동적인 값들의 모임
- 모든 환경 변수와 값을 보려면 Windows에서는 set, UNIX/LINUX에서는 set, env, printenv를 입력한다.
151. 운영체제 기본 명령어 ★★
1. 운영체제 기본 명령어의 개요
- 운영체제를 제어하는 방법은 크게 CLI, GUI로 구분할 수 있다.
- CLI(Command Line Interface)는 키보드로 명령어를 직접 입력하여 작업을 수행하는 사용자 인터페이스를 말한다.
- GUI(Graphic User Interface)는 키보드로 명령어를 직접 입력하지 않고, 마우스로 아이콘이나 메뉴를 선택하여 작업을 수행하는 그래픽 사용자 인터페이스를 의미한다.
2. Windows 기본 명령어
- CLI 기본 명령어 : 명령 프롬프트창에 명령어를 입력하여 작업을 수행하는 것으로, 주요 명령어는 다음과 같다.
- DIR : 파일 목록 표시
- COPY : 파일 복사
- TYPE : 파일 내용 표시
- REN : 파일 이름 변경
- DEL : 파일 삭제
- MD : 디렉터리 생성
- CD : 디렉터리 위치 변경
- CLS : 화면 내용 지우기
- ATTRIB : 파일 속성 변경
- FIND : 파일 찾기
- CHKDSK : 디스크 상태 점검
- FORMAT : 디스크 표면을 트랙과 섹터로 나누어 초기화
- MOVE : 파일 이동
- GUI 기본 명령어 : 바탕 화면이나 Windows 탐색기에서 마우스로 아이콘을 더블클릭하여 프로그램을 실행하는 것 등 모든 작업이 GUI 명령어에 해당한다.
3. UNIX/LINUX 기본 명령어
- CLI 기본 명령어 : 쉘(Shell)에 명령어를 입력하여 작업을 수행하는 것으로 UNIX/LINUX의 주요 기본 명령어는 다음과 같다.
- cat : 파일 내용을 화면에 표시
- chdir : 현재 사용할 디렉터리의 위치를 변경
- chmod : 파일의 사용 허가 지정
- chown : 소유자 변경
- cp : 파일 복사
- exec : 새로운 프로세스 수행
- find : 파일 찾기
- fork : 새로운 프로세스를 생성
- fsck : 파일 시스템 검사, 보수
- getpid : 자신의 프로세스 아이디 얻기
- getppid : 부모 프로세스 아이디 얻기
- ls : 현재 디렉터리 내의 파일 목록 확인
- mount/unmount : 파일 시스템을 마운팅(새로운 파일 시스템을 서브 디렉터리에 연결하는 것)/마운팅 해제
- rm : 파일 삭제
- wait : fork 후 exec에 의해 실행되는 프로세스의 상위 프로세스가 하위 프로세스 종료 등의 event를 기다린다.
- GUI 명령어 : UNIX/LINUX는 기본적으로 CLI를 기반으로 운영되는 시스템이지만 X Window 라는 별도의 프로그램을 설치하여 GUI 방식으로 운영할 수 있다.
핵심
- fork : Unix에서 프로세스를 생성
- chmod : 파일의 속성 변경
- mount : 기존 파일 시스템에 새로운 파일 시스템을 서브 디렉터리에 연결할 때 사용하는 명령
- FORMAT : 디스크 표면을 트랙과 섹터로 나누어 초기화
'대학교 > 자격증' 카테고리의 다른 글
[2020 정보처리기사 필기] 소프트웨어 개발 방법론 활용 (1) (0) | 2020.08.14 |
---|---|
[2020 정보처리기사 필기] 응용 SW 기초 기술 활용 (3) (0) | 2020.08.13 |
[2020 정보처리기사 필기] 응용 SW 기초 기술 활용 (1) (0) | 2020.08.13 |
[2020 정보처리기사 필기] 프로그래밍 언어 활용 (3) (0) | 2020.08.12 |
[2020 정보처리기사 필기] 프로그래밍 언어 활용 (2) (0) | 2020.08.12 |