기술면접 준비

운영체제란 무엇이고, 어떤 역할을 수행하는가? 2편 용어 정리

Albosa2lol 2023. 11. 9. 01:36

컴퓨터 운영체제 OS 관련 용어 정리

 

커널 (Kernel)

사용자의 조작을 처리하여 OS가 움직일 수 있도록 하는 OS의 핵심 부분

쉘 (Shell)

사용자의 지시를 해석해서 커널에게 전달하는 것으로 화면에 보이는 사용자 인터페이스

CUI (Character User Interface)

키보드의 입력 내용이나 계산 결과를 디스플레이상에 문자로 표시, 쉘은 OS 조작을 위한 명령이고 영숫자 문자열을 사용

GUI (Graphic User Interface)

사용자 입장에서 좀 더 편하고 알기 쉽게 그래픽으로 표현되어 있는 인터페이스로 디스플레이 상의 창, 메뉴, 버튼과 같은 그래픽을 키보드나 마우스로 조작, Windows 탐색기는 'Windows' OS의 쉘로, 바탕화면의 표시나 파일 검색 등을 수행

와일드카드 (Wild Card)

컴퓨터 용어로는 일반적으로 한 디렉토리 내에 여러 개의 파일이 존재하거나 파일 이름의 뒷부분을 정확히 알지 못하는 경우에 유용하게 사용할 수 있는 명령어

시스템 콜 (System Call)

커널이 쉘과 같은 프로그램에게 제공하는 기능, 프로그램은 커널에게 처리를 의뢰하고 실제 처리는 커널이 수행

미들웨어 (Middelware)

운영체제와 어플리케이션 사이에서 데이터를 주고받을 수 있도록 중개하는 소프트웨어

API (Application Programming Interface)

OS나 프로그래밍 언어가 제공하는 기능을 애플리케이션에서 사용할 수 있도록 만든 인터페이스, API를 사용하여 OS에 특화된 프로그램을 만들수 있음

부팅 로더 (Booting Loader)

하드디스크상에 있는 OS를 기동시키기 위한 프로그램, 하드디스크에 있는 MBR(Master Boot Record)라는 영역으로부터 실행

OS 부팅 순서 (Booting)

전원을 넣은 후 운영체제가 기동되기까지 자동으로 처리되는 흐름, 순서는 전원 > BIOS 기동, 메모리나 하드웨어 체크 > 부팅 로더 읽기/기동 > OS 기동 순으로 진행 됨

계정 로그인/로그아웃 (Log In/Log Out)

사용자명과 비밀번호를 입력하여 OS나 네트워크 이용을 인증받는 로그인과 로그인 되어있는 OS나 네트워크에서 이용을 종료하는 로그아웃

다중 사용자

한 대의 컴퓨터를 여러 사용자가 공유할 수 있는 기능, 각 사용자마다 개인 설정을 변경하여 다른 사용자에게 영향을 주지 않고 다르게 사용 가능

관리자 계정

사용자는 크게 관리자와 일반 사용자로 나뉘며, 관리자는 OS 전체에 영향을 주는 설정을 수행할 수 있음, 크게 보안 관리, 하드웨어 관리, 사용자 관리, 소프트웨어 관리, 시스템 보수/운용 등에 관여함

디바이스 (Device)

디바이스는 CPU나 메모리, 하드디스크 등과 같은 각종 기기를 총칭하는 말, OS는 각 디바이스를 관리하는 기능을 갖고 있음

디바이스 드라이브 (Device Driver)

디바이스를 제어하는 프로그램, 컴퓨터에 연결되어 있는 디바이스를 OS에서 사용하려면 드라이버가 필요

플러그 앤 플레이 (Plug and Play, PnP)

디바이스를 컴퓨터에 접속시키면 자동으로 디바이스를 사용할 수 있도록 드라이버 설치나 시스템 설정을 수행하는 기능

I/O 포트 (Input/Output Port)

