반갑습니다
오늘은 CS 이론에 대한 내용을 잠시만 살펴보겠습니다 ^^
1. 프로세스란?
프로세스를 조금 상세히 설명해보겠는데요
프로세스는 간단히 설명하면, '실행 중인 프로그램의 단위'입니다.
그럼 프로그램과 프로세스는 어떻게 다를까요?
$ more 명령어를 예시 삼아 알아보겠습니다.
해당 명령어를 실행할 때마다 디스크에 저장된 실행 파일을 읽습니다
파일에는 해당 명령어가 작동하는 방법 등이 기록되어 있겠죠 ^^
이런 일련의 작업을 컴퓨터에 실행시키는 방법이 기록된
파일 또는 실행 내용이 프로그램입니다!
하지만 일련의 작업을 컴퓨터에서 실행시키는 방법이
기록된 파일 또는 실행 내용이 동일하더라도
여러개를 동작시켰을 경우 각 프로그램은 독립적으로 동작을 하는데요
이렇게 프로그램을 실행한 하나하나를 프로세스라고 부릅니다
OS는 명령어를 실행할 때 프로세스를 생성하고
프로세스ID라는 번호로 구분해서 관리합니다 ^^
2. OS 프로세스 관리란?
프로세스는 명령어를 실행하면 생성되고,
프로그램 처리가 모두 끝나면 삭제됩니다
프로세스가 생성될 때
프로세스 ID 이외에도 몇 가지 정보를 컴퓨터에 저장하는데요 ^^
이런 정보에는 프로세스를 생성한 사용자,
프로세스 우선 순위, 실행 시작 시각, 명령어명 등이 있습니다!
OS는 이런 정보로 프로세스를 관리하는데요 ^^
프로세스 정보는 $ ps 명령어로 확인할 수 있습니다
이 중에서도 a, u, x, w등의 옵션을 넣어서 $ps 명령어를 실행하면
현재 동작하는 모든 프로세스를 터미널에 표시하는데요
현재 사용자인 저는 아무런 작업도 지시하지 않았지만
정말 수많은 프로세스들이 생성되어 있는 것을 볼 수 있겠습니다 ^^
이렇게 수많은 프로세스가 존재하지만
실제 컴퓨터에 설치된 CPU 개수는 고작 몇 개 남짓할 뿐입니다
이 수많은 프로세스들은 어떻게 실행되고 있는 것일까요?
이것이 가능한 이유는, 리눅스가 수많은 프로세스를
동시에 실행할 수 있도록 설계된 시스템이기 때문입니다
리눅스처럼 여러 프로세스를 동시에 실행할 수 있는 OS를
멀티태스킹 오퍼레이팅 시스템Multitasking Operating System
이라고 부릅니다 ^^!
여기서 조금 더 엄밀히 따지자면,
모든 프로세스가 "동시에" 실행되고 있는 것은 아닙니다
멀티태스킹 OS가 여러 프로세스를, 사람이 인지할 수 없는 속도로 전환하며 실행하기 때문에
"동시에" 실행하는 것처럼 보이는 것입니다 ^^
이 때, 어떤 프로세스를 어떤 순서로 전환할지 정하는 것을
스케줄링Scheduling이라고 부릅니다
스케줄링은 $ kill 명령어로 프로세스에 보내는 시그널이나
nice 명령어로 설정한 우선 순위 등에 따라 조절합니다 ^^
'Linux > 프로그램 관리하기' 카테고리의 다른 글
[Linux 프로그램 관리] 7. $ nice, $ sleep 명령어 사용하여 우선순위 변경 및 특정 시간만큼 재우기 (0) | 2024.08.17 |
---|---|
[Linux 프로그램 관리] 6. ①프로세스 부모 자식 관계 ②스레드와 프로세스의 관계 ③사용자와 프로세스 제어에 대하여 (0) | 2024.08.17 |
[Linux 프로그램 관리] 4. $ kill, $ killall 명령어 이용하여 프로세스 종료하기 (0) | 2024.08.17 |
[Linux 프로그램 관리] 3. $ ps 명령어 이용하여 프로세스 상태 표시하기 (0) | 2024.08.13 |
[Linux 프로그램 관리] 2. $ fg와 $ bg 이용하여 포그라운드로 실행 및 정지 프로그램을 백그라운드로 재개하기 (0) | 2024.08.13 |