본문 바로가기

운영체제 기초 이해 | 프로세스

by ㅇㅍㅍ 2023. 4. 14.
운영체제 기초 이해 | 프로세스
728x90

이번 글은 'ChatGPT로 배우는 프롬프트 엔지니어링'이라는 연재글 일부입니다. 해당 글은 인공지능 언어 모델인 ChatGPT가 작성한 것입니다.

 

운영체제 기초 이해

 

 파일 시스템, 프로세스, 스케줄링, 메모리 관리 등에 대한 이해

 

프로세스(Process)

프로세스는 컴퓨터에서 실행 중인 프로그램을 말합니다. 운영체제는 여러 개의 프로세스를 동시에 실행할 수 있도록 관리합니다. 각 프로세스는 메모리에 할당된 자원을 이용하여 실행되며, 운영체제는 프로세스의 생성, 실행, 종료 등을 담당합니다. 프로세스 간의 통신을 위해서는 IPC(Inter-Process Communication) 기법을 사용합니다.

 

<프로세스의 상태>

프로세스의 상태는 다음과 같이 5가지로 구분됩니다.

1. 생성 (Created) : 프로세스가 생성된 상태
2. 준비 (Ready) : 프로세스가 실행 가능한 상태이며 CPU를 할당받기 위해 대기 중인 상태
3. 실행 (Running) : CPU를 할당받아 코드를 실행하고 있는 상태
4. 대기 (Waiting) : 실행 중인 프로세스가 입출력 등의 외부 이벤트를 대기하면서 CPU를 반납한 상태
5. 종료 (Terminated) : 프로세스의 실행이 종료된 상태

프로세스는 이러한 상태 변화를 거치면서 실행되고, 상태 전이는 운영체제에 의해 관리됩니다. 스케줄링 알고리즘은 이러한 상태 변화를 어떤 기준으로 처리할지 결정합니다.

 

프로세스는 내부적으로 위와 같은 단계를 거치지만, 운영체제는 이러한 상태를 관리하고 있습니다. 보통 운영체제는 프로세스 상태를 추적하고, 상태가 변경되면 이를 업데이트합니다. 따라서 일반 사용자는 이러한 상태 변화를 직접적으로 확인할 수는 없습니다. 하지만 일부 운영체제에서는 프로세스의 상태 정보를 제공하는 명령어나 도구를 제공하기도 합니다. 예를 들어, Linux나 Unix 기반 시스템에서는 ps 명령어를 사용하여 프로세스 상태 정보를 확인할 수 있습니다.

 

728x90

 

<프로세스 간 통신>

프로세스 간 통신 (Inter-Process Communication, IPC)은 운영체제에서 여러 개의 프로세스가 동작할 때 이들 사이에서 데이터를 주고받거나 서로 작업을 요청할 수 있도록 하는 기술이다. 이는 다수의 프로세스가 작업을 협력적으로 수행하고 서로 데이터를 공유해야 하는 경우에 필수적으로 사용된다.

IPC에는 크게 두 가지 방식이 있다.

공유 메모리 (Shared Memory) : 공유 메모리는 여러 개의 프로세스가 동시에 접근할 수 있는 메모리 공간을 만드는 것이다. 이를 통해 프로세스는 서로 간의 데이터를 주고받을 수 있다. 공유 메모리는 빠른 속도로 데이터를 전송할 수 있지만, 공유 메모리를 관리하는 데에는 별도의 동기화 작업이 필요하다.

메시지 전달 (Message Passing) : 메시지 전달은 프로세스 간의 데이터를 주고받는 방식 중 하나로, 메시지를 보내는 프로세스가 메시지를 수신하는 프로세스의 식별자를 알고 있어야 한다. 메시지 전달 방식에는 동기식과 비동기식 두 가지 방식이 있다. 동기식 메시지 전달 방식에서는 메시지를 보낸 프로세스는 수신 대상 프로세스가 해당 메시지를 처리하기 전까지 대기해야 한다. 반면에 비동기식 메시지 전달 방식에서는 메시지를 보낸 프로세스가 수신 대상 프로세스가 해당 메시지를 처리하고 있는지 여부를 확인하지 않아도 된다.

IPC는 다수의 프로세스가 협력적으로 수행되는 경우에 필수적인 기술이며, 다양한 방식의 IPC가 존재한다. 따라서 IPC에 대한 이해는 프로세스 간 통신을 구현하는 데 필수적이다.

 

<프로세스의 메모리 할당 및 해제>

프로세스의 메모리 할당 및 해제는 운영체제가 관리하는 중요한 부분입니다. 프로세스가 실행되기 위해서는 운영체제로부터 메모리 공간을 할당받아야 합니다.

프로세스가 메모리를 할당받을 때는 크게 두 가지 방법이 있습니다. 첫째, 정적 메모리 할당 방법으로, 프로세스가 실행되기 전에 프로그램의 크기에 맞게 미리 메모리를 할당하는 방법입니다. 이 방법은 간단하고 빠르지만, 프로그램의 크기가 크거나 메모리를 낭비하는 경우가 있을 수 있습니다.

둘째, 동적 메모리 할당 방법으로, 프로세스가 실행 중에 필요한 메모리 공간을 동적으로 할당하는 방법입니다. 이 방법은 프로세스가 필요한 만큼의 메모리 공간을 할당받을 수 있으며, 메모리를 효율적으로 사용할 수 있습니다. 이 방법은 프로그래밍에서도 중요한 개념 중 하나입니다.

메모리 할당 이후에는 프로세스가 종료될 때 해당 메모리 공간을 해제해야 합니다. 이를 메모리 해제라고 합니다. 메모리 해제는 프로세스의 메모리 사용량을 효율적으로 관리하고, 메모리 누수를 방지하는 데 중요합니다. 메모리를 해제하지 않은 경우, 해당 메모리 공간은 계속 사용 중인 상태가 되어 다른 프로세스가 사용하지 못하게 됩니다.

메모리 할당과 해제는 운영체제에서 담당하며, 대부분의 운영체제에서는 메모리 관리를 위한 특별한 알고리즘을 사용합니다. 메모리 할당 및 해제는 프로그래머가 직접 구현할 필요는 없지만, 메모리 사용에 대한 이해는 프로그래밍에서 중요한 역할을 합니다.

 

 

 

 

목차
 

 

반응형

댓글