디바이스와 컴퓨터 간에 데이터를 입출력하기 위한 창구, 마우스나 키보드를 연결하는 PS/2 포트 (요즘은 USB 포트로 대체), USB 대응 기긱를 연결하는 USB 포트, 모뎀 등을 연결하는 시리얼 포트, 프린터나 스캐너를 연결하는 패러럴 포트, 조이스틱 등을 연결하는 게임 포트 등이 있음

클립보드 (Clip Board, Mac OS의 스크랩북)

텍스트 데이터나 그림 등을 공유 메모리 영역에 일시적으로 저장하는 기능, Mac OS(스크랩북)나 Windows 등에서 가지고 있는 기능으로 복사, 잘라내기, 붙여넣기 기능을 사용하여 다른 어플리케이션 간에 데이터를 주고받을 수 있음

리쥼 (Resume)

소비 전력을 절약하기 위해 디스플레이나 하드디스크의 전원을 자동으로 꺼주는 전원 관리 기능이 있는데 이 때 키보드나 마우스를 조작하면 원래 화면으로 복귀하는 기능

하이버네이션 (Hibernation)

전원이 꺼짐과 동시에 직전까지 실행하던 작업 내용을 하드 디스크 드라이브에 자동적으로 저장하여 보존하는 기능, 정지(suspend)나 점유(resume)에서는 대기 상태라도 약간의 전력을 소비하지만 하이버네이션에서는 기억 용량을 유지하기 위해 전력을 소모하지 않아 절전 효과가 있음

CPU 관련 용어 정리

MIPS (Million Instructions Per Second)

CPU의 빠르기를 나타내는 단위, 1초 동안 실행할 수 있는 명령의 수

CPI (Cycles Per Instruction)

CPU에서 하나의 명령 실행에 필요한 클럭 수

레지스터 (Register)

CPU 안에 있는 일시적인 기억 장치로 CPU가 연산한 결과를 저장, 메인 메모리와 비교하면 용량은 적지만 고속으로 작동

캐시 메모리 (Cache)

자주 사용하는 명령은 CPU 안에 넣어 두고 고속으로 처리, 외부 기억 장치 안에도 고속화를 위해 캐시 메모리가 있는 경우도 있음

프로세스 (Process)

프로그램의 실행 단위, 메모리 상에 할당된 프로그램을 지칭

인터럽트 (Interrupt)

실행 중인 프로그램을 중단하고 우선순위가 높은 다른 프로그램에게 CPU를 할당하여 실행하는 것을 지칭

스케줄링 (Scheduling)

OS가 여러 개의 프로세스를 처리할 때 CPU에게 할당할 순서를 정하는 것

태스크 (Task)

OS가 CPU에게 의뢰하는 작업 단위, 대부분 프로세스와 동일한 의미로 생각해도 무방함

멀티태스킹 (Multi Tasking)

여러 개의 태스크를 동시에 처리하는 기능, 완벽하게 동시는 아니며 OS가 스케줄링을 통해 CPU에게 태스크를 순서대로 할당하여 아주 빠른 속도로 전환하며 수행하여 동시에 철리하는 것 같이 보임

데드락 (Dead Lock)

프로세스가 메모리와 같은 공유 자원을 이용할 때 다른 프로세스에 의해 변경되지 않도록 자신이 사용하는 동안 자원을 일시적으로 점유(Lock)를 하게되고 이 때 다른 프로세스는 잠금이 해제 되기를 기다림, 타이밍에 좋지 않은 경우 양 프로세스가 모두 기다리게 되는데 이런 경우를 데드락이라고 함

 

 

 

CPU 관련 간단한 용어 정리

 

MIPS (Million Instructions Per Second)

CPU의 빠르기를 나타내는 단위, 1초 동안 실행할 수 있는 명령의 수

CPI (Cycles Per Instruction)

CPU에서 하나의 명령 실행에 필요한 클럭 수

