프로세스. 메모리. 저장장치. 관리
프로세스 관리
프로세스란 '실행 중인 프로그램' 이라고 한다. 컴파일러와 같은 하나의 멀티테스킹 사용자 프로그램은 하나의 프로세스가 된다. 예를 들어 pc 에서 한 사용자에 의해 수행되는 한글 프로세싱 프로그램도 프로세스가 되고, 출력을 프린트로 보내는 것(시스템 태스크)도 하나의 프로세스가 되는 것이다.
중요한 것은 프로그램 그 자체가 프로세스가 아니라는 것이다.
디스크에 저장된 파일의 내용과 같이 수동적 개체일 뿐이다. 프로세스는 수행할 명령을 지정하는 프로그램 카운터(programcounter)를 가진 능동적인 개체이다.
다음은 프로세스의 특징이다.
- 프로세스는 자신의 일을 수행하기 위해 cpu 시간, 메모리, 파일, 입출력 장치등의 자원을 필요로 한다.
- 자원은 프로세스가 생성될 때 제공될수도 있고, 실행중 전달될 수도 있다.
- 하나의 프로세스 수행은 반드시 순차적으로 처리된다.
- 하나의 프로세스는 한 시스템 내의 작업의 단위이다.
- 프로세스는 프로그램 카운터를 가지고 있으며 카운터들은 실행할 명령어를 가르키고 있다.(다중 스레드 프로세스는 복수개의 프로그램 카운터를 지님)
다음은 운영체제가 프로세스 관리를 위해 수행하는 것들이다.
- cpu에 프로세스와 스레드 스케줄하기
- 사용자 프로세스와 시스템 프로세스의 생성과 제거
- 프로세스의 일시 중지와 재실행
- 프로세스 동기화를 위한 기법 제공
- 포르세스 통신을 위한 기법 제공
메모리 관리
메모리란 크기가 수십만에서 수십억 까지의 범위를 갖는 바이트type의 대용량 배열이다.
메인 메모리는 cpu와 입출력 장치에 의하여 공유되는 빠른 접근이 가능한 데이터의 저장소이다. 즉 cpu가 디스크의 데이터를 처리하려면 먼저 메모리에 전송해야한다는 의미이다.
메모리는 다음과 같은 특징이 있다.
- 프로그램이 수행되려면 반드시 절대 주소로 매핑되고 메모리에 적재되어야한다.
- cpu는 메모리에 직접 주소를 지정할 수 있고 직접 접근이 가능한 유일한 대량 메모리이다.
- 메모리의 단위는 바이트(byte) 이며 각 바이트(byte)는 자신의 주소를 가진다.
메모리 관리기법이 존재하는데 이는 여러 프로그램을 유지하기 위해 필요하며 하드웨어 설계에 기반한 알고리즘 구조로 이루어져있다.
다음은 운영체제가 메모리 관리과 관련하여 수행하는 일이다.
- 메모리의 어느 부분이 현재 사용되고 있으며 누구에 의해 사용되는 지 추적하는 일
- 어떤 프로세스(또는 그 일부)들을 메모리에 적재하고 제거할 것인지 결정하는 일
- 필요에 따라 메모리 공간을 할당하고 회수하는 일
저장장치 관리
컴퓨터 시스템의 편리한 사용을 위해 운영체제는 정보 저장장치에 대한 일관되며 논리적 저장 단위를 제공한다.
운영체제를 통해 관리되는 파일, 대용량저장장치, 캐싱 이 세가지를 알아보자
파일시스템 관리
파일은 파일 생성자에 의해 정의된 '관련 정보의 집합체' 이다.
일반적으로 파일은 프로그램과 데이터를 나타낸다. 테이터 파일은 숫자, 영문자, 영숫자 등으로 구성된다.
또한 파일은 텍스트 파일과 같은 자유형태일 수 있고 엄격하게 포맷된 형태일 수도 있다.
여러 유형의 물리적 매체, 예를 들어 하드디스크, 광디스크, 자기테이프 등에 의해 제어되며 각각의 매체 특성에 따라 접근 속도, 용량, 테이터 전송률, 접근방식이 다르다.
운영체제는 파일관리를 위하여 다음과 같은 일을 한다.
- 파일 생성 및 제거
- 디렉터리 생성 및 제거
- 파일과 디렉터리 조작 위한 프리미티브 제공
- 파일을 보조 저장장치로 매핑
- 안정적인 저장 매체에 파일을 백업
대용량 저장장치 관리
메인 메모리는 모든 데이터와 프로그램을 수용하기에는 용량이 적다. 또한 전원이 꺼지면 모든 데이터가 날아가기에 보조 저장장치가 필수 이다.
보조 저장장치는 프로그램이 메모리에 적재될때까지 보관해야하며 매우 빈번하게 사용되므로 효율적인 관리가 필요하다. 디스크의 서브시스템과 이것을 조작하는 알고리즘의 속도에 의해 결정된다.
운영체제는 디스크 관리를 위하여 다음과 같은 기능을 담당한다.
- 자유 공간의 관리
- 저장 장소할당
- 디스크 스케줄링
캐싱
컴퓨터 시스템의 중요한 요소이다. 메인 메모리보다 빠른 장치이기도 하며 어떤 작업에 특정정보가 필요할 때 메모리보다 먼저 캐시에 정보가 있는지 확인하는 작업을 수행해야한다.
cpu 내부의 프로그램 가능한 레지스터들은 메인 메모리를 위한 고속의 캐시로 볼 수 있다.
정보의 재사용률과 캐시의 용량을 고려하여 캐시에 넣는 것이 좋기 때문에 프로그래머는 어떤 정보를 레지스터에 둘것인지 결정하는 레지스터 할당 정책과 교체 알고리즘을 구현해야한다.
마지막으로 저장장치 각 단계의 성능을 표로 남긴다.
층 | 1 | 2 | 3 | 4 | 5 |
명칭 | 레지스터 | 캐시 | 메인메모리 | 반도체 디스크 | 하드 디스크 |
전형적인 크기 | < 1KB | < 16MB | < 64GB | < 1TB | < 10TB |
구현기술 | 다중포트를 가지는 고유 메모리, CMOS | 온칩 또는 오프칩 CMOS RAM | CMOS SRAM | 플래시 메모리 | 하드 디스크 |
접근시간(ms) | 0.25~0.5 | 0.5~25 | 80~250 | 25,000~50,000 | 5,000,000 |
대역폭 (MB/sec) | 20,000,100,000 | 5000~10,000 | 1000.5000 | 500 | 20~500 |
관리자 | 컴파일러 | 하드웨어 | 운영체제 | 운영체제 | 운영체제 |
백업여부 | 캐시 | 메인메모리 | 디스크 | CD 또는 테이프 |