본문 바로가기
Linux/프로그램 관리하기

[Linux 프로그램 관리] 5. 프로세스와 OS 프로세스 관리에 대하여

by Fletcher 2024. 8. 17.

 

반갑습니다

오늘은 CS 이론에 대한 내용을 잠시만 살펴보겠습니다 ^^

 

 

1. 프로세스란?

프로세스를 조금 상세히 설명해보겠는데요

프로세스는 간단히 설명하면, '실행 중인 프로그램의 단위'입니다.

그럼 프로그램과 프로세스는 어떻게 다를까요?

 

$ more 명령어를 예시 삼아 알아보겠습니다.

해당 명령어를 실행할 때마다 디스크에 저장된 실행 파일을 읽습니다

파일에는 해당 명령어가 작동하는 방법 등이 기록되어 있겠죠 ^^

 

이런 일련의 작업을 컴퓨터에 실행시키는 방법이 기록된

파일 또는 실행 내용프로그램입니다!

 

 

하지만 일련의 작업을 컴퓨터에서 실행시키는 방법이

기록된 파일 또는 실행 내용이 동일하더라도

여러개를 동작시켰을 경우 각 프로그램독립적으로 동작을 하는데요

이렇게 프로그램을 실행한 하나하나를 프로세스라고 부릅니다

 

OS는 명령어를 실행할 때 프로세스를 생성하고

프로세스ID라는 번호로 구분해서 관리합니다 ^^

 

 

 

 

2. OS 프로세스 관리란?

프로세스는 명령어를 실행하면 생성되고,

프로그램 처리가 모두 끝나면 삭제됩니다

 

프로세스가 생성될 때

프로세스 ID 이외에도 몇 가지 정보를 컴퓨터에 저장하는데요 ^^

 

이런 정보에는 프로세스를 생성한 사용자,

프로세스 우선 순위, 실행 시작 시각, 명령어명 등이 있습니다!

 

 

OS는 이런 정보로 프로세스를 관리하는데요 ^^

프로세스 정보는 $ ps 명령어로 확인할 수 있습니다

 

이 중에서도 a, u, x, w등의 옵션을 넣어서 $ps 명령어를 실행하면

현재 동작하는 모든 프로세스를 터미널에 표시하는데요

 

현재 사용자인 저는 아무런 작업도 지시하지 않았지만

정말 수많은 프로세스들이 생성되어 있는 것을 볼 수 있겠습니다 ^^

 

이렇게 수많은 프로세스가 존재하지만

실제 컴퓨터에 설치된 CPU 개수는 고작 몇 개 남짓할 뿐입니다

 

이 수많은 프로세스들은 어떻게 실행되고 있는 것일까요?

 

이것이 가능한 이유는, 리눅스가 수많은 프로세스를

동시에 실행할 수 있도록 설계된 시스템이기 때문입니다

 

리눅스처럼 여러 프로세스를 동시에 실행할 수 있는 OS

멀티태스킹 오퍼레이팅 시스템Multitasking Operating System

이라고 부릅니다 ^^!

 

 

여기서 조금 더 엄밀히 따지자면,

모든 프로세스가 "동시에" 실행되고 있는 것은 아닙니다

멀티태스킹 OS가 여러 프로세스를, 사람이 인지할 수 없는 속도로 전환하며 실행하기 때문에

"동시에" 실행하는 것처럼 보이는 것입니다 ^^

 

이 때, 어떤 프로세스를 어떤 순서로 전환할지 정하는 것

스케줄링Scheduling이라고 부릅니다

스케줄링은 $ kill 명령어로 프로세스에 보내는 시그널이나

nice 명령어로 설정한 우선 순위 등에 따라 조절합니다 ^^