레지스터 (Register)

CPU 안에 있는 일시적인 기억 장치로 CPU가 연산한 결과를 저장, 메인 메모리와 비교하면 용량은 적지만 고속으로 작동

캐시 메모리 (Cache)

자주 사용하는 명령은 CPU 안에 넣어 두고 고속으로 처리, 외부 기억 장치 안에도 고속화를 위해 캐시 메모리가 있는 경우도 있음

스케줄링 (Scheduling)

OS가 여러 개의 프로세스를 처리할 때 CPU에게 할당할 순서를 정하는 것을 말합니다.

데드락 (Dead Lock)

프로세스가 메모리와 같은 공유 자원을 이용할 때 다른 프로세스에 의해 변경되지 않도록 자신이 사용하는 동안 자원을 일시적으로 점유(Lock)를 하게되고 이 때 다른 프로세스는 잠금이 해제 되기를 기다림, 타이밍에 좋지 않은 경우 양 프로세스가 모두 기다리게 되는데 이런 경우를 데드락이라고 함

운영체제의 프로그램 실행 구조

프로그램(애플리케이션)은 대게 하드디스크 안에 저장되어 있지만 운영체제가 프로그램을 실행할 때 이 것을 메모리상으로 로드한 후 실행을 함. 메모리상에 할당된 프로그램을 '프로세스'라고 하며 '실행 상태', '실행 가능 상태', '대기 상태'로 나뉘고 지속적으로 변합니다. 이 프로세스가 CPU에 할당되어 처리 중인 상태가 '실행 상태'가 됩니다. OS는 지속적으로 여러개의 프로세스의 우선순위를 정하는데, '실행 상태'의 프로세스보다 우선순위가 높은 프로세스가 있을 경우 실행 중이던 프로세스를 잠시 중단하고 우선순위가 높은 프로세스를 실행하게 됩니다. 이러한 상태를 이전 포스팅에서 간단하게 용어 정리를 했던 '인터럽트 (Interrupt)' 라고 합니다.

잡 (Job) 과 태스크 (Task)

잡과 태스크는 비슷하면서도 잡이 더 큰 단위 개념입니다. '잡(Job)'의 경우 사용자의 입장에서 컴퓨터가 실행하는 하나의 일의 단위이고 여러개의 프로그램의 실행이 포함되며 '태스크(Task)'는 OS 의 입장에서 본 하나의 작업 단위입니다. 태스크가 더 작은 단위이며, 여러개의 태스크가 모여 '잡 스텝'이 되고 여러개의 '잡 스텝'이 모여 하나의 '잡'이 됩니다. 이 모든 것은 OS에서 관리하며 OS는 잡 관리로부터 넘겨받은 태스크의 상태를 관리하거나 CPU에 처리를 의뢰하고 태스크 처리가 종료되면 해당 태스크는 소멸됩니다. 잡의 실행 언어는 잡 제어문(JCL : Job Control Language)라는 언어를 사용합니다.

잡 스텝 (Job Step)

잡 스텝은 잡을 구성하고 있는 작업단계를 나타내며, 잡 에서 실행되는 여러개의 프로그램에 각각 대응합니다. 프로그램은 정적 표현이며 잡 스텝은 동적표현이고 하나의 프로그램이 2회 실행되는 경우 두개의 잡 스텝이 됩니다.

스루풋 (Throughput)

지정된 시간 내에 CPU가 처리한 유효한 처리량, 즉, 데이터 처리 능력을 의미합니다. 스루풋이 높을수록 처리 효율이 좋아진다고 보시면 됩니다. OS에서는 처리를 함에 있어서 여러가지 유휴 시간을 줄임으로써 스루풋의 향상을 도모하게 됩니다.

리스폰스 타입 (Response Time)과 턴어라운드 타임 (Turn Around Time)

사진 삭제

사진 설명을 입력하세요.

턴 어라운드 타임은 어떠한 일을 처리하기 위해 입력을 한 후 CPU에서 처리한 후 최종 결과를 출력하기 까지의 총 시간을 말 합니다. 단순히 CPU가 처리하는 시간만이 아닌 총 시간이므로 코스트 분석이나 실효 능률을 구할 때에 사용하는 경우가 많습니다. 리스폰스 타임은 순수하게 CPU의 처리 시간을 얘기합니다.

스풀 (Spool)

CPU와 주변 장치 사이에 데이터를 주고받을 때 비교적 고속의 보조 기억 장치를 일시적으로 버퍼 기억 장치(Buffer Memory)로 사용하는 것을 '스풀' 이라고 합니다. 저속의 주변 장치의 처리를 기다리지 않고 지체 없이 프로그램의 처리를 계속하여 주변 장치의 처리 대기 상태가 발생하는 것을 해소할 수 있습니다.

내부 인터럽트 (Internal Interrupt)

현재 실행중인 프로그램이 원인이 되어 일어나는 인터럽트, 즉 프로그램이 실행하는 중 수행할 수 없는 명령어를 만난 경우 오류(Exception)가 발생하는 것처럼 내부의 문제로 본인에게 인터럽트를 거는 것을 말합니다. 내부 인터럽트에는 무효한 메모리를 참조하는 페이지 폴트(Page Fault), 디버그를 위해 프로그램을 한 명령씩 실행하는 트레이스(Trace), 시스템 콜을 실행하는 슈퍼바이저 콜(Superviser Call), 무효한 명령을 실행하는 등이 있습니다.

외부 인터럽트 (External Interrupt)

중앙 처리 장치(CPU) 외부의 이벤트에 의해 발생하는 인터럽트로 주변기기의 입출력 동작이나 하드웨어의 고장, 오작동 등으로 인해 발생하는 인터럽트를 말합니다. 사용자가 키보드를 누름으로써 다음 동작으로 이동하거나 접속 장치로부터 데이터를 받는 등의 외부 신호가 있는경우 CPU가 일일이 감시하지 않아도 입력이 있는 경우 자동으로 실행을 중단하고 외부 입력을 조사하여 그에 맞는 처리를 진행합니다. 외부 인터럽트에는 전원 이상이나 하드웨어에 장애가 발생한 경우 발생하는 기계 체크 인터럽트(인터럽트 중 최우선), 일정 시간 또는 일정 시간마다 하드웨어로부터 발생하는 인터럽트인 타이머 인터럽트, 주변 기기의 입출력 동작 완료와 같이 상태 변화가 있을 경우 발생하는 입출력 인터럽트, 사용자가 키보드 같은 입출력 장치를 조작하는 콘솔 인터럽트 등이 있습니다.

프로그램 상태어 (PSW : Program Status Word)

CPU에서 명령어가 실행되는 순서를 제어하거나 특정한 프로그램에 관련된 컴퓨터 시스템의 상태를 나타내거나 유지해두기 위한 제어 단어로 실행중 CPU의 상태를 포함합니다. 또한 인터럽트에 의해 중단된 프로그램의 상태나 연산의 종료 상태를 저장해 두는 레지스터를 '프로그램 상태어'라고 합니다.

프로세스 제어 블럭 (PCB : Process Control Block)

OS가 프로세스에 대한 정보를 저장해놓을 수 있는 저장 장소로 프로세스의 CPU 상태나 프로세스의 상태, 프로세스 우선순위, 프로세스가 적재된 기억 장치 부분을 가리키는 포인터, 프로세스에 할당된 자원을 가리키는 포인터, 레지스터 내용을 저장하는 장소 등에 관한 정보를 저장해 두는 메모리 영역을 '프로세스 제어 블럭'이라고 합니다.

프로세스 (Process)

사용자가 프로그램을 실행하면 OS는 메모리상으로 읽어들여 처리를 시작합니다. 이렇게 메모리상에 할당된 프로그램을 '프로세스 (Process)'라고 합니다. 즉, 실행중인 프로그램을 의미합니다. 프로세스가 실행되는 동안 생성, 준비, 시행, 대기, 종료의 상태를 거치게 됩니다. 그리고 하나의 프로그램으로부터 여러 개의 프로세스를 만들 수 있습니다.

프로세스 상태

프로세스에는 입출력 동작을 기다리고 있는 상태인 '대기 상태', CPU의 사용 권한 할당을 기다리고 있는 상태 '실행 가능 상태', 프로세스에 CPU의 사용 권한이 할당되어 실행되고 있는 상태인 '실행 상태' 세가지 상태가 있습니다.

스레드 (Thread)

쓰레드는 프로세스 안의 프로그램 실행의 흐름을 뜻하며 하나의 프로세스가 생성시 주 스레드가 생성되어 실제 작업을 담당하고 주 스레드가 종료되면 프로세스도 종료가 됩니다. 분기가 가능하여 여러 개의 스레드를 동시에 실행 할 수 있습니다. 이것을 '멀티스레드 (Multi-Thread)'라고 하며 같은 프로그램 내의 프로세스는 각각 다른 메모리 공간을 참조하지만 프로세스 내의 쓰레드는 모두 같은 메모리 공간을 참조한다는 점이 프로세스와 다릅니다. 스레드는 CPU를 사용하는 최소 단위로 '라이트 웨이트 프로세스(Light Weight Process)'라고도 부릅니다.

디스패치 (Dispatch) 과 프리엠션 (Preemption)

사진 삭제

사진 설명을 입력하세요.

OS가 실행 가능 상태의 프로세스 중 우선순위가 가장 높은 프로세스에게 CPU의 사용 권한을 할당해 실행 상태로 전환하는 것을 말합니다.

실행 상태인 프로세스가 인터럽트에 의해 CPU의 할당을 해제하여 실행 가능 상태로 전환하는 것을 말합니다.

멀티태스킹 (Multi Tasking)

사진 삭제

사진 설명을 입력하세요.

여러 개의 태스크를 병행하여 동시에 처리하는 기능, 완벽하게 동시는 아니며 OS가 스케줄링을 통해 CPU에게 태스크를 순서대로 할당하여 아주 빠른 속도로 전환하며 수행하여 동시에 철리하는 것 같이 보입니다. 태스크 전환에는 약간의 시간이 걸리며 이 시간을 오버헤드라고 합니다.

멀티태스킹의 종류는 크게 두가지가 있는데 OS가 실행 가능 상태인 태스크에게 CPU 사용권을 할당하고 강제로 전환하며 관리하는 것을 프리엠티브 멀티태스킹 (Preemptive Multitasking)이라 하며 실행 중인 태스크가 처리를 수행하지 않는 시간에 자발적으로 해제해 다른 태스크가 실행할 수 있도록 하는 것이 논프리엠티브 멀티태스킹(Non-Preemptive Multitasking)이라고 합니다.

시분할 처리 시스템 (TSS : Time Sharing System)

사진 삭제

사진 설명을 입력하세요.

여러 사용자가 한 대의 고성능 컴퓨터를 공유하여 사용할 때 CPU 사용을 순서대로 단시간 할당하는 시스템을 말합니다.

멀티 프로세서 (Multi-Processor)

다중 처리기라고도 부르며 1대의 컴퓨터가 여러 개의 CPU를 가지고 있는 것을 말합니다. 여러개의 CPU가 병렬로 동시에 실행하여 결과를 빠르게 출력할 수 있으며 서버용 컴퓨터는 여러 사용자가 이용하거나 프로세스, 스레드를 동시에 실행하는 기회가 많기 때문에 멀티 프로세서 환경 구축이 필수적이라고 할 수 있습니다. 멀티 프로세서는 하나의 OS가 여러개의 CPU를 가지고 하나의 메모리를 공유하는 방식인 강결합 멀티 프로세서(Tighty Coupled Multi-Processor)와 각 CPU별로 메모리와 OS를 가지고 분산되는 OS를 제어하는 방식인 약결합 멀티 프로세서(Loosely Coupled Multi-Processor) 두가지가 있습니다.

스케줄링 - 라운드 로빈 방식 (Round Robin)

스케줄러가 스케줄링을 하는 방식 중 하나로 CPU를 하나의 프로세스가 종료될 때까지 차지하는 것이 아니라 여러 프로세스가 순서대로 CPU를 일정 시간 할당량(Time Quantum)을 받으며 실행되는 방식으로 시간이 초과한 프로세스를 가장 끝으로 돌리는 방식입니다.

스케줄링 - FCFS 방식 (First-Come First-Served)

가장 간단한 정책으로 먼저 도착한 프로세스를 먼저 실행하는 방법입니다.

스케줄링 - 우선순위 방식

이름 그대로 가장 높은 우선순위의 프로세스에게 먼저 CPU를 할당받아 실행해 나가는 방식입니다. 우선순위는 프로세스 실행자의 권한과 프로세스의 중요성 등에 의해 결정되며 우선순위가 같은 프로세스들의 경우 FCFS방법을 적용합니다. 대부분의 OS가 이 우선순위 방식을 사용하고 있습니다.

 

 

메모리 관리 역할 관련 용어 정리

 

메모리 (Memory)

메모리는 크게 쓰기가 가능한 RAM(Random Access Memory)와 원칙상으로는 읽기만 가능한 ROM (Read Only Memory)가 있습니다. 일반적으로 말하는 메모리는 쓰기가 가능한 RAM을 말하는 것으로 주기억 장치(메인 메모리) 라고도 합니다. 메인 메모리는 실행 상태인 프로그램이 로드되는 장소이며 프로그램이 필요로 하는 데이터를 일시적으로 저장하고 작업을 하는 장소이기도 합니다. 하드디스크나 외장하드 같은 보조 기억 장치는 저장할 수 있는 정보의 용량은 많지만 읽고 쓰는 처리가 주기억 장치에 비해 느리므로 고속으로 처리가 필요한 데이터들은 메모리를 사용하는것이 효율적입니다.

RAM 과 ROM

메모리는 크게 RAM(Random Access Memory)와 ROM (Read Only Memory)으로 나뉩니다. RAM은 메인 메모리(주기억 장치)라고도 하며 기억된 정보를 읽기와 다른 정보를 쓰기가 가능한 메모리이며 전원이 끊어지면 데이터가 날아가는 휘발성 메모리(Volatile Memory) 이며 읽고 쓰는 속도가 매우 빨라 일시적으로 응용프로그램의 로딩과 데이터의 저장 등에 사용됩니다. ROM은 컴퓨터의 전원이 꺼져도 내용이 사라지지 않는 비휘발성 메모리(Non-Volatile Memory)로 기동 시 시스템 체크나 BIOS 정보 등을 저장하는데 사용됩니다. 정보를 한 번 저장하면 바꿀 수 없고 읽을 수만 있는 기억장치를 뜻하나 USB나 외장하드는 지속적으로 쓰기가 가능하지만 전원을 꺼도 내용이 사라지지 않으므로 통상 ROM으로 분류됩니다.

DRAM (Dynamic RAM)

RAM의 한 종류로, 메인 메모리나 VRAM(Video RAM, 화면 표시용 메모리)로 사용됩니다. 저장된 정보가 시간에 따라 소멸되기 때문에 주기적으로 다시 써야하는 리프레시가 필요하며 소비 전력이 적고 가격이 낮아 대용량 기억장치에 많이 사용되며 처리가 비교적 느린 편입니다.

SRAM (Static RAM)

RAM의 한 종류로, 캐시 메모리로 사용됩니다. 전기 공급이 있는 한 정보가 계속 저장되어 리프레시가 불필요한 Flip Flop 구조로 소비 전력이 크며 저용량이지만 처리 속도가 빠른 편입니다.

EPROM (Erasable Programmable ROM)

ROM의 한 종류로, 내용을 자외선으로 지울 수 있고 재기록 할 수 있는 ROM 입니다.

EEPROM (Electrically Erasable Programmable ROM)

ROM의 한 종류로, 전기적으로 다시 쓸 수 있는 ROM입니다. BIOS를 저장하는 데 사용합니다.

플래시 메모리

ROM의 한 종류로, 전기적으로 다시 쓸 수 있는 ROM입니다. 일괄 또는 부분적으로 삭제하거나 다시 쓰기가 가능합니다. USB나 SD카드 SSD 드라이브 등에 사용됩니다.

캐시 메모리 (Cache Memory)

속도가 느린 하드디스크에 대한 엑세스를 줄이기 위해 자주 참조하는 프로그램이나 데이터를 일시적으로 미리 읽어들이기 위한 임시메모리를 말합니다. CPU에 비해 상대적으로 느린 주변기기의 속도 차이를 보안하기 위한 대표적인 방법입니다. 처음 프로그램을 실행할 때 자주 사용하게 되는 데이터를 캐시메모리에 미리 로드해놓고 사용하게 되어 하드디스크에서 읽어오는 시간에 비해 훨씬 빠르게 읽어올 수 있습니다.

가상 메모리 (Virtual Memory)

사진 삭제

사진 설명을 입력하세요.

프로그램을 실행할 때 보조기억장치에 있는 것을 주기억장치로 로딩을 하는데 주기억장치에 비해 실행 될 프로그램이 크거나 여러개의 프로그램이 동시에 실행될 경우 주기억장치에 공간이 부족하게 되는 경우 이러한 문제를 해결하기 위한 방법이 가상메모리입니다. 가상 메모리를 사용하면 여러 프로그램이 실행되는 것처럼 보여도 한 개의 프로그램만 실행되며 현재 필요한 부분만 주기억장치에 로딩하고 나머지는 보조기억장치에 놓고 실행 함으로써 용량 부족에 대한 문제를 해결해줍니다. 보조기억장치에 프로세스를 일정한 크기의 작은 단위인 페이지(Page)로 나누고 주기억장치에 동일한 크기의 적재공간(페이지 프레임 : Page Frame)으로 나누어 둔 후 프로세스 별 페이지 테이블(Page Table)을 참조해 당장 실행에 필요한 페이지를 주기억공간의 페이지 프레임에 적재하면서 빠르게 실행할 수 있습니다.

메모리 공간

메모리는 CPU가 계산을 할 때 데이터를 기억해두기 위해 사용하는 것으로 메모리 공간이 클수록 더 많은 프로그램이나 데이터를 동시에 처리할 수 있습니다. 공간을 주소라 불리는 번지를 붙이고 필요시에 각 영역을 주소를 통해 식별하여 사용하게 됩니다. OS 아키텍쳐에는 32bit(x86)와 64bit(x64)가 있는데 이 수치는 취급할 수 있는 메모리의 용량을 말합니다. 32bit의 최대 메모리 용량은 4GB(2의 32제곱 Byte)이며 64bit의 최대 메모리 용량은 16EB(2의 64제곱 Byte) 로 OS 설치시 x86 아키텍쳐를 선택하셨다면 컴퓨터의 메모리가 얼마가 되든 4GB(OS가 인식하는 용량은 더 적음) 이상은 사용할 수 없습니다.

힙 영역 (Heap)

프래그램 실행 시 파일로 부터 읽어들인 데이터나 네트워크상에서 수신한 데이터를 저장하는 경우와 같이 언제나 필요한 만큼을 확보하여 사용할 수 있는 대량의 메모리를 말합니다. 데이터를 임시로 저장하여 사용한 후 필요가 없어지면 해제가 되고 힙 메모리가 없어지면 메모리 부족으로 '이상 종료'하게 되고 이 영역은 프로그램들이 요구하는 블록의 크기나 요구/횟수 순서에 일정한 규칙이 없습니다. 메모리 공간은 대게 포인터 변수를 통해 동적으로 할당받고 해제되며 동적인 데이터 구조를 만드는데 반드시 필요합니다.

스택 영역 (Stack)

프로그램 실행 중 로직이 동작하기 위해 이용하는 변수의 내용 등을 일시적으로 저장하는 메모리 영역입니다. 스택은 프로그램의 한 단위가 시작될 때 자동적으로 확보되고 처리가 종료되면 자동으로 해제합니다. 메모리의 상위 주소에서 하위 주소 방향으로 사용하며, 후입선출(LIFO : Last In First Out) 원칙을 따라 나중에 저장된 값을 먼저 사용하게 됩니다.

LIFO (Last In First Out) 과 FIFO (First In First Out)

LIFO는 메모리를 추출하는 방식으로 나중에 넣은 데이터를 먼저 꺼내는 방법입니다. 대표적으로 스택(Stack)이 있습니다.

FIFO는 먼저 넣은 데이터를 먼저 꺼내는 방식입니다. 대표적으로 큐(Queue)가 있습니다.

물리 메모리

사진 삭제

사진 설명을 입력하세요.

<출처> https://blog.naver.com/kimantone/80181278505

컴퓨터에 실제로 장착되어 있는 메모리를 말합니다. OS가 다룰 수 있는 메모리의 용량은 정해져 있는데 물리 메모리가 그 최대 메모리를 가지고 있지 않을수 있으며 반대로 물리 메로리가 넉넉하게 있다고 하더라도 OS가 모든 메모리를 사용할 수 있지는 않습니다. (위 메모리 공간 내용 참고)

스왑 (Swap)

사진 삭제

사진 설명을 입력하세요.

메모리 용량이 부족할 때 물리 메모리와 페이징 파일 사이에서 메모리상의 프로세스를 일시적으로 교환하는 것을 '스왑' 이라고 합니다. 우선 순위가 낮은 프로세스를 페이지 파일로 저장해서 점유하고 있던 메인 메모리를 해제합니다. 스왑은 하드디스크에 자주 엑세스하므로 퍼포먼스 저하로 이어집니다.

얼로케이션 (Allocation)

OS가 플로세스나 데이터의 메모리 영역을 확보하는 것을 말합니다. 확보한 메모리 영역은 처리 종료 시 해제해야 합니다.

리로케이션 (Relocation)

한 번 확보한 메모리 영역의 위치를 변경하는 것을 말합니다. 이 중 실행 중인 프로그램의 위치를 변경하는 것은 다이나믹 리로케이션(Dynamic Relocation : 동적 재배치)이라고 하는데 가장 메모리상의 주소를 물리 메모리 주소로 변환하는 경우 다이나믹 리로케이션을 이용합니다.

가비지 콜렉션 (Garbage Collection)

프로세스를 수행하면서 메모리 영역에 할당과 해제가 반복되고 확보되는 크기가 랜덤인 것으로부터 점차 가비지(무효) 영역이 커지고 이로 인해 공간 효율이 떨어지게 됩니다. 이러한 경우 가비지 해방과 재이용을 하기 위한 처리기능을 말하며, 힙 영역이 가득 차서 액세스 할 수 없을 때는 불필요한 메모리 영역을 자동으로 해제한 후 메모리 영역을 재이용하는 것을 말합니다. 메모리를 관리하는 가장 중요한 작업 중 하나입니다.

컴팩션 (Compaction)

사진 삭제

사진 설명을 입력하세요.

단편화 된 메모리의 미사용 영역을 모아서 연속으로 이용할 수 있는 메모리 영역을 만드는 것(조각 모음)을 말합니다.